DRV8825: el controlador per a motors pas a pas

drv8825

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

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

DRV8825 pinout

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 que 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:

  1. Connecta el controlador a la tensió d'alimentació sense el motor connectat ni microstepping.
  2. Mesura amb un polímetre la tensió que hi ha entre GND i el potenciòmetre.
  3. Ajustar el potenciòmetre fins que sigui el valor adequat.
  4. Ara pots desconnectar l'alimentació.
  5. En aquest moment sí que pots connectar el motor. I torna a connectar de nou l'alimentació a l'diver.
  6. 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.
  7. 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 ...

l298n
Article relacionat:
L298N: mòdul per controlar motors per Arduino

Integració amb Arduino

Esquema d'Arduino i DRV8825

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 la 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ó.


3 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Jesús va dir

    Hola, tinc estic construint una CNC casolana amb drv8825, el meu dubte és si puc posar motors nema 23 de 2.8a ja que són una mica més barats que els de 2.5A, Tindria algun problema? moltes gràcies

    1.    Isaac va dir

      Hola Jesús,
      Gràcies per llegir-nos. Quant al teu dubte, vigila el controlador que faràs servir perquè sigui compatible amb aquests motors. El cas de l'DRV8825 és fins a un màxim de 2.5A. Mira a veure el TB6600, que pot arribar als 3.5A si no recordo malament ...
      Una salutació!

  2.   Rodolfo va dir

    Salaudos. Quin valor té el condensador electrolític que està en l'alimentació de l'motor. Gràcies.