- Wymagane składniki
- Pin Opis silnika krokowego
- Schemat obwodu sterowania silnikiem krokowym za pomocą modułu ULN2003
- Schemat obwodu do sterowania silnikiem krokowym za pomocą modułu L293D:
- Sterowanie silnikiem krokowym za pomocą AVR ATmega16
Silniki krokowe to bezszczotkowe silniki prądu stałego, które mogą obracać się w krokach od 0 0 do 360 0. Silnik krokowy wykorzystuje sygnały elektroniczne do stopniowego obracania silnika, a każdy sygnał obraca wał w ustalonym kroku (jeden krok). Anioł obrotu jest kontrolowany przez zastosowanie określonej sekwencji sygnałów. W przeciwieństwie do silnika serwo, silniki krokowe mogą być napędzane za pomocą pinów GPIO mikrokontrolera zamiast pinów PWM i mogą obracać się w (+360 0) i (-360 0). Kolejność sygnałów decyduje o kierunku zgodnym i przeciwnym do ruchu wskazówek zegara silnika krokowego. Aby kontrolować prędkość silnika, wystarczy zmienić częstotliwość podawanych sygnałów sterujących. Silniki krokowe obracają się stopniowo. Istnieje kilka trybów kroków do obsługi silnika krokowego, takich jak pełny krok, pół kroku i mikrokrok. Aby dowiedzieć się więcej o podstawach, teorii i zasadzie działania silnika krokowego, kliknij link.
Wcześniej łączyliśmy silnik krokowy z wieloma mikrokontrolerami:
- Połączenie silnika krokowego z ARM7-LPC2148
- Połączenie silnika krokowego z Arduino Uno
- Połączenie silnika krokowego z MSP430G2
- Połączenie silnika krokowego z STM32F103C8
- Połączenie silnika krokowego z mikrokontrolerem PIC
- Połączenie silnika krokowego z mikrokontrolerem 8051
- Połączenie silnika krokowego z Raspberry Pi
W tym samouczku połączymy silnik krokowy 28BYJ-48 z mikrokontrolerem Atmega16 AVR przy użyciu Atmel Studio 7.0. Silnik krokowy jest przystosowany do pracy przy 5V. Będziemy łączyć silnik krokowy z obydwoma sterownikami, tj. ULN2003 i L293. Oba będą zasilane napięciem 5V. W celu uproszczenia interfejsu używamy modułu prebuild obu sterowników silnika. Możesz także użyć samodzielnych układów scalonych ULN2003 i L293D. Liczba przewodów i zworek może być większa, więc zachowaj ostrożność podczas podłączania wszystkich połączeń.
Wymagane składniki
- Silnik krokowy (28BYJ-48)
- Moduł ULN2003 / sterownik silnika L293D
- Układ scalony mikrokontrolera Atmega16
- Oscylator kwarcowy 16 MHz
- Dwa kondensatory 100nF
- Dwa kondensatory 22pF
- Naciśnij przycisk
- Przewody połączeniowe
- Płytka prototypowa
- USBASP v2.0
- Led (dowolny kolor)
Pin Opis silnika krokowego
Schemat obwodu sterowania silnikiem krokowym za pomocą modułu ULN2003
Podłącz wszystkie komponenty, jak pokazano na poniższym schemacie, używając ULN2003. Podobnie będziemy łączyć go za pomocą L293D w następnym kroku. Używamy PORTA Atmega16 do interfejsu silnika krokowego dla obu sterowników silnika. Nie ma potrzeby podłączania pinu 5V silnika krokowego. Do poruszania silnikiem krokowym potrzebne są tylko kołki cewki. Kolejność pinów jest bardzo ważna do napędzania silnika krokowego, ponieważ zasilanie cewek powinno być, aby osiągnąć kroki. W tym projekcie wykorzystano cztery wejścia ULN2003 i cztery wyjścia ULN2003. Wejścia zostaną podłączone do pinów PORTA, a wyjścia do pinów Sygnału Silnika Krokowego. Ponadto podłącz jeden przycisk do styku resetowania, aby zresetować Atmega16 w razie potrzeby. Podłącz Atmega16 do odpowiedniego obwodu oscylatora kwarcowego. Cały system będzie zasilany napięciem 5V.
Poniżej znajduje się rzeczywisty obraz modułu sterownika silnika ULN2003:
Poniżej podano połączenia pinów Atmega16 z ULN2003 i L293D do obracania silnika krokowego. Powiązanie silnika krokowego z modułem L293D jest wyjaśnione w dalszej części, należy pamiętać, że do sterowania silnikiem krokowym wymagany jest tylko jeden moduł ULN2003 lub L293D.
Połączenia pinów INPUT są następujące:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (styk1) |
IN1 (PIN2) |
A1 |
IN2 (styk2) |
IN2 (styk 7) |
A2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (styk15) |
Połączenia pinów dla OUTPUT są następujące:
Silnik krokowy |
ULN2003 |
L293D |
Pomarańczowy |
OUT1 (PIN16) |
OUT1 (PIN3) |
Żółty |
OUT2 (PIN15) |
OUT2 (PIN6) |
Różowy |
OUT3 (PIN14) |
OUT3 (PIN11) |
niebieski |
OUT4 (PIN13) |
OUT4 (PIN14) |
Schemat obwodu do sterowania silnikiem krokowym za pomocą modułu L293D:
Sterowanie silnikiem krokowym za pomocą AVR ATmega16
Jak już powiedziano, w przeciwieństwie do silnika serwo, silniki krokowe wymagają zewnętrznych sterowników, np. Sterownika silnika ULN2003 lub L293D. Po prostu podłącz Obwód jak powyżej i załaduj program main.c podany na końcu.
Szkic przedstawia silnik krokowy obracający się w obie strony, tj. Zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara. Jeśli chcesz obrócić stepper w jednym kierunku, po prostu zakomentuj linie kodu innego kierunku w szkicu.
Pełny kod AVR do sterowania silnikiem krokowym jest podany poniżej. Kod jest prosty i łatwy do zrozumienia. Poniżej podano dwa kody, jeden dla obrotowego silnika krokowego z ULN2003 i drugi z modułem L293D.
Podłącz USBASP v2.0 i postępuj zgodnie z instrukcjami w tym linku, aby zaprogramować mikrokontroler Atmega16 AVR za pomocą USBASP i Atmel Studio 7.0. Po prostu zbuduj szkic i prześlij za pomocą zewnętrznego łańcucha narzędzi.
Pełny kod z filmem demonstracyjnym jest podany poniżej.