Salve a tutti,, sto cercando di implementare un controllore PID ma ho qualche problema con alcune varibile, mi spiego meglio:
uint16_t Control_Voltage=0;
uint16_t error;
int Kp = 4;
error=ADC0_RA-Control_Voltage;
proportional = Kp*error;
Control_Voltage = Control_Voltage+proportional;
ADCO_RA è il registro di un analog to digital converter, è a 16 bit e contiene il valore letto dall' ADC, Control _voltage è il valore che vado a scrivere su un DAC ( digital to analog converter). Dovrei calcolarmi la fidderenze (error) tra questi due valori e li metto in un uint16_t, poi moltiplicare un intero (o un float ancora non so bene) e quindi modificare il valore di Control_voltage. Il problema è che il codice non mi funziona, se però scrivo:
Control_Voltage = Control_Voltage+error;
il codice funziona ma non è perfettamente quello che vorrei fare, se fisso invece kp=1, mi funziona pure, ma se fisso kp 2 o 3 o 1.5 o qualsiasi altra cosa non mi funziona. Io credo sia un problema di definizioni delle variabili (uint16_ t, float ecc). Ditemi se sono stato poco chiaro o se vi serve qualche altro dato. Grazie mille