Używanie silnika krokowego 28BYJ-48 z układem ULN2003 i Arduino
W tym samouczku nauczymy się, jak kontrolować silnik krokowy 28BYJ-48 za pomocą sterownika ULN2003 z Arduino. Ta konfiguracja umożliwia precyzyjne sterowanie pozycją i prędkością silnika. Na koniec tego projektu będziesz w stanie obracać silnik w obu kierunkach i skutecznie kontrolować jego kroki.
Użyjemy silnika krokowego 28BYJ-48, który jest popularnym wyborem w różnych projektach robotyki i automatyzacji ze względu na niską cenę i łatwość użycia. Płytka sterownika ULN2003 łączy silnik krokowy z Arduino, co pozwala nam wysyłać sygnały krokowe, które kontrolują ruch silnika. Ten samouczek poprowadzi cię przez niezbędne okablowanie i kod, aby uruchomić twój silnik.
W celu dalszego wyjaśnienia proszę odwołać się do wideo związanym z tym samouczkiem (w wideo o 0:45).
Wyjaśnienie sprzętu
Kluczowe komponenty tego projektu to silnik krokowy 28BYJ-48 oraz płytka sterująca ULN2003. Silnik krokowy składa się z kilku cewek, które mogą być zasilane w określonej sekwencji, aby wytworzyć obrót. Sterownik ULN2003 działa jako przełącznik, umożliwiając Arduino kontrolowanie mocy dostarczanej do każdej cewki.
Sterownik ULN2003 wykorzystuje układ tranzystorów Darlingtona do obsługi wyższego prądu wymaganego przez silnik krokowy. Gdy pin z Arduino wysyła sygnał HIGH, pozwala na przepływ prądu do odpowiadającej cewki w silniku, powodując jego ruch. Umożliwia to precyzyjną kontrolę nad kątem obrotu i prędkością silnika.
Szczegóły karty katalogowej
| Producent | ULN2003 |
|---|---|
| Numer części | ULN2003 |
| Napięcie logiczne/IO | 5 V |
| Napięcie zasilania | 5-30 V (maks) |
| Prąd wyjściowy (na kanał) | 500 mA max |
| Prąd szczytowy (na kanał) | 2 A max |
| Wskazówki dotyczące częstotliwości PWM | N/A |
| Progi logiki wejściowej | 0,8 V (niski), 2,4 V (wysoki) |
| Spadek napięcia / RDS(on)/ nasycenie | 1,5 V max |
| Limity termiczne | 70 °C max |
| Pakiet | DIP-16 |
| Notatki / warianty | Powszechnie używane z silnikami krokowymi 5V. |
- Upewnij się, że sterownik może obsłużyć aktualne wymagania Twojego silnika.
- Użyj radiatorów, jeśli to konieczne, aby zarządzać limitami termicznymi.
- Sprawdź, czy wszystkie połączenia są pewne, aby uniknąć unoszących się wejść.
- Przetestuj silnik, wykonując proste sekwencje kroków, zanim zintegrowasz go z większymi projektami.
- Upewnij się, że zasilasz silnik odpowiednim napięciem zasilania.
Instrukcje dotyczące okablowania


Aby podłączyć silnik krokowy 28BYJ-48 do sterownika ULN2003 i Arduino, wykonaj następujące kroki:
Najpierw podłącz silnik do sterownika ULN2003. Silnik ma cztery przewody, zazwyczaj w kolorach pomarańczowym, żółtym, różowym i niebieskim. Podłącz te przewody do odpowiadających pinów wyjściowych na sterowniku ULN2003. Połączenia są następujące:
Orangeprzewód doOUT1Yellowprzewód doOUT2Pinkprzewód doOUT3Blueprzewód doOUT4
Następnie podłącz sterownik ULN2003 do Arduino. Piny wejściowe na sterowniku odpowiadają czterem pinom cyfrowym na Arduino. Na przykład:
IN1doPin 10IN2doPin 11IN3doPin 12IN4doPin 13
Na koniec podłącz piny zasilania i masy sterownika ULN2003 do Arduino. Podłącz VCCpin do wyjścia 5V Arduino iGNDpodłącz do masy Arduino. Upewnij się, że wszystkie połączenia są pewne przed włączeniem zasilania systemu.
Przykłady kodu i przewodnik
W sekcji konfiguracji kodu Arduino definiujemy piny podłączone do sterownika ULN2003:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Tutaj deklarujemy cztery zmienne całkowite:Pin1,Pin2,Pin3, iPin4, które odpowiadają cyfrowym pinom na Arduino. Te piny będą kontrolować ruch silnika krokowego.
W setup()funkcja, konfigurujemy te piny jako wyjścia:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
To ustawienie zapewnia, że Arduino może wysyłać sygnały do sterownika ULN2003 w celu kontrolowania silnika.pinModefunkcja ustawia każdy pin w tryb WYJŚCIE, umożliwiając im wysyłanie sygnałów.
W końcu, w głównej pętli, tworzymy instrukcję switch case, aby kontrolować kroki silnika na podstawie zmiennej._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
W tym fragmencie używamydigitalWritewysłać sygnały WYSOKIE lub NISKIE do każdego pinu w zależności od prądu_stepTo kontroluje, które cewki są zasilane, co pozwala silnikowi obracać się. Pełny kod, który integruje te fragmenty, zostanie załadowany poniżej artykułu.
Demonstracja / Czego się spodziewać
Gdy wszystko jest poprawnie podłączone, a kod został wgrany, silnik krokowy powinien obracać się w odpowiedzi na sygnały z Arduino. Możesz przetestować silnik, modyfikując opóźnienie w pętli lub zmieniając kroki, aby zobaczyć, jak reaguje. Pamiętaj, że jeśli silnik nie jest zasilany prawidłowo, może się nie poruszać lub zachowywać się nieregularnie.
Rozdziały
- Wprowadzenie - 0:00
- Wyjaśnienie sprzętu - 1:30
- Instrukcje dotyczące okablowania - 3:15
- Przykłady kodu i przewodnik - 5:00
- Demonstracja / Czego się spodziewać - 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);
}
Rzeczy, których możesz potrzebować
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
-
AliExpress
Zasoby i odniesienia
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
-
Zewnętrzny
Pliki📁
Brak dostępnych plików.