- Co to jest silnik prądu stałego?
- Wymagane składniki
- Schemat obwodu
- Programowanie Atmega16 do sterowania silnikiem DC
Silniki prądu stałego to najczęściej używane silniki. Silniki te można znaleźć prawie wszędzie, od małych projektów po zaawansowaną robotykę. Wcześniej połączyliśmy silnik prądu stałego z wieloma innymi mikrokontrolerami, takimi jak Arduino, Raspberry pi i używaliśmy go w wielu projektach robotów. Dziś uczymy się sterować silnikiem prądu stałego za pomocą mikrokontrolera AVR Atmega16. Ale zanim przejdziemy dalej, dowiedzmy się więcej o silniku prądu stałego.
Co to jest silnik prądu stałego?
Silnik prądu stałego to urządzenie, które przekształca energię elektryczną w energię mechaniczną. W szczególności silnik prądu stałego wykorzystuje prąd stały do przekształcania energii elektrycznej w energię mechaniczną. Podstawową zasadą działania silnika jest interakcja między polem magnetycznym a prądem w celu wytworzenia w silniku siły, która pomaga mu się obracać. Kiedy więc prąd elektryczny przepływa przez cewkę w polu magnetycznym, generowana jest siła magnetyczna, która wytwarza moment obrotowy powodujący ruch silnika. Kierunek silnika jest kontrolowany przez odwrócenie prądu. Również jego prędkość można zmieniać, zmieniając dostarczane napięcie. Ponieważ mikrokontrolery mają piny PWM, można go więc wykorzystać do sterowania prędkością silnika.
W tym samouczku działanie silnika prądu stałego zostanie zademonstrowane za pomocą Atmega16. Sterownik silnika L293D zostanie użyty do odwrócenia kierunku prądu, a tym samym kierunku ruchu. Sterownik silnika L293D wykorzystuje konfigurację obwodu mostka H, który wysyła wymagany prąd do silnika. Do wyboru kierunku pracy silnika służą dwa przyciski. Jeden z przycisków służy do wyboru obrotów w kierunku zgodnym z ruchem wskazówek zegara, a drugi do wyboru trybu pracy przeciwzakłóceniowej silnika prądu stałego.
Wymagane składniki
- Silnik prądu stałego (5 V)
- 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)
Schemat obwodu
Programowanie Atmega16 do sterowania silnikiem DC
Tutaj Atmega16 jest programowany za pomocą USBASP i Atmel Studio7.0. Jeśli nie wiesz, jak zaprogramować Atmega16 za pomocą USBASP, odwiedź link. Kompletny program jest podany na końcu projektu, po prostu załaduj program do Atmega16 i użyj dwóch przycisków, aby obrócić silnik prądu stałego zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara.Silnik prądu stałego jest połączony za pomocą sterownika silnika L293D. Silnik prądu stałego będzie się obracał w dwóch kierunkach po naciśnięciu odpowiedniego przycisku. Jeden przycisk będzie używany do obracania silnika prądu stałego w kierunku zgodnym z ruchem wskazówek zegara, a drugi przycisk będzie używany do obracania silnika prądu stałego w kierunku przeciwnym do ruchu wskazówek zegara. Najpierw określ częstotliwość procesora mikrokontrolera i uwzględnij wszystkie niezbędne biblioteki.
# zdefiniować F_CPU 16000000UL #include #include
Następnie użyj jednej zmiennej, aby śledzić stan naciśnięcia przycisku. Ta zmienna będzie używana do określenia kierunku silnika.
int i;
Wybierz tryb wejścia / wyjścia GPIO za pomocą rejestru kierunku danych. Początkowo ustaw pin silnika na jak najniższy, aby uniknąć uruchomienia silnika bez naciskania przycisku.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Sprawdź, czy pierwszy przycisk jest wciśnięty, podłączony do PORTA4 Atmega16 i zapisz stan przycisku w zmiennej.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Podobnie sprawdzić czy 2 nd przycisk jest wciśnięty połączony PORTA5 z ATmega16 i zapisać stan przycisku w zmiennej.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Jeśli stan 1 st przycisku jest prawdziwe wtedy obracać silnik prądu stałego w kierunku wskazówek zegara, a jeśli stan drugiego przycisku Push jest prawdziwe wtedy obracać silnik prądu stałego w kierunku przeciwnym do wskazówek zegara.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Możesz podłączyć piny silnika do dowolnego pinu GPIO w zależności od używanego GPIO. Ważne jest również, aby użyć układu scalonego sterownika silnika, aby zmniejszyć obciążenie mikrokontrolera, ponieważ mikrokontrolery nie są w stanie zapewnić wymaganego prądu do pracy silników prądu stałego. Aby uzyskać więcej szczegółów i inne projekty oparte na silnikach prądu stałego, odwiedź podany link.
Pełny kod i film demonstracyjny znajduje się poniżej.