Cos'è un controllore di motore servo?
Definizione del controllore di motore servo
Un controllore di motore servo (o driver di motore servo) è definito come un circuito utilizzato per controllare la posizione di un motore servo.
Circuito del driver di motore servo
Il circuito del driver di motore servo include un microcontrollore, una fonte di alimentazione, un potenziometro e connettori, assicurando un controllo preciso del motore.
Ruolo del microcontrollore
Il microcontrollore genera impulsi PWM ad intervalli specifici per controllare con precisione la posizione del motore servo.
Fornitura di alimentazione
La progettazione della fornitura di alimentazione per un controllore di motore servo dipende dal numero di motori collegati. I motori servo utilizzano tipicamente una fornitura di 4,8V a 6V, con 5V come standard. Superare la tensione di alimentazione può danneggiare il motore. Il consumo di corrente varia in base alla coppia e è inferiore in modalità di attesa e maggiore quando è in funzione. La corrente massima, nota come corrente di stallo, può raggiungere fino a 1A per alcuni motori.
Per il controllo di un singolo motore, utilizzare un regolatore di tensione come l'LM317 con un dissipatore di calore. Per più motori, è necessaria una fornitura di alimentazione di alta qualità con una corrente nominale superiore. Un SMPS (Switched Mode Power Supply) è una buona scelta.
Diagramma a blocchi sottostante - mostra le interconnessioni in un driver di motore servo

Controllo del motore servo
Il motore servo ha tre terminali.
Segnale di posizione (impulsi PWM)
Vcc (dalla fonte di alimentazione)
Terra

La posizione angolare del motore servo è controllata applicando impulsi PWM di larghezze specifiche. La durata dell'impulso varia da circa 0,5 ms per una rotazione di 0 gradi a 2,2 ms per una rotazione di 180 gradi. Gli impulsi dovrebbero essere dati a frequenze intorno ai 50-60 Hz.
Per generare il segnale di modulazione di larghezza d'impulso (PWM), come mostrato nella figura sottostante, si può utilizzare il modulo PWM interno del microcontrollore o i timer. L'uso del blocco PWM è più flessibile, poiché la maggior parte delle famiglie di microcontrollori lo progetta in modo da adattarsi meglio alle esigenze di applicazioni come il motore servo. Per diverse larghezze degli impulsi PWM, è necessario programmare i registri interni di conseguenza.
Ora, dobbiamo anche dire al microcontrollore quanto deve ruotare. A questo scopo, possiamo utilizzare un semplice potenziometro e usare un ADC per ottenere l'angolo di rotazione, oppure, per applicazioni più complesse, si può utilizzare un accelerometro.

Algoritmo del programma
Progettiamo il programma per controllare un singolo servo, con l'input di posizione fornito tramite un potenziometro connesso a un pin del controllore.
Inizializzare i pin di porta per input/output.
Leggere l'ADC per la posizione desiderata del servo.
Programmare i registri PWM per il valore desiderato.
Non appena si attiva il modulo PWM, il pin del canale PWM selezionato va alto (logica 1) e, una volta raggiunta la larghezza richiesta, torna basso (logica 0). Quindi, dopo aver attivato il PWM, si deve avviare un timer con un ritardo di circa 19 ms e aspettare fino a quando il timer straripa. Tornare al passaggio 2.
Esistono vari modi di PWM disponibili che si possono utilizzare a seconda del microcontrollore scelto. Dovrebbe essere effettuata una certa ottimizzazione nel codice per controllare il servo.
Se si prevede di utilizzare più di un servo, sarà necessario un canale PWM per ciascuno. Ogni servo può ricevere il segnale PWM in sequenza. Ma si deve fare attenzione a mantenere la frequenza di ripetizione dei pulsanti per ogni servo. Altrimenti, i servomotori andranno fuori sincrono.