controllore pid su arduino e plant simulato

salve! mi hanno assegnato come lavoro di tesina lo sviluppo di un pid su arduino. In particolare il controllo è sulla board, ma il sistema da stabilizzare è simulato in simulink, quindi errore e risposta del pid devono viaggiare sulla seriale. Ho provato sia con la libreria pid_v1 che implementando "a mano" le equazioni, ma i risultati ottenuti non sono quelli desiderati... su internet non ho trovato nulla, iniziando a dubitare che ciò sia fisicamente fattibile... potrei aver dimenticato qualche ritardo o potrebbe essere qualche errore di conversione? vi ringrazio in anticipo dell'aiuto dato

ciao sbranzo,

scusami ma credo che tu sia piuttosto ferrato nell uso dei pid ed io vorrei trasformare questo codice:

   float GoalWatt = 10.0;   // Set point for Goal wattage
   
   if(Watt > GoalWatt) {          // Higher then goal
    if(Throttle > 0) Throttle--;    // decrease Throttle if greater then min  
  } else if (Watt < GoalWatt) {  // Lower then goal
    if(Throttle < 255) Throttle++;  // increase Throttle if less then max  
  }
  
  analogWrite(ESCpin, Throttle);    // Update PIN output

credo che utilizzando i pid sia possibile avere un segnale piu morbido o piu rapido a seconda delle necessita
potresti aiutarmi?
grazie

ciao doctor_t! purtroppo non sono molto ferrato con i pid, anzi… li sto studiando da poco e già li odio… tuttavia esiste una libreria detta PID_v1 che permette la creazione di un oggetto “pid” caratterizzato da ingresso, uscita, costanti e setpoint. Per quanto riguarda il mio problema vi allego uno dei codici che sto usando

#include <PID_v1.h>



double input=0,output=0,setpoint=7;


PID myPID(&input,&output,&setpoint,100,23.8729868016922,1,DIRECT);
void setup() {
  Serial.begin(115200); 
  
  
  
  myPID.SetSampleTime(20);
  myPID.SetMode(AUTOMATIC);
 
}

void loop() {
    while(Serial.available()){
        
   
    input=(double)Serial.parseFloat();
    myPID.Compute();
   
    Serial.println((double)output);
   
    }
  
}