Celem projektu jest zaprezentowanie działania silnika krokowego za pomocą mikrokontrolera ESP8266. Główną ideą jest pokazanie działania silnika krokowego w sposób prosty do zrozumienia dla uczniów liceum. Dodatkowo zaprezentowana jest możliwość kontrolowania prędkości obrotu silnika przy pomocy potencjometru.
- Płytka stykowa
- ESP8266
- Potencjometr 10k
- Kable męsko-męskie oraz męsko-żeńskie
- Komputer PC z oprogramowaniem Thonny
- Moduł ULN2003 Motor Driver
- 28BYJ-48 Stepper Motor
- Kabel USB
Ćwiczenie polega na zaprezentowaniu działania silnika krokowego oraz kontrola prędkości obrotu silnika za pomocą potencjometru. Zarządzanie silnikiem krokowym odbywa się za pomocą płytki ESP8266. Wykorzystujemy jednobiegunowy silnik krokowy 28BYJ-48 w połączeniu z modułem ULN2003 Motor Driver. Aspekt programowania polega na wykorzystaniu oprogramowania Thonny do interakcji z płytą ESP8266.
Wprowadzenie do silników krokowych:
Silnik krokowy reprezentuje bezszczotkowy silnik elektryczny prądu stałego, który segmentuje pełny obrót w dyskretne kroki. Z każdym etapem o identycznej wielkości, silnik rozwija się krok po kroku. Ten precyzyjny ruch pozwala na obracanie silnika za pomocą określonego kąta, osiągając precyzyjną pozycję. Obrót silnika krokowego może wystąpić w kierunku zgodnym z ruchem wskazówek zegara lub przeciwnym do ruchu wskazówek zegara.
Dołączone do tego obraz prezentuje parę silników stepperowych 28BYJ-48.
Silniki krokowe obejmują wewnętrzne cewki, które indukują stopniowy ruch wału silnika w dowolnym kierunku, gdy prąd elektryczny jest nakładany na cewki w określony sposób.
Istnieją dwa warianty silników krokowych: jednobiegunowe i dwubiegunowe silniki krokowe.
Zasada działania silnika krokowego:
Silniki krokowe wykorzystują koło zębate i elektromagnesy do przesuwania koła po „kroku” na raz.
Każdy wysłany wysoki impuls zasila cewkę, przyciągając zęby znajdujące się najbliżej koła zębatego i obracając silnik w precyzyjnych i stałych przyrostach kąta, zwanych krokami.
Liczba kroków, jakie wykonuje silnik krokowy przy obrocie o 360 stopni, jest w rzeczywistości liczbą zębów koła zębatego.
Sposób, w jaki pulsujesz te cewki, decyduje o tym, jak działa silnik.
- Sekwencja impulsów określa kierunek wirowania silnika.
- Częstotliwość impulsów określa prędkość silnika.
- Liczba impulsów decyduje o tym, jak daleko silnik zawróci. Na każdy krok silnika potrzebny jest jeden impuls.
- Poprzez energetyzowanie cewki w prawidłowej sekwencji, silnik jest obracany.
Silnik krokowy 28BYJ-48:
28BYJ-48 to 5-przewodowy unipolarny silnik krokowy pracujący przy napięciu 5 V. Silnik nie używa szczotek kontaktowych, ma stosunkowo precyzyjny ruch i jest dość niezawodny.
Pomimo niewielkich rozmiarów, silnik zapewnia przyzwoity moment obrotowy 34,3 mNm z prędkością około 15 RPM. Zapewnia dobry moment obrotowy nawet w postoju i utrzymuje go tak długo, jak długo silnik otrzymuje moc.
Jedyną wadą jest to, że jest nieco energochłonny i zużywa energię nawet wtedy, gdy jest nieruchomy.
Cechy silnika krokowego 28BYJ-48:
- Napięcie znamionowe: 5 V DC
- Liczba faz: 4
- Współczynnik zmienności prędkości: 1/64
- Kąt uderzeń: 5.625°/64
- Częstotliwość: 100 Hz
28BYJ-48 składa się z 3 części:
- Koła zębate
- Stator
- Rotor
Stojan
Stojan składa się z dwóch cewek, z których każda przesuwa się między dwoma oddzielnymi metalowymi płytami. Dlatego w sumie są 4 płyty, a na dole jest również stepper. Obudowa silnika jest w zewnętrznej obudowie. Płyty przyciągają magnesy.
Każda płyta ma 8 pazurów wygięte w kierunku wnętrza cewki. Pięć przewodów wychodzi z silnika krokowego. Te pięć przewodów jest podłączonych do płytki drukowanej za niebieską plastikową pokrywą.
Zewnętrzne dwa przewody (niebieski i żółty) są podłączone do dolnej cewki. Wewnętrzne dwa przewody (różowe i pomarańczowe) są połączone z górną cewki. Przewód środkowy (czerwony) jest podłączony do obu cewek. Poniższe zdjęcie zostało zrobione z dołu, więc jest odwrócone.
Każda cewki jest nawinięty tak, że ich oś wyrównuje się z osią obrotu wirnika. Różni się to od zwykłych silników krokowych, w których cewki są wyrównane tak, że ich oś wskazuje i jest prostopadła do osi obrotu wirnika.
Każda cewka składa się z dwóch drutów nawiniętych o tej samej liczbie zwojów. Dwa z czterech końców przewodów są podłączone do tego samego pinu na płytce obwodu, tak, aby ten punkt stał się środkową pozycją całej cewki. Pozycje środkowe górnych i dolnych cewki są następnie połączone ze sobą na płytce drukowanej, a następnie do czerwonego przewodu. Uproszczony schemat powyżej pokazuje połączenie tylko dla górnej cewki.
Wirnik
Wirnik jest magnesem trwałym. Za pomocą osobnego magnesu stwierdzono, że wirnik ma 8 par północ-południe naprzemiennie wokół osi obrotu.
Pinout
Silnik krokowy 28BYJ-48 ma pięć przewodów. Pinouty są następujące:
Silnik krokowy 28BYJ-48 ma dwie cewki, z których każda ma środkowy punkt. Te dwa środkowe punkty są połączone wewnętrznie i wyprowadzone jako piąty przewód (czerwony przewód).
Razem jeden koniec cewka i środkowy punkt tworzą fazę. Tak więc silnik 28BYJ-48 ma w sumie cztery fazy.
Czerwony drut ma zawsze ustawiony sygnał HIGH, zatem gdy drugi przewód ma sugnał LOW, faza jest zasilana.
Silnik krokowy obraca się tylko wtedy, gdy fazy są zasilane w logicznej sekwencji znanej jako sekwencja krokowa.
Współczynnik redukcji biegunów
Zgodnie z arkuszem danych, gdy silnik 28BYJ-48 jest obsługiwany w trybie pełno etapowym, każdy krok odpowiada obrotowi 11,25°. Oznacza to, że są 32 kroki na rewolucję (360°/11,25°=32°).
Ponadto skrzynia biegów wewnątrz silnika ma redukcję przełożeń 64:1. Daje to 2048 (32*64) kroków na obrót.
Zużycie energii
Silnik 28BYJ-48 zazwyczaj pobiera około 240 mA.
Ponieważ silnik zużywa znaczną ilość energii, zaleca się zasilanie go bezpośrednio z zewnętrznego zasilacza 5 V, a nie z płytki, mikrokontrolera.
Warto zaznaczyć, że silnik zużywa energię nawet w stanie spoczynku, aby utrzymać swoje położenie.
Płytka sterownika ULN2003
Aby nawiązać połączenie między płytą ESP8266, a silnikiem krokowym, podłączamy moduł ULN2003 Motor Driver jak, przedstawiono na poniższym schemacie. Warto zauważyć, że silnik krokowy 28BYJ-48 jest często łączony z modułem ULN2003 Motor Driver.
Ponieważ silnik krokowy 28BYJ-48 zużywa znaczną ilość mocy, nie może być kontrolowany bezpośrednio przez mikrokontroler, taki jak Arduino.
ULN2003, znany ze swojej wysokiej mocy prądowej i wysokiego napięcia, zapewnia wyższy przyrost prądu niż pojedynczy tranzystor i pozwala na niskie napięcie niskiego prądu wyjściowego mikrokontrolera, aby napędzać silnik krokowy o wysokim prądzie.
ULN2003 składa się z siedmiu par tranzystorów, z których każdy może napędzać ładunki do 500mA i 50V. Ta tablica wykorzystuje cztery z siedmiu par.
Tablica posiada cztery wejścia sterujące i połączenie zasilania.
Dodatkowo istnieje złącze Molex, które jest kompatybilne ze złączem na silniku, co pozwala na podłączenie silnika bezpośrednio do niego.
Na tablicy znajdują się cztery diody LED, które wskazują aktywność na czterech kontrolnych liniach wejściowych. Zapewniają dobre wskazania wizualne podczas kroku.
Na płytce znajduje się zwornik ON/OFF, aby w razie potrzeby wyłączyć silnik krokowy.
Płytka sterownika ULN2003 Pinout
Tablica sterownika stepper ULN2003 ma następujące pinouty:
IN1-IN4 to piny wejściowe sterowania silnikiem
GND to pin uziemiający.
Pin VCC zasila silnik. Ponieważ silnik zużywa znaczną ilość energii, lepiej jest użyć zewnętrznego zasilacza 5 V niż płytki lub mikrokontrolera.
Motor Connection - w tym miejscu podłącza się silnik. Złącze jest zabezpieczone kluczem, więc można je podłączyć tylko w jedną stronę.
Sterowanie prędkością obrotu za pomocą potencjometru:
Sterowanie prędkością obrotu odbywa się za pomocą potencjometru. Wartości odczytane z potencjometru przeskalowane są do zakresu wartości 0-10. Za pomocą nowych wartości ustalana jest prędkość kolejnego pełnego obrotu silnika. Wartości te ustalają opóźnienie pomiędzy kolejnymi krokami silnika. Stosunek wartości do obrotu:
0 - brak obrotu
1 - najszybszy obrót, najmniejsze opóźnienie
10- najwolniejszy obrót, największe opóźnienie
Wraz ze wzrostem wartości wzrasta czas z jakim silnik wykona jeden pełen obrót.
import Stepper
from machine import Pin, ADC
from time import sleep
In1 = Pin(5,Pin.OUT) # IN1-> GPIO5 D1
In2 = Pin(4,Pin.OUT) # IN1-> GPIO4 D2
In3 = Pin(14,Pin.OUT) # IN1-> GPIO14 D5
In4 = Pin(12,Pin.OUT) # IN1-> GPIO12 D6
pot = ADC(0)#create an ADC object called pot on A0 pin.
while True:
pot_value = pot.read()
war=509
delay=pot_value*(10/(1023))
delay=int(delay)
print(delay)
sleep(0.1)
s1 = Stepper.create(In1,In2,In3,In4, delay)
s1.step(war)
'''
s1 = Stepper.create(In1,In2,In3,In4, delay=10)#delay daje nam predkosc z jaka obraca się silnik, im większy delay tym wolniej
s1.step(509,-1)#pełny obrót do tyłu, pełny obrót jest od 0-509
s1 = Stepper.create(In1,In2,In3,In4, delay=1)
s1.step(509)#pełny obrót w przód
'''
https://arduinokitproject.com/esp8266-nodemcu-stepper-motor-28byj-48-uln2003/
https://lastminuteengineers.com/28byj48-stepper-motor-arduino-tutorial/
https://cookierobotics.com/042/
https://www.sketching-with-hardware.org/wiki/Stepper_Motor_and_ULN2003
https://randomnerdtutorials.com/esp8266-nodemcu-stepper-motor-28byj-48-uln2003/
https://randomnerdtutorials.com/esp32-esp8266-analog-readings-micropython/