- Componente necesare
- Pin Descrierea motorului pas cu pas
- Schema circuitului pentru controlul motorului pas cu pas folosind modulul ULN2003
- Diagrama circuitului pentru controlul motorului pas cu pas folosind modulul L293D:
- Controlul motorului pas cu pas cu AVR ATmega16
Motoarele pas cu pas sunt motoare fără perii DC care se pot roti de la 0 0 la 360 0 în trepte. Motorul pas cu pas utilizează semnale electronice pentru a roti motorul în trepte și fiecare semnal roteste arborele în increment fix (un pas). Îngerul de rotație este controlat prin aplicarea anumitor secvențe de semnale. Spre deosebire de Servo Motor, motoarele pas cu pas pot fi acționate folosind pinii GPIO ai microcontrolerului, mai degrabă decât pinii PWM și se pot roti în (+360 0) și (-360 0). Ordinea semnalelor decide direcția în sensul acelor de ceasornic și în sens invers acelor de ceasornic a motorului pas cu pas. Pentru a controla viteza motorului, trebuie doar să schimbăm rata semnalelor de control aplicate. Motoarele pas cu pas se rotesc în trepte. Există mai multe moduri de pași pentru a opera motorul pas cu pas, cum ar fi pas complet, jumătate de pas și microstep. Pentru a afla mai multe despre elementele de bază, teoria și principiul de funcționare al motorului pas cu pas, urmați linkul.
Am interfațat anterior motorul pas cu pas cu multe microcontrolere:
- Interfațarea motorului pas cu pas cu ARM7-LPC2148
- Interfațarea motorului pas cu pas cu Arduino Uno
- Interfațarea motorului pas cu pas cu MSP430G2
- Interfațarea motorului pas cu pas cu STM32F103C8
- Interfațarea motorului pas cu pas cu microcontrolerul PIC
- Interfațarea motorului pas cu pas cu microcontrolerul 8051
- Interfațarea motorului pas cu pas cu Raspberry Pi
În acest tutorial vom interfața motorul pas cu pas 28BYJ-48 cu microcontrolerul Atmega16 AVR utilizând Atmel Studio 7.0. Motorul pas cu pas este evaluat să funcționeze în 5V. Vom interfața motorul pas cu pas atât cu driverele motorului, adică ULN2003 și L293. Ambele vor fi acționate de o sursă de 5V. Pentru a simplifica interfața, folosim modulul de pre-construire a ambelor drivere de motor. Puteți utiliza, de asemenea, IC-uri independente ULN2003 și L293D. Numărul de fire și jumperi poate fi mai mare, deci aveți grijă când conectați toate conexiunile.
Componente necesare
- Motor pas cu pas (28BYJ-48)
- Modul ULN2003 / Driver motor L293D
- IC microcontroler Atmega16
- Oscilator de cristal de 16 MHz
- Două condensatoare 100nF
- Două condensatoare de 22pF
- Apasa butonul
- Sârme jumper
- Breadboard
- USBASP v2.0
- Led (orice culoare)
Pin Descrierea motorului pas cu pas
Schema circuitului pentru controlul motorului pas cu pas folosind modulul ULN2003
Conectați toate componentele așa cum se arată în diagrama de mai jos atunci când utilizați ULN2003. În mod similar, îl vom interfața folosind L293D în pasul următor. Folosim PORTA of Atmega16 pentru a interfața motorul pas cu pas atât pentru driverele de motor. Nu este nevoie să conectați pinul de 5V al motorului pas cu pas. Doar știfturile bobinei sunt necesare pentru a deplasa motorul pas cu pas. Ordinea pinului este foarte importantă pentru a acționa motorul pas cu pas, deoarece alimentarea bobinelor ar trebui să fie pentru a atinge treptele. Patru intrări ale ULN2003 și patru ieșiri ale ULN2003 sunt utilizate în acest proiect. Intrările vor fi conectate la pinii PORTA, iar ieșirile vor fi conectate la pinii de semnal cu motor pas cu pas. De asemenea, conectați un singur buton în pinul Reset pentru a reseta Atmega16 ori de câte ori este necesar. Conectați Atmega16 cu circuitul oscilator de cristal adecvat. Tot sistemul va fi alimentat cu alimentare de 5V.
Mai jos este imaginea reală a modulului driverului de motor ULN2003:
Mai jos am dat conexiuni pin Atmega16 cu ULN2003 și L293D pentru a roti motorul pas cu pas. Interfațarea motorului pas cu pas cu modulul L293D este explicată în secțiunea ulterioară. Rețineți că pentru controlul motorului pas cu pas este necesar un singur modul fie ULN2003, fie L293D.
Conexiunile pin pentru INPUT sunt după cum urmează:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (PIN1) |
IN1 (PIN2) |
A1 |
IN2 (PIN2) |
IN2 (PIN7) |
A2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (PIN15) |
Conexiunile pin pentru OUTPUT sunt după cum urmează:
Motor pas cu pas |
ULN2003 |
L293D |
portocale |
OUT1 (PIN16) |
OUT1 (PIN3) |
Galben |
OUT2 (PIN15) |
OUT2 (PIN6) |
Roz |
OUT3 (PIN14) |
OUT3 (PIN11) |
Albastru |
OUT4 (PIN13) |
OUT4 (PIN14) |
Diagrama circuitului pentru controlul motorului pas cu pas folosind modulul L293D:
Controlul motorului pas cu pas cu AVR ATmega16
După cum sa spus deja, spre deosebire de Servo Motor, motoarele Stepper au nevoie de drivere externe, de exemplu, driver de motor ULN2003 sau L293D. Deci, conectați circuitul așa cum este mai sus și încărcați programul main.c dat la sfârșit.
Schița demonstrează că motorul pas cu pas se rotește în ambele părți, adică în sensul acelor de ceasornic și în sens invers acelor de ceasornic. Dacă doriți să rotiți pasul într-o direcție, pur și simplu comentați liniile de cod ale altei direcții în schiță.
Codul AVR complet pentru controlul motorului pas cu pas este prezentat mai jos. Codul este simplu și poate fi înțeles cu ușurință. Două coduri sunt date mai jos, unul pentru motorul pas cu pas rotativ cu ULN2003 și al doilea cu modul L293D.
Conectați-vă USBASP v2.0 și urmați instrucțiunile din acest link pentru a programa microcontrolerul Atmega16 AVR utilizând USBASP și Atmel Studio 7.0. Pur și simplu construiți schița și încărcați utilizând un lanț de instrumente extern.
Codul complet cu Video demonstrativ este prezentat mai jos.