Discussione:Controllo PID: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →top: Bot: nuovo nome monitoraggio |
|||
Riga 35:
::::All'utente 193.175.53.21: hai ridotto drasticamente le dimensioni della voce. Non ho dato una lettura prima e dopo del tuo intervento, comunque se hai eliminato alcune parti per rendere la voce più chiara, puoi prendere in considerazione l'idea di scrivere le parti che hai tolto nelle voci più specifiche o creare nuove voci che contengano tali argomenti. --[[Utente:Aushulz|Aushulz]] ([[Discussioni utente:Aushulz|msg]]) 14:27, 3 lug 2009 (CEST)
Buongiorno,
ho letto il codice, ma non capisco alcune cose e sono presenti degli errori concettuali oltre che di codifica:
Innanzitutto il calcolo delle 3 grandezze deve avvenire contemporaneamente e sulla stessa base di tempo, altrimenti hai un sistema che è lentissimo (oltre che potenzialmente non funzionante): prendiamo il caso dell'integrale, solo per fare questa procedura passa 0,1s... ok finchè devi regolare la temperatura in una stanza, ma se hai qualcosa un attimo più veloce nei cambiamenti non ci stai più dietro.
Fare un integrale su 20 acquisizioni (0,1s) e e poi fare il differenziale su 0,05s che senso ha? Bisogna usare la stessa base di tempo che è la base di variazione dell'errore (quindi dell'ingresso)
Poi vengono determinati i valori del PID sulla base dell'acquisizione dell'A/D... ma la base di calcolo (l'ingresso del PID) è l'errore (differenza tra setpoit e valore misurato)!
nell'integrale il discorso della "media mobile" (che di fatto non viene utilizzata, e non capisco nemmeno a cosa dovrebbe servire, visto che cambiare "a" significa solo di fatto cambiare il dx, ) non viene poi utilizzato, il dx è di fatto un termine costante, il delay dovrebbe essere pari al dx e non un numero puro, Ki non è inizializzato.
Nella derivata... manca la derivata! è solo la differenza tra due valori successivi, bisogna dividere per il dx (che anche in questo caso è pari a quei 5ms del delay)
Le funzioni prendono tutte "grandezza" in ingresso... e poi non la usano, così come la funzione errore, è scritta e non viene usata.
Ho dei seri dubbi che questo codice possa essere funzionante, se non per pura fortuna
== correzioni nel codice per arduino ==
|