Controllo di posizione senza PID

Ingredienti:
Arduino UNO
breadboard
3 pulsanti (1 di START, 2 finecorsa min e max)
breakout board L298
motore in cc JGA25-370 con encoder
una striscia di pin femmina con terminali lunghi (4 pin)
qualche filo di rame con quaina di diversi colori
alimentatore a 12 V 1 A

Strumenti:
set di cacciaviti con punta intercambiabile
spelafili o forbici

Prepazione:
Abbiamo sfruttato i quattro pin da A2 a A5 per collegare i pin della breakout board.
Abbiamo lasciato i jumper al loro posto in modo che gli enable dell’L298 sono a livello logico alto.
Da Arduino si gestisce in polling l’attivazione del motore e a interrupt l’arresto.
Il motore viene arrestato prima della quota finale tenendo conto dell’inerzia.
Per calcolare la quota di arresto all’accensione del sistema il motore viene mosso indietro fino a che l’asse controllato non arriva sul finecorsa (simulato da un pulsante).
A interrupt si spegne il motore e si azzera la quota. Dopo un tempo adeguato si va a vedere il valore della posizione e si ricava la quota di prearresto.