Primii pasi in controlul motoarelor pas cu pas 28BYJ-48 cu Arduino

Primii pasi in controlul motoarelor pas cu pas 28BYJ-48 cu Arduino
Salutare! Astazi vreau sa iti arat cum am pus in functiune un motor pas cu pas 28BYJ-48 folosind driverul ULN2003 si un Arduino UNO. E un proiect simplu, dar foarte util daca vrei sa inveti cum sa controlezi miscari precise in proiectele tale electronice, fie ca vorbim de roboti, mecanisme automate sau chiar ceasuri cu afisaj mecanic.
 

Despre motorul pas cu pas 28BYJ-48

Motorul pas cu pas 28BYJ-48 este unul dintre cele mai populare motoare pentru proiecte cu Arduino datorita dimensiunilor compacte, consumului redus si usurintei in control. Este un motor unipolar cu 4 bobine interne si are un reductor incorporat care mareste cuplul si reduce viteza de iesire. Acest reductor are un raport de aproximativ 64:1, ceea ce inseamna ca sunt necesari in jur de 2048 de pasi pentru o rotatie completa a axului final. Este ideal pentru aplicatii care necesita precizie, dar nu viteze mari, precum brate robotice, panouri solare orientabile, ceasuri mecanice sau sisteme de dozare. Spre deosebire de un motor obisnuit care se roteste continuu, motorul pas cu pas se misca in pasi mici, controlati de semnale digitale. Fiecare pas are o anumita dimensiune (de exemplu 1.8°), iar cu ajutorul semnalelor corecte, poti roti motorul exact cati pasi doresti, inainte sau inapoi.

Un motor pas cu pas, cum este 28BYJ-48, poate functiona in mai multe moduri, fiecare cu propriile avantaje in functie de aplicatie. Cel mai simplu este modul de pas complet (full-step), in care cate doua bobine sunt activate simultan pentru a misca motorul cu un pas fix la fiecare comanda. Acest mod ofera un cuplu bun, dar miscare mai sacadata.

Un alt mod este jumatate de pas (half-step), folosit in proiectul meu, in care bobinele sunt activate alternativ cate una sau doua, astfel incat motorul face pasi mai mici si miscarea este mai lina.

Exista si modul microstepping, folosit la motoare mai avansate cu drivere speciale, unde se aplica curenti variabili bobinelor pentru a obtine pasi foarte fini si miscari extrem de line – ideal pentru aplicatii de precizie cum ar fi imprimante 3D sau CNC-uri. Alegerea modului potrivit depinde de echilibrul dorit intre precizie, viteza si cuplu.

Despre driverul ULN2003

Driverul ULN2003 este un circuit integrat folosit pentru a comanda motoare pas cu pas, relee sau alti consumatori care au nevoie de mai mult curent decat poate oferi direct o placa Arduino. Are 7 canale de iesire cu tranzistoare Darlington si poate comuta sarcini de pana la 500mA per canal. In cazul motorului 28BYJ-48, modulul ULN2003 este perfect adaptat, avand conectori speciali pentru firele motorului si LED-uri de stare pentru fiecare semnal, ceea ce ajuta foarte mult la depanare si intelegerea functionarii. Conectarea este simpla: intrarile merg la pinii digitali ai Arduino, iar iesirile controleaza bobinele motorului. Driverul preia astfel curentul necesar motorului, protejand placa de dezvoltare.

 

Componente necesare

1 x Placa de dezvoltare compatibila Arduino Uno R3
1 x Modul motor pas cu pas 28BYJ48 si driver ULN2003
Fire tata - mama


Schema de conectare

Codul sursa

Dupa ce ai realizat circuitul, e timpul sa introduci codul sursa, pentru a descarca codul sursa clic AICI.

Conecteaza placa de dezvoltare compatibila Arduino Uno la computer folosind portul USB. Apoi, mergi la meniul Tools si selecteaza tipul de placa si portul serial pe care il folosesti (optiunile Board si Port). 

Pentru a incarca codul pe placa, apasa butonul Upload (simbolul cu sageata spre dreapta). In partea de jos a ferestrei, vei putea urmari mesajele de stare: Compiling Sketch, Uploading si Done. Odata ce incarcarea s-a finalizat cu succes, placa Arduino va incepe sa ruleze codul pe care l-ai incarcat.


Cum functioneaza proiectul?

In codul de mai jos, am definit 4 pini de iesire care vor fi conectati la bobinele motorului. Functia halfStepForward() trimite semnalele corecte in ordine, astfel incat motorul sa se roteasca in sensul acelor de ceasornic. La fel, functia halfStepBackward() face ca motorul sa se intoarca in sens invers. In loop(), am configurat motorul sa faca jumatate de rotatie inainte (256 pasi) si apoi jumatate de rotatie inapoi, cu o pauza intre ele.

Este un exemplu simplu dar foarte util pentru a intelege logica din spatele functionarii unui motor pas cu pas. Daca vrei sa controlezi un brat robotic, o usa automata sau un mecanism de reglaj fin, aceasta este o baza excelenta.

Ce poti face mai departe?

Poti adapta codul pentru a controla viteza de rotatie (modificand valoarea DELAY), poti adauga butoane pentru a schimba directia din mers, sau poti folosi un senzor de lumina sau temperatura pentru a actiona motorul automat in functie de un anumit prag. De asemenea, poti implementa un control mai eficient cu drivere mai avansate si semnale de tip PWM.

 

Informatii importante 

Daca te hotarasti sa folosesti motorul pas cu pas 28BYJ-48 impreuna cu driverul ULN2003, sunt cateva lucruri esentiale de care trebuie sa tii cont. In primul rand, motorul functioneaza la 5V, insa consumul de curent poate fi destul de ridicat, mai ales cand bobinele sunt activate simultan. De aceea, este recomandat sa alimentezi placa Arduino si motorul din surse separate, sau sa folosesti o sursa externa de 5V suficient de puternica, conectata direct la modulul ULN2003.

Un alt aspect important este ca acest tip de motor nu este foarte rapid, este conceput mai degraba pentru aplicatii unde precizia conteaza mai mult decat viteza. In plus, trebuie sa acorzi atentie secventei de activare a bobinelor: daca schimbi ordinea pasilor sau ratezi unul, motorul poate vibra, se poate bloca sau se poate roti in directia gresita. Tocmai de aceea, codul trebuie scris cu grija si testat pas cu pas. Si nu uita: atunci cand faci teste sau modificari, e bine sa monitorizezi temperatura componentelor, daca motorul sau driverul se incalzesc prea tare, e semn ca trebuie sa ajustezi durata impulsurilor sau sa optimizezi secventa de control.

Iti recomand sa incerci si tu acest proiect si sa vezi cum poti controla exact miscarea unui motor pas cu pas. Daca ai intrebari sau idei de imbunatatire, scrie-mi la electronica@bitmi.ro. Abia astept sa vad ce proiecte interesante creezi!

Compara produse

Trebuie sa mai adaugi cel putin un produs pentru a compara produse.

A fost adaugat la favorite!

A fost sters din favorite!