Använda 28BYJ-48 stegmotorn med en ULN2003-drivrutin och Arduino
I den här handledningen kommer vi att lära oss hur man styr en 28BYJ-48 stegmotor med en ULN2003-drivrutin med en Arduino. Denna uppsättning möjliggör precis kontroll av motorposition och hastighet. I slutet av detta projekt kommer du att kunna rotera motorn i båda riktningarna och effektivt kontrollera dess steg.
Vi kommer att använda 28BYJ-48 stegmotorn, som är ett populärt val för olika robotik- och automatiseringsprojekt på grund av dess låga kostnad och användarvänlighet. ULN2003 drivrutinskortet kopplar stegmotorn till Arduino, vilket gör att vi kan skicka stegsignaler som styr motorernas rörelse. Denna handledning kommer att vägleda dig genom den nödvändiga kopplingen och koden för att få din motor att snurra.
För ytterligare förtydligande, vänligen hänvisa till videon kopplad till denna handledning (i videon vid 0:45).
Hårdvara Förklarad
De viktigaste komponenterna i detta projekt inkluderar 28BYJ-48 stegmotor och ULN2003 drivrutinskort. Stegmotorn består av flera spolar som kan aktiveras i en specifik sekvens för att skapa rotation. ULN2003-drivern fungerar som en switch, vilket gör att Arduino kan kontrollera den kraft som levereras till varje spole.
ULN2003-drivern använder en Darlington-transistorarray för att hantera den högre ström som krävs av stegmotorn. När en pin från Arduino skickar en HÖG signal, tillåter det ström att flöda till den motsvarande spolen i motorn, vilket får den att röra sig. Detta möjliggör precis kontroll över rotationsvinkeln och hastigheten på motorn.
Datablad Detaljer
| Tillverkare | ULN2003 |
|---|---|
| Delnummer | ULN2003 |
| Logik/IO-spänning | 5 V |
| Matningsspänning | 5-30 V (max) |
| Utgångsström (per kanal) | 500 mA max |
| Spetsström (per kanal) | 2 A max |
| PWM-frekvens vägledning | N/A |
| Inmatningslogiktrösklar | 0,8 V (låg), 2,4 V (hög) |
| Spänningsfall / RDS(on)/ mättnad | 1,5 V max |
| Termiska gränser | 70 °C max |
| Paket | DIP-16 |
| Anteckningar / varianter | Vanligt förekommande med 5V stegmotorer. |
- Se till att drivrutinen kan hantera de aktuella kraven för din motor.
- Använd kylflänsar om det behövs för att hantera termiska gränser.
- Kontrollera att alla anslutningar är säkra för att undvika flytande ingångar.
- Testa motorn genom att köra enkla stegsekvenser innan du integrerar den i större projekt.
- Se till att driva motorn med en adekvat matningsspänning.
Kopplingsanvisningar


För att koppla 28BYJ-48 stegmotorn till ULN2003-drivern och Arduino, följ dessa steg:
Först, anslut motorn till ULN2003-drivrutinen. Motorn har fyra ledningar, vanligtvis färgkodade som orange, gul, rosa och blå. Anslut dessa ledningar till motsvarande utgångspinnar på ULN2003-drivrutinen. Anslutningarna är som följer:
Orangetråd tillOUT1Yellowtråd tillOUT2Pinktråd tillOUT3Bluetråd tillOUT4
Anslut sedan ULN2003-drivrutinen till Arduino. Ingångspinnarna på drivrutinen motsvarar fyra digitala pinnar på Arduino. Till exempel:
IN1tillPin 10IN2tillPin 11IN3tillPin 12IN4tillPin 13
Slutligen, anslut ström- och jordstiften på ULN2003-drivern till Arduino. Anslut denVCCpin till Arduinos 5V-utgång och denGNDanslut till Arduinos jord. Se till att alla anslutningar är säkra innan du slår på systemet.
Kodexempel och genomgång
I avsnittet för inställning av Arduino-koden definierar vi de pinnar som är anslutna till ULN2003-drivern:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Här deklarerar vi fyra heltalsvariabler:Pin1,Pin2,Pin3, andPin4, som motsvarar de digitala stiften på Arduino. Dessa stift kommer att styra stegmotorens rörelse.
I densetup()funktion, vi konfigurerar dessa stift som utgångar:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
Denna konfiguration säkerställer att Arduino kan skicka signaler till ULN2003-drivern för att styra motorn.pinModefunktionen sätter varje pin till OUTPUT-läge, vilket gör att de kan skicka signaler.
Slutligen, i huvudloopen, skapar vi en switch-case för att styra motorstegen baserat på variabeln._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
I detta utdrag använder vidigitalWriteatt skicka HÖGA eller LÅGA signaler till varje pin baserat på strömmen_step. Detta styr vilka spolar som är aktiverade, vilket gör att motorn kan rotera. Den fullständiga koden som integrerar dessa kodsnuttar kommer att laddas nedanför artikeln.
Demonstration / Vad man kan förvänta sig
När allt är kopplat korrekt och koden är uppladdad, bör stegmotorn rotera som svar på signalerna från Arduino. Du kan testa motorn genom att ändra fördröjningen i loopen eller ändra stegen för att se hur den reagerar. Var medveten om att om motorn inte är strömförsörjd korrekt, kan den antingen inte röra sig eller bete sig oförutsägbart.
Kapitel
- Introduktion - 0:00
- Hårdvara förklarad - 1:30
- Kopplingsanvisningar - 3:15
- Kodexempel och genomgång - 5:00
- Demonstration / Vad man kan förvänta sig - 7:45
// Original source is http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
// Update by Ahmad Shamshiri for RoboJax.com
// Published on March 27, 2017 in Ajax, ON, Canada.
/*
*
Need wiring diagram from this code: https://youtu.be/0glBk917HPg
Purchase My Arduino course on Udemy.com http://robojax.com/L/?id=62
*
* Get this code and other Arduino codes from RoboJax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from RoboJax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true;// false=clockwise, true=counter clockwise
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
Tänker att du kanske behöver
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
AliExpress
Resurser och referenser
-
Extern.
-
Extern.
-
Extern.
-
Extern.
-
Extern.
-
Extern.
Filer📁
Inga filer tillgängliga.