- Motor pas cu pas
- Rotirea unui motor pas cu pas cu ARM7-LPC2148
- Componente necesare
- Motor pas cu pas (28BYJ-48)
- Driver motor pas cu pas ULN2003
- Diagrama circuitului
- Programare ARM7-LPC2148 pentru motor pas cu pas
În lumea de automatizare de astăzi, motorul pas cu pas și servomotorul sunt cele mai utilizate motoare în sistemele încorporate. Ambele sunt utilizate în diferite mașini de automatizare, cum ar fi brațele robotizate, mașinile CNC, camerele etc. În acest tutorial vom vedea cum să interfațăm Motorul pas cu pas cu ARM7-LPC2148 și cum să controlăm viteza acestuia. Dacă sunteți nou în ARM7, începeți prin a afla despre ARM7-LPC2148 și instrumentele sale de programare.
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. Putem roti motorul pas cu pas dând impulsuri digitale pinilor săi. Motoarele pas cu pas sunt ieftine și au un design robust. Viteza motorului poate fi controlată prin schimbarea frecvenței impulsurilor digitale.
Există două tipuri de motoare pas cu pas disponibile pe baza tipului de înfășurare a statorului: UNIPOLAR și BIPOLAR. Aici folosim motorul pas cu pas UNIPOLAR, care este cel mai frecvent utilizat motor pas cu pas . Pentru a roti motorul pas cu pas trebuie să energizăm bobinele motorului pas cu pas într-o succesiune. Pe baza operației de rotație, acestea sunt clasificate în două moduri:
- Mod pas complet: (secvență în 4 pași)
- O singură etapă pe trepte (WAVE STEPPING)
- Două faze pe trepte
- Mod jumătate de pas (secvență în 8 pași)
Pentru a afla mai multe despre motorul pas cu pas și funcționarea acestuia, urmați linkul.
Rotirea unui motor pas cu pas cu ARM7-LPC2148
Aici vom folosi FULL STEP: ONE PHASE ON sau WAVE STEPPING mode pentru a roti Motorul pas cu pas cu ARM7-LPC2148
În această metodă vom energiza doar o singură bobină (un pin de LPC2148) la un moment dat. Asta dacă prima bobină A este alimentată pentru o perioadă mică de timp, arborele își va schimba poziția și apoi bobina B este alimentată în același timp și arborele își va schimba din nou poziția. La fel ca acesta, bobina C și apoi bobina D sunt alimentate pentru a muta arborele mai departe. Acest lucru face ca arborele motorului pas cu pas să se rotească pas cu pas, alimentând o bobină la un moment dat.
Prin această metodă rotim arborele pas cu pas prin alimentarea bobinei într-o succesiune. Aceasta se numește patru secvențe de pași, deoarece durează patru pași.
Puteți roti Motorul pas cu pas folosind metoda HALF STEP (metoda 8-Secvență) conform valorilor date mai jos.
Etapa |
Bobina A |
Bobina B |
Bobina C |
Bobina D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Componente necesare
Hardware:
- ARM7-LPC2148
- IC driver driver ULN2003
- LED - 4
- MOTOR STEPPER (28BYJ-48)
- PANOU
- CONEXIUNEA SIRURILOR
Software:
- Keil uVision5
- Instrumentul Magic Flasic
Motor pas cu pas (28BYJ-48)
Motorul pas cu pas 28BYJ-48 este deja prezentat în imaginea de mai sus. 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, STM32, ARM etc.
Dar avem nevoie de un motor Drive IC precum ULN2003 pentru al conduce, deoarece motoarele pas cu pas consumă curent mare și poate deteriora microcontrolerele.
Specificațiile 28BYJ-48 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
- Interfațarea motorului pas cu pas cu MSP430G2
Motorul pas cu pas poate fi, de asemenea, controlat fără niciun microcontroler, consultați acest circuit al driverului motorului pas cu pas.
Driver motor pas cu pas ULN2003
Majoritatea motoarelor pas cu pas vor funcționa numai cu ajutorul unui modul driver. Acest lucru se datorează faptului că modulul controlerului (în cazul nostru LPC2148) nu va putea furniza suficient curent de la pinii I / O pentru ca motorul să funcționeze. Deci vom folosi un modul extern precum modulul ULN2003 ca driver de motor pas cu pas.
În acest proiect, vom folosi driverul de motor ULN2003 IC. Diagrama pin a IC este dată mai jos:
Pinii (IN1 la IN7) sunt pinii de intrare pentru conectarea ieșirii microcontrolerului și OUT1 la OUT7 sunt pinii de ieșire corespunzători pentru conectarea intrării motoarelor pas cu pas. COM este dat Tensiune pozitivă a sursei necesară pentru dispozitivele de ieșire și pentru sursa externă de alimentare.
Diagrama circuitului
Schema de circuit pentru interfațarea motorului pas cu pas cu ARM-7 LPC2148 este prezentată mai jos
ARM7-LPC2148 cu IC driver driver ULN2003
Pinii GPIO ai LPC2148 (P0.7 până la P0.10) sunt considerați ca pinii de ieșire care sunt conectați cu pinii de intrare (IN1-IN4) ai IC ULN2003.
LPC2148 Pin |
PINS ULN2003 IC |
P0.7 |
ÎN 1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Conexiuni 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 (albastru, roz, galben și portocaliu).
PIN-uri IC ULN2003 |
PIN-urile motorului pas cu pas |
OUT1 |
ALBASTRU |
OUT2 |
ROZ |
OUT3 |
GALBEN |
OUT4 |
PORTOCALE |
COM |
ROȘU (+ 5V) |
LED-uri cu IN1 la IN4 din ULN2003
Patru pini LED (LED1, LED2, LED4, LED 4) sunt conectați la pinii IN1, IN2, IN3 și respectiv IN4 din ULN2003, iar catodul LED-urilor este conectat la GND, ceea ce indică impulsurile din LPC2148. Putem nota modelul impulsurilor furnizate. Modelul este afișat în videoclipul demonstrativ atașat la sfârșit.
Programare ARM7-LPC2148 pentru motor pas cu pas
Pentru a programa ARM7-LPC2148 avem nevoie de instrumentul keil uVision și Flash Magic. Folosim cablul USB pentru a programa Stick ARM7 prin port micro USB. Scriem cod folosind Keil și creăm un fișier hexagonal și apoi fișierul HEX este afișat pe stick-ul ARM7 folosind Flash Magic. Pentru a afla mai multe despre instalarea keil uVision și Flash Magic și despre modul de utilizare, urmați linkul Noțiuni introductive despre microcontrolerul ARM7 LPC2148 și programați-l folosind Keil uVision.
Codul complet pentru controlul motorului pas cu pas cu ARM 7 este dat la sfârșitul acestui tutorial, aici explicăm câteva părți ale acestuia.
1. Pentru a folosi metoda FASE PENTRU UN PAS COMPLET, trebuie să includem comanda de mai jos. Deci, folosim următoarea linie din program
caracter nesemnat în sensul acelor de ceasornic = {0x1,0x2,0x4,0x8}; // Comenzi pentru rotație în sensul acelor de ceasornic caracter nesemnat în sens invers acelor de ceasornic = {0x8,0x4,0x2,0x1}; // Comenzi pentru rotație în sens invers acelor de ceasornic
2. Următoarele linii sunt utilizate pentru a inițializa pinii PORT0 ca ieșire și a le seta la LOW
PINSEL0 = 0x00000000; // Setarea pinilor PORT0 IO0DIR - = 0x00000780; // Setarea pinilor P0.7, P0.8, P0.9, P0.10 ca OUTPUT IO0CLR = 0x00000780; // Setarea P0.7, P0.8, P0.9, P0.10 pin OUTPUT ca LOW
3. Setați pinii PORT (P0.7 la P0.10) HIGH conform comenzilor în sensul acelor de ceasornic folosind acest lucru pentru bucla cu întârziere
pentru (int j = 0; j
La fel și pentru Anti-clock Wise
pentru (int z = 0; z
4. Schimbați timpul de întârziere pentru a modifica viteza de rotație a motorului pas cu pas
întârziere (0x10000); // Schimbați această valoare pentru a schimba viteza de rotație (0x10000) -Viteza completă (0x50000) -Devine lent (0x90000) -Devine lent decât anterior. Deci, prin creșterea întârzierii , reducem viteza de rotație.
5. Numărul de pași pentru o rotație completă poate fi modificat cu codul de mai jos
int no_of_steps = 550; // Modificați această valoare pentru numărul necesar de rotații de pași (550 oferă o rotație completă)
Pentru motorul meu pas cu pas, am primit 550 de trepte pentru rotație completă și 225 pentru rotație pe jumătate. Deci, schimbați-l în funcție de cerințele dvs.
6. Această funcție este utilizată pentru a crea întârziere.
void delay (valoare int nesemnată) // Funcție pentru generarea întârzierii { unsigned int z; pentru (z = 0; z
Codul complet cu demonstrația video este dat mai jos.