iralabdisco / otto_stm32

Firmware for differential drive robot Otto.
GNU General Public License v3.0
3 stars 0 forks source link

Encoder #54

Open lrivara opened 1 month ago

lrivara commented 1 month ago

Mi sono venute in mente delle soluzioni per il problema del vedere se l' encoder è staccato o no.

1) vedere se quando l' encoder segnala 0 l' adc è più di 200. Perché se il motore è in stallo dovrebbe aumentare la tensione.

2) cambiare la componente integrale con la media esponenziale come si era detto per il controllo incrociato. Così facendo il valore del pwm dopo qualche iterazione dovrebbe andare a 0.

3) fare un controllo di routine iniziale che manda un valore costante di pwm e controlla che l' encoder risponda

fdila commented 1 month ago

Ciao, IMHO la soluzione "più carina" è la 2. (e magari integrerei il controllo "si è staccato l'encoder" direttamente a livello di PID andando a vedere se in tot iterazioni di PID il feedback è sempre rimasto a 0). La 1 potrebbe funzionare (sperando che per caso fortuito non si rompa l'ADC), così come funziona quello che hai fatto ora, anche se mi piange il cuore perchè è un po' bruttino dal punto di vista ing software.

La 3 la escluderei, è vero che ci salva dai casi in cui partiamo con l'encoder staccato, ma se per caso fortuito si stacca qualcosa mentre andiamo poi non ce ne riusciamo ad accorgere.