#9958
Picmicro675
Partecipante

Bene, forum
Penso che ho trovato una via da seguire. Infatti le letture non sono state approfondite, visto la completa difficoltà a capire quelle strane formule. Ma del resto la cosa più semplice è quella a pié pagina di Wikipedia.

previous_error = 0
 integral = 0 
 start:
   error = setpoint - measured_value
   integral = integral + error*dt
   derivative = (error - previous_error)/dt
   output = Kp*error + Ki*integral + Kd*derivative
   previous_error = error
   wait(dt)
   goto start

Al primo colpo non capivo cosa servisse dt (Delta Time). Ma in fondo non serve, se i periodi di verifica sono costanti, per questo si riduce a 1 e si esclude. Infine è importante tenere conto il periodo di dt, che deve essere circa un decimo del periodo che una misura varia (come si spiega nel primo link sopra) altrimenti si ha l’effetto che l’accumulo di integral va oltre i limiti e non può recuperare. Per esempio se per un grado centigrado ci volesse 10 secondi per aumentare o diminuire, non si deve attuare il calcolo di controllo in meno di un secondo.

Ora col Proton Basic è pressappoco come quello qui sopra, basta dimensionare le variabili in funzione alla grandezza da controllare e limitarne il campo al quantitativo voluto.