Un driver per a motors és un circuit que permet controlar els motors de corrent continu d'una forma molt simple. Aquests controladors permeten gestionar els voltatges i intensitats a què s'està subministrant a l'motor per aixà controlar la velocitat de gir. A més, serveixen com a mètode de protecció per evitar que l'electrònica dels motors pugui resultar danyada limitant el corrent que circula (chopping).
Per tant, si vas a crear un projecte DIY que va a incloure un o diversos motors de CC, Siguin de l'tipus que siguin, i en especial per als motors pas a pas, hauries de fer servir un driver per a motors perquè et faciliti les coses. Encara que hi ha mètodes per fer-ho de forma diferent, mitjançant transistors, els mòduls amb driver de motors resulten molt més prà ctics i directes. De fet, aquests drivers es basa en transistors per fer la seva tasca ...
Per què necessito un driver?
El driver és necessari per al control de l'motor, com ja he dit. A més, has de tenir en compte que la placa Arduino i la seva microcontrolador no és capaç d'alimentar el moviment de l'motor. Simplement està dissenyat per a senyals digitals, però no funcionaria bé quan s'ha de subministrar una mica més de potència com la que demanden aquest tipus de motors. Per això s'ha de tenir aquest element entre la placa Arduino i els motors.
Tipus de driver
Has de saber que ha diversos tipus de drivers segons el tipus de motor a què vagin destinats. Això és important saber diferenciar per obtenir el controlador adient:
- Driver per a motor unipolar: Són els més senzills de controlar, ja que el corrent que circula per les bobines sempre va en la mateixa direcció. El treball de l'driver simplement ha de conèixer què bobines ha d'activar en cada pols. Un exemple d'aquest tipus de controlador seria el ULN2003A.
- Driver per a motor bipolar: Aquests motors són més complexos i els seus drivers també ho són, com el DRV8825. En aquest cas es poden activar amb corrent en una o altra direcció (nord-sud i sud-nord). És el driver el que decideix la direcció per canviar la polaritat de el camp magnètic que es produeix a l'interior de l'motor. El circuit més conegut per invertir la direcció es diu Punete H, permetent girar el motor en tots dos sentits. Aquest pont H es compon de diversos transistors.
Aquests últims s'han popularitzat encara més en els últims anys a causa de que també els porten inclosos en algunes impressores 3D per controlar la impressió amb el capçal. És possible que si pretens muntar una impressora 3D o si ja comptes amb una, necessites un d'aquests per poder controlar el motor o substituir aquesta peça si s'ha malmès. També són utilitzats per a robots, traçadors, impressores convencionals, escà ner, vehicles electrònics, i un llarg etc.
DRV8825
Hi ha diversos models de drivers en el mercat. Per exemple, el DRV8825 és una versió millorada de l'A4988. Aquest controlador només necessita de dues sortides digitals de l'microcontrolador per poder manejar el motor de forma adequada. Només amb això es pot controlar el sentit i el pas de l'motor amb aquests dos senyals. És a dir, amb això es permet realitzar el stepping, o que el motor giri pas a pas en comptes de girar de forma veloç com altres motors simples.
DRV8825 permet treballar amb tensions superiors a les que treballa el A4988, ja que pot arribar als 45v en comptes dels 35v de l'A4988. També pot gestionar intensitats superiors, concretament 2.5A, això és mig ampere més que l'A4988. A més de tot això, aquest nou driver afegeix una nova manera de microstepping 1/32 (1/16 per al A4988) per poder moure l'eix de l'motor pas a pas d'una manera més precisa.
Per la resta són bastant similars. Per exemple, tots dos poden arribar a temperatures elevades de funcionament sense problema. Per això, si els acompanyes d'un petit dissipador, molt millor (molts models ja l'incorporen), especialment si ho vas a utilitzar per sobre de l'1A.
Si l'encapsulat arriba a altes temperatures, per precaució el hauries apagar. Estaria bé consultar els fulls de dades de el model que hagis comprat i veure la temperatura mà xima a la que pot treballar. Afegir un sensor de temperatura al costat de l'driver per monitoritzar la temperatura i utilitzar un circuit que interrompi el funcionament si arriba a aquesta temperatura lÃmit seria molt recomanable ...
El DRV8825 disposa de protecció contra problemes de sobreintensitat, curtcircuit, sobretensió i sobretemperatura. Per tant, són dispositius molt fiables i resistents. I tot per un preu bastant baix a les botigues especialitzades on es pot trobar aquest component.
microstepping

Amb la tècnica de l' microstepping es poden aconseguir passos inferiors a el pas nominal de l'motor pas a pas que vas a utilitzar. És a dir, dividir el gir a més porcions per poder avançar més lentament o de forma més precisa. Per a això es fa variar el corrent aplicada a cada bobina emulant un valor analògic amb els senyals digitals de les que es disposa. Si s'aconsegueixen uns senyals analògiques sinusoïdals perfectes i desfasades 90º entre si, s'aconseguiria la rotació desitjada.
Però clar, no es pot aconseguir aquest senyal analògica, perquè treballem amb senyals digitals. Per això s'ha de tractar aquestes per intentar simular el senyal analògic mitjançant petits salts del senyal elèctric. D'això dependrà la resolució de l'motor: 1/4, 1/8, 1/16, '1/32, ...
Per seleccionar la resolució que vols has de controlar els pins M0, M1 i M2 de la lliçó. Els pins estan connectats a terra o GND mitjançant resistències pull-up, pel que si no es connecta res estaran sempre a LOW o 0. Per canviar aquest valor caldrà forçar un valor 1 o HIGH. els valors de M0, M1, M2 respectivament als que ha d'estar segons la resolució, són:
- Full step: Low, Low, Low
- 1/2: High, Low, Low
- 1/4: Low, High, Low
- 1/8: High, High, Low
- 1/16: Low, Low, High
- 1/32: la resta de valors possibles
Pintura

El driver DRV8825 té un esquema simple de connexió, Tot i que a l'comptar amb bastants pins pot resultar una mica complicat per als menys experts. Ho pots veure a la imatge superior, però assegura't posicionar el mòdul de forma adequada quan estiguis mirant els pins, ja que és freqüent equivocar-se i agafar-lo invertit, el que resulta en un mal connexionat i fins i tot en danys.
Com a recomanació per connectar el controlador, Es recomana ajustar i calibrar el dispositiu de forma adequada seguint els següents passos per a un funcionament adequat i per no danyar-lo:
- Connecta el controlador a la tensió d'alimentació sense el motor connectat ni microstepping.
- Mesura amb un polÃmetre la tensió que hi ha entre GND i el potenciòmetre.
- Ajustar el potenciòmetre fins que sigui el valor adequat.
- Ara pots desconnectar l'alimentació.
- En aquest moment sà que pots connectar el motor. I torna a connectar de nou l'alimentació a l'diver.
- Amb el polÃmetre mesura la intensitat entre el controlador i el motor pas a pas i pots fer un ajust més fi de l'potenciòmetre.
- Torna a desconnectar l'alimentació i ja pots connectar-lo a Arduino.
Si no vas a utilitzar microstepping pots ajustar la intensitat de l'regulador fins al 100% de la intensitat nominal de l'motor. Però si ho vas a utilitzar has de reduir aquest lÃmit, ja que el valor que després circularà serà superior a l'mesurat ...
Integració amb Arduino

Per utilitzar el controlador DRV8825 amb Arduino, la connexió és bastant simple com pots veure a la part superior en aquest esquema electrònic de Fritzing:
- VMOT: connectat a l'alimentació fins 45v de mà xima.
- GND: a terra (motor)
- SLP: a 5v
- RST: a 5v
- GND: a terra (logic)
- STP: a el pin 3 de Arduino
- DIR: a el pin 2 de Arduino
- A1, A2, B1, B2: a l'stepper (motor)
Un cop connectat i ajustat adequadament, el codi per al seu control també és senzill. Per exemple, per al control d'un motor pas a pas pots fer servir el següent codi en Arduino IDE:
const int dirPin = 2;
const int stepPin = 3;
const int steps = 200;
int stepDelay;
void setup() {
// Configura los pines como salida
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
}
void loop() {
//Se pone una dirección y velocidad
digitalWrite(dirPin, HIGH);
stepDelay = 250;
// Se gira 200 pulsos para hacer vuelta completa del eje
for (int x = 0; x < 200; x++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(stepDelay);
}
delay(1000);
//Ahora se cambia la dirección de giro y se aumenta la velocidad
digitalWrite(dirPin, LOW);
stepDelay = 150;
//Se hacen dos vueltas completas
for (int x = 0; x < 400; x++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(stepPin, LOW);
delayMicroseconds(stepDelay);
}
delay(1000);
}
T'aconsello que provis també alguns exemples de codi que trobaràs entre els exemples que vénen amb Arduino IDE i provis a modificar valors per a saber com afecta el motor.
Per a Més informació sobre els motors pas a pas, el seu control i la programació d'Arduino, et recomano descarregar gratis el nostre curs de programació.