Motor pas cu pas: integrare cu Arduino

Motor pas cu pas

Motoarele electrice sunt din ce în ce mai solicitate, printre care se remarcă probabil cele care funcționează cu curent continuu, cele mai populare în cadrul proiectelor producătorilor cu Arduino, deoarece oferă mobilitate. Dintre acestea, evidențiați motoare pas cu pas care sunt utilizate pentru mai multe aplicații, în special pentru robotică, cum ar fi actuatoare etc.

Mașini electrice, mici roboți autonomi, aplicații industriale pentru automatizare, dispozitive de mișcare repetitive etc. Motivul pentru care motoarele servo și motoarele pas cu pas sunt atât de bune pentru aceste aplicații este că pot efectuați mișcări lente sau rapide, dar mai presus de toate controlate. În plus, unitățile sunt continue pentru aplicații în care sunt necesare multe opriri și porniri cu precizie ridicată.

Tipuri de motoare electrice

În cadrul motoare electrice pot fi evidențiate următoarele tipuri:

  • Motor DC sau DC: Motoarele de curent continuu funcționează cu acest tip de curent, așa cum sugerează și numele. Pot varia de la câțiva mW de putere la câțiva MW în cele mai puternice și mai mari, care sunt utilizate pentru aplicații industriale, vehicule, ascensoare, benzi transportoare, ventilatoare etc. Viteza de rotație (RPM) și cuplul aplicat pot fi reglate în funcție de avans.
  • Motor CA sau CA (rotor asincron și înfășurat): funcționează cu curent alternativ, cu un rotor foarte specific care funcționează grație fazelor pe care acest tip de curent le contribuie la generarea rotației prin repulsie magnetică a electromagnetului într-un mod similar cu modul în care acționează cele DC. Sunt foarte ieftine și urcă cu câțiva kW. Ele pot fi reglate în viteza de rotație, dar elementele de reglare sunt mai scumpe decât cele DC. Acestea sunt adesea folosite pentru aparatele de uz casnic.
  • Motor pas cu pas- Cunoscute și sub numele de steppers, sunt similare în multe moduri cu DC, dar cu viteze și puteri de centrifugare reduse. Aici ceea ce iese în evidență este poziționarea axei, adică precizia de a le pune într-o poziție specifică. Unghiul și rotația lor de rotație pot fi controlate foarte mult, motiv pentru care erau utilizate în unități de dischetă, hard disk (HDD), roboți, automatizarea proceselor etc.
  • Servo motor: se poate spune că este o evoluție a motorului pas cu pas, care funcționează cu puteri mici și viteze care merg până la 7000 RPM în unele cazuri. Acest motor încorporează o cutie de reducere a vitezei și un circuit de comandă. Au aceeași precizie de poziționare ca stepper-urile și sunt foarte stabile în ceea ce privește cuplul aplicat, ceea ce le face ideale pentru unii roboți și aplicații industriale.

Motoare pas cu pas și servo motoare

rotor și stator

Știți deja care sunt aceste două tipuri de motoare electronice, dar aș vrea să spun ceva mai multe despre steppers. Turnul pe care îl fac nu se face continuu, ci în pași mici, de unde și numele lor. Rotorul (partea care se rotește) are forma unei roți dințate, în timp ce statorul (partea care nu se rotește) este alcătuit din electro-magneți polarizați intercalați. În acest fel, atunci când cineva este „activat”, cei din părțile sale laterale nu sunt activate, ceea ce atrage dintele rotor spre acesta, permițând avansul precis pentru care sunt caracterizați.

Articol asociat:
DRV8825: driverul pentru motoarele pas cu pas

Depinzând de dinții rotorului, va fi posibil să avansăm mai mult sau mai puțin pe rând. Dacă aveți mai mulți dinți, sunt necesari mai mulți pași pentru a finaliza un viraj, dar pașii vor fi mai scurți, deci va fi un motor mai precis. Dacă aveți puțini dinți, pașii vor fi salturi mai abrupte, fără atâta precizie. Prin urmare, pașii pe care trebuie să-i facă un motor pas cu pas pentru a finaliza un viraj vor depinde de pașii unghiulari.

Acei pași unghiulare sunt standardizate, deși puteți găsi câteva motoare care au pas nestandard. Unghiurile sunt de obicei: 1.8º, 5.625º, 7.5º, 11.25º, 18º, 45º și 90º. Pentru a calcula de câți pași are nevoie un motor pas cu pas pentru a finaliza o tură completă (360 °), trebuie doar să împărțiți. De exemplu, dacă aveți un motor pas cu pas 45º, ați avea 8 trepte (360/45 = 8).

rotire cu părtinire (fază)

În cadrul acestor motoare aveți unipolar (cel mai popular), cu 5 sau 6 cabluri, sau bipolar, cu 4 cabluri. În conformitate cu aceasta, se va efectua una sau alta secvențe de polarizare trecând curent prin bobine:

  • Polarizarea pentru bipolar:
Paso Terminalul A Terminalul B Terminalul C Terminalul D
1 +V -V +V -V
2 +V -V -V +V
3 -V +V -V +V
4 -V +V +V -V
  • Pentru unipolar:
Paso Bobina A Bobina B Bobina C Bobina D
1 +V +V 0 0
2 0 +V +V 0
3 0 0 +V +V
4 +V 0 0 +V

Funcționarea în ambele cazuri este aceeași, polarizând bobinele pentru a atrage rotorul acolo unde doriți să fie poziționată axa. Daca vrei păstrați-l într-o poziție, trebuie să mențineți polarizarea pentru acea poziție și voila. Și dacă doriți ca acesta să avanseze, polarizați următorul magnet și va mai face un pas și așa mai departe ...

Dacă utilizați un servo motor, știți deja că este practic un motor pas cu pas, prin urmare, tot ceea ce se spune funcționează și pentru ei. Singurul lucru care include acele trepte de reducere pentru a obține mai mulți pași pe tură și, astfel, au o precizie mult mai mare. De exemplu, puteți găsi un motor cu 8 trepte pe tură, dacă ar avea o cutie de viteze 1:64, deoarece înseamnă că fiecare pas dintre cele opt este împărțit în 64 de trepte mai mici, ceea ce ar da maximum 512 trepte pe tură. Adică, fiecare pas ar fi de aproximativ 0.7º.

Articol asociat:
L298N: modul pentru controlul motoarelor pentru Arduino

De asemenea, adăugați că ar trebui să utilizați unele controlor cu care să controlați polarizarea, viteza etc., cu, de exemplu, H-Bridge. Unele modele sunt L293, ULN2003, ULQ2003 etc.

Donde Comprar

Tu cumpărați-l pe diverse site-uri online sau în magazine specializate de electronice. De asemenea, dacă ești începător, poți folosi seturi care includ tot ce ai nevoie și chiar farfurie Arduino UNO și manual pentru a începe experimentarea și crearea proiectelor. Aceste kituri includ tot ce aveți nevoie, de la motorul însuși, controlere, plăci, panou etc.

Exemplu de motor pas cu pas cu Arduino

Arduino cu motor pas cu pas și controler

În cele din urmă, arată un exemplu practic cu Arduino, folosind controlerul ULN2003 și motorul pas cu pas 28BYJ-48. Este foarte simplu, dar vă va fi suficient să începeți să vă familiarizați cu modul în care funcționează, astfel încât să puteți începe să faceți câteva teste și să vedeți cum se comportă ...

Așa cum se vede în schema de conectare, bobinele motorului A (IN1), B (IN2), C (IN3) și D (IN4) au fost atribuite conexiunilor 8, 9, 10 și respectiv 11 de pe placa Arduino. Pe de altă parte, placa driverului sau a controlerului trebuie alimentată cu pinii săi de 5-12V (la GND și 5V din Arduino) cu tensiunea corespunzătoare, astfel încât să alimenteze la rândul său motorul conectat la conectorul din plastic alb care are acest driver sau controlor.

acest Motor 28BYJ-48 Este un motor pas cu pas de tip unipolar cu patru bobine. Prin urmare, pentru a vă face o idee despre modul în care funcționează, puteți trimite valori HIGH (1) sau LOW (0) la bobinele de pe placa Arduino după cum urmează pentru pași:

Paso Bobina A Bobina B Bobina C Bobina D
1 ÎNALT ÎNALT SCĂZUT SCĂZUT
2 SCĂZUT ÎNALT ÎNALT SCĂZUT
3 SCĂZUT SCĂZUT ÎNALT ÎNALT
4 ÎNALT SCĂZUT SCĂZUT ÎNALT

Ca schița sau codul necesar pentru a vă programa mișcarea, deoarece ar fi următoarea utilizare Arduino IDE (modificați-l și experimentați pentru a testa modul în care mișcarea este modificată):

// Definir pines conectados a las bobinas del driver
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11

// Secuencia de pasos a par máximo del motor. Realmente es una matriz que representa la tabla del unipolar que he mostrado antes
int paso [4][4] =
{
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1}
};

void setup()
{
  // Todos los pines se configuran como salida, ya que el motor no enviará señal a Arduino
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

// Bucle para hacerlo girar
void loop()
{ 
    for (int i = 0; i < 4; i++)
    {
      digitalWrite(IN1, paso[i][0]);
      digitalWrite(IN2, paso[i][1]);
      digitalWrite(IN3, paso[i][2]);
      digitalWrite(IN4, paso[i][3]);
      delay(10);
    }
}


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.