Control de motors
Es descriu a continuació com podem controlar motors amb la shield DFROBOT 2A (driver L298N de 2 motors CC) i l'Snap4Arduino. Al mercat existeixen diverses plaques equivalents. El contingut d'aquest material és extensible també a aquestes altres plaques amb alguna modificació específica del hardware
Característiques
Aquesta shield permet controlar dos motors de corrent continu amb control de velocitat (per PWM i PLL) i el canvi de sentit.
Tensió dels motors: 4.8~35V (Des de l’Arduino o font externa).
Intensitat màxima dels motors: ≤2A.
Documentació original del fabricant de] Motor Shield (L298N)
Selecció del mode de control de velocitat
Per escollir el tipus de control de velocitat cal situar els 4 jumpers o ponts en la posició indicada en la placa.
A la part esquerra de la fotografia hi ha la correspondència entre les funcions i els pins de l’Arduino.
Selecció de l’alimentació dels motors
Els motors poden ser alimentats per l’alimentació pròpia de l’Arduino (VIN) o per una alimentació exterior (PWRIN). Per escollir l’origen de l’alimetació cal situar els 2 jumpers o ponts en la posició indicada en la placa.
- PWRIN: External Power
- VIN: Arduino Power
Per evitar els efectes de les sobretensions, que es produeixen en el motor a causa dels seus bobinats, que poden afectar els circuits electrònics, és convenient connectar en paral·lel amb les bornes del motor, un condensador d’entre 47 nF i 100 nF.
Pel que fa a l’alimentació, és preferible que s’utilitzi una font d’alimentació externa en la pròpia shield o en l’Arduino.
Funcions dels pins actius amb PWM
Motor | Pin Arduino | Funció | Valor |
---|---|---|---|
M1 | Digital 4 | Sentit de gir M1 | 0, 1 |
Digital 5 | Control PWM M1 | De 0 a 255 | |
M2 | Digital 6 | Control PWM M2 | De 0 a 255 |
Digital 7 | Sentit de gir M2 | 0, 1 |
Ús de la shield amb Snap4A
En els exemples següents es veu la seqüència a seguir per controlar el motor (en aquest cas es tracta del motor M1): Amb la tecla fletxa esquerra, ← , el motor s’activa en un sentit i a la velocitat corresponent al valor de PWM de 127.
- Amb la tecla fletxa esquerra, ← , el motor s’activa en un sentit i a la velocitat corresponent al valor de PWM de 127.
- Amb la tecla fletxa dreta, → , el motor s’activa en sentit contrari a l’anterior i a la velocitat corresponent al valor de PWM de 127.
- Amb la tecla espaidora, s’atura el motor. Per això, el valor de PWM és 0
Creació d’un bloc genèric per al control de qualsevol motor
És molt còmode disposar d’un bloc que permeti realitzar el control total de qualsevol dels dos motors mitjançat paràmetres. Els dos primers paràmetres se seleccionen a partir d’un desplegable. El tercer paràmetre és numèric, de 0 a 255.
L’estructura interna d’aquest bloc és:
Com funciona la regulació per PWM
PWM és l’acrònim de Pulse Width Modulation, modulació per amplada de polsos. És una tècnica per obtenir un valor mitjà variable a través de la commutació de la tensió d’alimentació, variant-se el cicle de treball (Duty Cicle) i el factor de forma (Pulse Width) .
En el cas d’Arduino, a través de les sortides digitals PMW (pins 3,5,6,10,i,11), es genera un senyal d’una freqüència d’1 kHz (Període T = 1ms). Es pot variar el temps durant el qual el senyal és en estat on, ton (tensió = tensió d’alimentació) o off, toff (tensió = 0V). El percentatge del període que es fixi el temps en estat on (ton) coincidirà amb el factor de forma del senyal (pulse width) i amb el cicle de treball del dispositiu (duty cycle).
La tensió mitjana de treball (DCmean) del dispositiu s’obtindrà fent el següent càlcul:
A la imatge següent es pot observar un PWM amb un factor de forma del 50%, és a dir la tensió d’alimentació, Val, arriba al dispositiu durant 0,5 ms (ton) i es talla durant el 0,5 ms següents (toff). En aquest cas la tensió mitjana que arriba a l’element consumidor és la meitat de l’alimentació.
Aquest mètode permet regular analògicament la tensió mitjana sobre un dispositiu, com una resistència, un led RGB o un motor. En el cas del motor s’obté una bona regulació de velocitat amb un bon parell motor.
En Arduino, el valor del paràmetre que s’empra per variar el factor de forma (l’ample del pols de l’ona) varia entre 0 i 255, de manera que el factor de forma del 50% s’obté amb el valor 127.
A continuació es mostren diferents oscil·logrames amb factor de forma diferent segons diferents valors del PMW (entre 0 i 255). En l’ oscil·lograma es mostren els paràmetres següents:
DCmean = valor mitjà de tensió
Duty Cycle = cile de treball (%)
Period = període (ms)
Frequency = freqüència (kHz)
Els oscil·logrames s’han realitzat sobre una resistència de 12 kOhm per veure l’ona sense l’afectació de les càrregues inductives, que es deforma quan el control es fa sobre un motor CC. La tensió d’alimentació és de 5 V.
PWM 50 - Sobre resistència de 12 kOhm
PWM 50- Sobre motor DC
Sobre un motor DC es pot veure que l’ona resultat és alterada respecte el cas de la resistència. Aquesta alteració és deguda a l’efecte de la càrrega inductiva de les bobines del motor.
PWM 100 - Sobre resistència de 12 kOhm
Control PMW d'un LED
En el cas del control PMW d’un LED, fent ús de les mateixes ordres de programa que s’han utilitzat pel control PMW del motor, es pot simular el control analògic, és a dir, que a cop d’ull sembli que, en variar el valor de la tensió (en aquest cas,s’ha optat per l’opció “lliscador” per canviar el valor de la variable), la intensitat de llum emesa pel LED també variarà:
Els oscil·logrames resultants del control PMW del LED són els que es mostren a continuació:
PMW (64): Cicle de treball del 25%
PMW (127): Cicle de treball del 50%
Com funciona la regulació per PLL
La shield també permet la regulació de velocitat del motor amb la tècnica de PLL. Per això s’han de canviar els quatre jumpers de selecció del tipus de regulació indicats més amunt.
En aquest control, la funcionalitat de les sortides digitals és:
Motor | Pin Arduino | Funció | Valor |
---|---|---|---|
M1 | Digital 4 | Estat d'M1 | 0, 1 |
Digital 5 | Control PLL M1 | De 0 a 255 | |
M2 | Digital 6 | Control PLL M2 | De 0 a 255 |
Digital 7 | Estat d'M2 | 0, 1 |
La tècnica de regulació PLL (Phase Locked Loop), llaç de seguiment de fase, és una tècnica de regulació analògica basada el l’anàlisi de la diferència entre el senyal de sortida i el senyal programat (consigna). Aquest sistema requereix d’un sistema de retorn del senyal real de la variable controlada.
En la shield DFROBOT es concreta en un senyal de sortida altern rectangular (+V) - 0 - (-V) amb una freqüència d’1 kHz i una amplada variable segons el valor del paràmetre PLL, que té un rang entre 0 i 255, però que control la polaritat segons aquesta escala:
En el control a través de la placa DFROBOT el mateix senyal de PLL realitza totes les funcions de control d’un motor: canvi de sentit, regulació de la velocitat i aturada (PLL = 127). L’aturada i engegada també es pot realitzar amb una sortida digital aparellada amb el motor d’acord amb el que s’especifica més amunt.
El marge de regulació amb PLL que s’obté sobre el motor és inferior a l’obtingut amb PWM.
A continuació es mostren diferents osicil·logrames amb diferents valors de PLL. Aquests s’han realitzat sobre una resistència de 12 kOhm i una tensió d’alimentació de 5V. En el mateix oscil·lograma hi ha els paràmetres següents:
DCmean = valor mitjà de tensió (V). (Observeu el canvi de polaritat)
Màx = tensió d’alimentació (V)
AC RMS = valor eficaç (V)
Frequency = freqüència (kHz)
PLL 50 - Sobre resistència de 12 kOhm
PLL 10 - Sobre resistència de 12 kOhm
PLL 127 - Sobre resistència de 12 kOhm
PLL 200 - Sobre resistència de 12 kOhm
PLL 250 - Sobre resistència de 12 kOhm