Què és un controlador de motor servo?
Definició de controlador de motor servo
Un controlador de motor servo (o driver de motor servo) es defineix com un circuit utilitzat per controlar la posició d'un motor servo.
Circuit del driver de motor servo
El circuit del driver de motor servo inclou un microcontrolador, una font d'alimentació, un potenciómetre i connectors, assegurant un control precís del motor.
Rol del microcontrolador
El microcontrolador genera impulsos PWM en intervals específics per controlar amb precisió la posició del motor servo.
Font d'alimentació
El disseny de la font d'alimentació per a un controlador de motor servo depèn del nombre de motors connectats. Els motors servo solen utilitzar una alimentació de 4,8V a 6V, amb 5V com a estàndard. Excedir la tensió d'alimentació pot enderrocar el motor. La corrent consumida varia amb el moment i és menor en mode d'espera i més alta quan s'està executant. La màxima corrent consumida, coneguda com a corrent de bloqueig, pot arribar a 1A en alguns motors.
Per al control d'un sol motor, utilitza un regulador de tensió com l'LM317 amb un dissipador de calor. Per a múltiples motors, és necessària una font d'alimentació de qualitat superior amb una classificació de corrent més elevada. Un SMPS (Switched Mode Power Supply) és una bona opció.
Diagrama de bloc a continuació - mostrant les interconnexions en un driver de motor servo

Control del motor servo
El motor servo té tres terminals.
Senyal de posició (impulsos PWM)
Vcc (de la font d'alimentació)
Massa

La posició angular del motor servo es controla aplicant impulsos PWM d'amplades específiques. La durada dels impulsos va des d'aproximadament 0,5 ms per a una rotació de 0 graus fins a 2,2 ms per a una rotació de 180 graus. Els impulsos han de donar-se a freqüències al voltant de 50 Hz a 60 Hz.
Per generar la forma d'ona PWM (Modulació de l'amplada del pols), com es mostra en la figura següent, es pot utilitzar el mòdul PWM intern del microcontrolador o es poden utilitzar els temporitzadors. Utilitzar el bloc PWM és més flexible, ja que la majoria de les famílies de microcontroladors ho dissenyen així, i aquest bloc PWM millor satisfa les necessitats de les aplicacions com un motor servo. Per a diferents amplades d'impulsos PWM, cal programar els registres interns corresponents.
Ara, també hem de dir al microcontrolador quant ha de girar. Per a aquest propòsit, podem utilitzar un simple potenciómetre i utilitzar un ADC per obtenir l'angle de rotació o, per a aplicacions més complexes, es pot utilitzar un acceleròmetre.

Algoritme del programa
Dissenyem el programa per controlar un únic servo i la entrada de posició es dóna a través d'un potenciómetre connectat a un pin del controlador.
Inicialitza els pins de port per a entrada/sortida.
Llegeix l'ADC per a la posició desitjada del servo.
Programa els registres PWM per al valor desitjat.
Tan aviat com actives el mòdul PWM, el pin seleccionat del canal PWM passa a ser alt (lògic 1) i, després de llegir l'amplada requerida, torna a baix (lògic 0). Així, després d'activar el PWM, has de iniciar un temporitzador amb un retard d'uns 19 ms i esperar fins que el temporitzador s'ompli. Torna al pas 2.
Hi ha diversos modes de PWM disponibles que pots utilitzar depenent del microcontrolador que triïs. S'hauria de fer una certa optimització en el codi per controlar el servo.
Si plans utilitzar més d'un servo, necessitaràs tants canals PWM. Cada servo pot rebre el senyal PWM seqüencialment. Però has de tenir cura que la taxa de repetició del pols per a cada servo es mantingui. Altrament, el servo es desincronitzarà.