- Materiale necesare
- Motor pas cu pas (28BYJ-48)
- IC driver driver ULN2003
- Diagrama circuitului și conexiunile
- Motor pas cu pas rotativ cu STM32F103C8
- PROGRAMARE STM32 pentru motor pas cu pas
Motorul pas cu pas este un motor DC fără perii, care poate fi rotit în unghiuri mici, aceste unghiuri sunt numite trepte. În general, motorul pas cu pas utilizează 200 de pași pentru a completa rotația de 360 de grade, înseamnă că se rotește cu 1,8 grade pe pas. Motorul pas cu pas este utilizat în multe dispozitive care necesită mișcare de rotație precisă, cum ar fi roboți, antene, hard disk-uri etc. Putem roti motorul pas cu pas la orice unghi anume dându-i instrucțiuni adecvate. Sunt disponibile în principal două tipuri de motoare pas cu pas, Unipolar și Bipolar. Unipolar este mai ușor de operat, controlat și, de asemenea, mai ușor de obținut. Aici, în acest tutorial, interfațăm motorul pas cu pas cu placa STM32F103C8 (pastilă albastră).
Materiale necesare
- STM32F103C8 (pilula albastră)
- Motor pas cu pas (28BYJ-48)
- ULN2003 IC
- Potențiometru 10k
- Breadboard
- Sârme de jumper
Motor pas cu pas (28BYJ-48)
28BYJ-48 este un motor pas cu pas Unipolar care necesită alimentare de 5V. Motorul are un aranjament unipolar cu 4 bobine și fiecare bobină este evaluată pentru + 5V, prin urmare este relativ ușor de controlat cu orice microcontrolere precum Arduino, Raspberry Pi și STM32. consumă curent mare și poate deteriora microcontrolerele.
O altă informație importantă de remarcat este unghiul de pas: 5,625 ° / 64. Aceasta înseamnă că motorul atunci când funcționează în secvența de 8 pași se va deplasa cu 5,625 grade pentru fiecare pas și va dura 64 de pași (5,625 * 64 = 360) pentru a finaliza o rotație completă. Alte specificații sunt furnizate în fișa tehnică de mai jos:
De asemenea, verificați interfața cu motorul pas cu pas cu alte microcontrolere:
- Interfațarea motorului pas cu pas cu Arduino Uno
- Control motor pas cu pas cu Raspberry Pi
- Interfațarea motorului pas cu pas cu microcontrolerul 8051
- Interfațarea motorului pas cu pas cu microcontrolerul PIC
Motorul pas cu pas poate fi, de asemenea, controlat fără niciun microcontroler, consultați acest circuit al driverului motorului pas cu pas.
IC driver driver ULN2003
Este folosit pentru a acționa motorul în funcție de impulsurile primite de la microcontroler. Mai jos este diagrama imagine a ULN2003:
Pinii (IN1 la IN7) sunt pinii de intrare și (OUT 1 la OUT 7) sunt pinii de ieșire corespunzători. COM este dat la tensiunea sursei pozitive necesare pentru dispozitivele de ieșire. Alte conexiuni pentru motorul pas cu pas sunt date mai jos în secțiunea schemei de circuit.
Diagrama circuitului și conexiunile
Mai jos este explicația conexiunilor pentru schema de circuit de mai sus.
STM32F103C8 (pastila albastra)
După cum putem vedea în diagrama de mai jos, pinii PWM sunt indicați în format de undă (~), există 15 astfel de pini care pot fi utilizați pentru ieșirea impulsului la motorul pas cu pas. Avem nevoie doar de patru pini, folosim (PA0 la PA3).
STM32F103C8 cu IC driver driver ULN2003
Pinii (PA0 la PA3) sunt considerați pinii de ieșire care sunt conectați cu pinii de intrare (IN1-IN4) ai IC ULN2003.
PIN-urile STM32F103C8 |
PINS ULN2003 IC |
PA0 |
ÎN 1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC cu motor pas cu pas (28BYJ-48)
Pinii de ieșire (OUT1-OUT4) ai ULN2003 IC sunt conectați la pinii motoarelor pas cu pas (portocaliu, galben, roz și albastru).
PINS ULN2003 IC |
PIN-urile motorului pas cu pas |
OUT1 |
PORTOCALE |
OUT2 |
GALBEN |
OUT3 |
ROZ |
OUT4 |
ALBASTRU |
COM |
ROȘU |
STM32F103C8 cu potențiometru
Un potențiometru este utilizat pentru a seta viteza motorului pas cu pas.
POTENȚIOMETRU |
STM32F103C8 |
STÂNGA (INTRARE) |
3.3 |
CENTRU (IEȘIRE) |
PA4 |
DREAPTA (GND) |
GND |
Motor pas cu pas rotativ cu STM32F103C8
Mai jos sunt câțiva pași pentru a utiliza motorul pas cu pas:
- Setați viteza motorului pas cu pas prin variația potențiometrului.
- Apoi introduceți manual pașii pentru rotație fie în sensul acelor de ceasornic (+ valori), fie în sens invers acelor de ceasornic (-valori) prin MONITORUL SERIAL prezent în ARDUINO IDE (Instrumente-> Monitorul serial) sau CTRL + SHIFT + M.
- Conform valorii de intrare date în monitorul serial, anumite etape de rotație au loc în motorul pas cu pas.
De exemplu
VALOARE DATĂ ÎN MONITORUL SERIAL |
ROTAȚIE |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMARE STM32 pentru motor pas cu pas
La fel ca tutorialul anterior, am programat STM32F103C8 cu Arduino IDE prin port USB fără a folosi programator FTDI. Pentru a afla despre programarea STM32 cu Arduino IDE, urmați linkul. Putem continua să-l programăm ca un Arduino. Codul complet este dat la sfârșitul proiectului.
Mai întâi trebuie să includem fișierele bibliotecii pas cu pas #include
#include
Apoi definim nu. de pași de finalizat la rotație, aici folosim 32 deoarece folosim Full-Step (4 Step-sequence) deci (360/32 = 11,25 grade). Deci, pentru un pas, arborele se deplasează cu 11,25 grade, adică unghiul pasului. În secvența în 4 pași, sunt necesari 4 pași pentru o rotație completă.
#define PASI 32
De asemenea, putem utiliza modul Half Step în care există un unghi de pas de secvență în 8 pași (360/64 = 5.625).
Pași pe rotație = 360 / UNghiul PASULUI
Pe măsură ce setăm viteza, trebuie să luăm valoare analogică de la PA4 care este conectat la potențiometru. Deci, trebuie să declarăm PIN pentru asta
const int speedm = PA4
Apoi am convertit valoarea analogică în digital stocând acele valori într-o variabilă de tip întreg, după care trebuie să mapăm valorile ADC pentru setarea vitezei, astfel încât să folosim declarația de mai jos. Aflați mai multe despre utilizarea ADC cu STM32 aici.
int adc = analogRead (speedm); int result = hartă (adc , 0, 4096, 1, 1023);
Pentru a seta viteza, folosim stepper.setSpeed (rezultat); Avem un interval de viteză de (1-1023).
Trebuie să creăm instanțe precum cele de mai jos pentru a seta pinii conectați la motor. Fiți atenți la acești pași, deoarece majoritatea fac o greșeală aici în acest model. Ele dau un model greșit și din această cauză bobinele nu pot fi energizate.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
Declarația de mai jos este utilizată pentru a obține valoarea pașilor de pe monitorul serial. De exemplu, avem nevoie de 2048 de valori pentru o rotație completă (32 * 64 = 2048), adică 64 va fi raportul de transmisie și 32 va fi secvența la jumătate de pas pentru o rotație.
rotate = Serial.parseInt ();
Codul de mai jos este utilizat pentru a apela instanța și a porni motorul. Dacă valoarea de rotație este 1, apelează funcția pas cu pas o singură dată și se face o mișcare.
stepper.step (rotire);
Codul complet cu Video demonstrativ este prezentat mai jos. De asemenea, verificați aici toate proiectele legate de motorul pas cu pas, cu interfața cu alte microcontrolere