Kompletny poradnik, pokazujący krok po kroku jak sterować kierunkiem obrotu silnika prądu stałego przy użyciu Arduino.
Dzisiaj podzielę się z Wami moją wiedzą na temat tego, jak zrobić prosty program do sterowania kierunkiem obrotu silnika prądu stałego (DC motor) za pomocą Arduino. Z angielskiego, DC jest w zasadzie skrótem od direct current (prąd stały).
Silnik prądu stałego jest powszechnie używanym silnikiem posiadającym dwa zaciski wejściowe. Jeden z nich jest dodatni, a drugi ujemny. Jeśli połączymy te zaciski z napięciem zasilania, to silnik będzie się obracał. W przypadku zmiany biegunowości silnik będzie się obracał w przeciwnym kierunku. Polecamy również zajrzeć na stronę dot. różnicy pomiędzy silnikami prądu stałego i zmiennego aby uzyskać lepsze pojęcie o tych silnikach.
Silnik prądu stałego ma wiele zastosowań. Można go używać w projektach automatyzacji, do sterowania robotami statycznymi jak i mobilnymi, w systemach transportowych, w pompach, wentylatorach, kręgielniach oraz do zastosowań przemysłowych. W tym poradniku, przedstawię sterowanie kierunkiem obrotu silnika prądu stałego przy użyciu Arduino i kontrolera silnika L298. Ponadto, użyłem również wyświetlacza ciekłokrystalicznego (LCD), który będzie pokazywał nam status naszego silnika prądu stałego, tj. czy porusza się on w kierunku zgodnym czy przeciwnym do ruchu wskazówek zegara. W moim późniejszym poradniku będę sterował tym samym silnikiem prądu stałego używając NI LabVIEW 2015 i MATLAB. Dodałem następny poradnik do tego projektu, w którym zająłem się sterowanie kierunkiem obrotu silnika prądu stałego w MATLABie, więc w tym projekcie użyłem tego samego sprzętu, ale zamiast sterować nim z Arduino, sterowałem nim używając MATLABa. Polecam zatem zajrzeć do tego poradnika.
Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino
W tym poradniku wykonam prosty program do sterowania kierunkiem obrotu silnika prądu stałego za pomocą Arduino. Arduino jest w zasadzie niesamowitym mikrokontrolerem i jest bardzo łatwy w użyciu, ponieważ jest to urządzenie open source. Jest to więc urządzenie przyjazne studentom. Można również pisać programy dla Arduino w różnych celach. Arduino jest także urządzeniem ekonomicznym, w porównaniu do innych mikrokontrolerów np. Raspberyy Pi, NI-myRIO, Galileo, single board RIO itp. Przede wszystkim przygotowałem sobie kompletną konfigurację sprzętową. Następnie stworzyłem program i połączyłem go ze sprzętem. Poniżej omówimy szczegółowo wszystkie kroki. Logika jest dość prosta, tzn. Arduino musi wysyłać komendy do sterownika silnika L298, a następnie L298 decyduje o sterowaniu kierunkiem obrotu silnika prądu stałego poprzez manipulowanie komendami Arduino. Zanim przejdę do szczegółów, chciałbym przedstawić listę wymaganych komponentów.
Uwaga: Jeśli pracujemy nad silnikiem prądu stałego, powinniśmy również spojrzeć na te symulacje Proteusa:
Regulacja prędkości silnika prądu stałego za pomocą mikrokontrolera PIC.
Sterowanie prędkością silnika prądu stałego za pomocą Arduino w Proteus ISIS.
Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino w Proteus ISIS.
Lista i opis komponentów
Tak więc, teraz indywidualnie omówmy główne komponenty dla tego projektu, aby mieć lepszy pojęcie, dlaczego są one używane w sterowaniu kierunkiem obrotu silnika prądu stałego przy użyciu Arduino:
Arduino UNO
Arduino UNO jest w zasadzie podstawą naszego projektu sterowania kierunkiem obrotu silnika prądu stałego. Kontroluje i prowadzi cały projekt. W tym projekcie Arduino odczytuje komendy z portu szeregowego i wysyła je do układu scalonego kontrolera silnika L298 w celu sterowania kierunkiem obrotów motoru prądu stałego. Zatem, Arduino ma ogólną kontrolę nad całym projektem.
Sterownik silnika L298
Sterownik silnika służy do sterowania kierunkiem obrotów motoru prądu stałego. Składa się on z układu scalonego sterownika silnika L298, który jest w stanie obracać motorem zarówno w kierunku zgodnym, jak i przeciwnym do ruchu wskazówek zegara poprzez przełączanie jego pinów z HIGH na LOW i odwrotnie. Ponadto do zasilania potrzebuje +12 V, GND i +5 V. Zaprojektujemy więc regulator napięcia, który będzie obniżał napięcie 12 V do 5 V. Przyjrzyjmy się więc temu sterownikowi napięcia w następnej części.
Regulator napięcia
Regulator napięcia jest również częścią tego projektu. W naszym codziennym życiu musimy zwiększać lub zmniejszać napięcie w zależności od potrzeb. Wymagania różnią się w zależności od przeznaczenia. Małe elementy elektroniczne, takie jak mikrokontroler, LED, LCD itp. Tak więc głównym zadaniem regulatora napięcia jest obniżenie napięcia z 12 V do zaledwie 5 V w celu spełnienia wymagań komponentów elektronicznych. Zamiast regulatora napięcia można również zastosować transformator obniżający napięcie. Ze względu na ogromny rozmiar, jak i koszt, wolimy zastosować regulator napięcia.
Poleca się przeczytać tekst opisujący jak zaprojektować zasilacz 5 V w Proteusie aby uzyskać lepsze pojęcie o tym regulatorze napięcia. Schemat obwodu zaprojektowanego regulatora napięcia przedstawiono na poniższym rysunku.
Silnik prądu stałego
Silnik prądu stałego jest istotną częścią różnych projektów i naszego codziennego życia. Na przykład, jeśli chcemy zautomatyzować drzwi do naszego domu, tj. jeśli chcemy otworzyć i zamknąć drzwi automatycznie poprzez wykrycie osoby, silnik odegra w tym istotną rolę. Podobnie w robotyce, odkurzaczach, dmuchawach i klimatyzatorach, silnik prądu stałego ma szeroki zakres zastosowań.
LED służy do pokazania, czy zaprojektowany układ działa poprawnie, czy nie. Podobnie jak w telefonach komórkowych i laptopach, gdy podłączamy ładowarkę, pokazuje ona wskaźnik ładowania. Tak więc, musimy mieć jakieś potwierdzenie, że wszystko idzie dobrze i obwód działa prawidłowo.
Przewody/zworki
Przewody i zworki służą do wykonania połączeń pomiędzy wszystkimi komponentami. Użyjemy krótkich kawałków przewodów, aby nadać lepszy wygląd zaprojektowanemu układowi. Jeśli używamy dłuższych przewodów do połączeń, będzie to niepotrzebną komplikacją i stworzy wiele problemów podczas pracy obwodów.
Zasilanie
Jako główne źródło zasilania używany jest zasilacz 12 V. Jak wiadomo, do działania jakichkolwiek elementów elektronicznych lub urządzeń elektronicznych potrzebujemy głównego źródła zasilania. Zasilanie może się różnić w zależności od poboru mocy przez urządzenia elektroniczne. Tutaj używamy zasilacza prądu stałego 12 V, ponieważ jest to mały i prosty projekt o minimalnym zapotrzebowaniu na moc.
LCD 20×4
LCD służy do wizualizacji komend wysyłanych do portu szeregowego. W zasadzie wyświetla nam, jaka funkcja jest wykonywana w danym momencie. Używany jest tu LCD 20×4, który jest pokazany na poniższym zdjęciu. Jeśli nie pracowaliśmy wcześniej z LCD, to powinniśmy zajrzeć do projektowania obwodu LCD z Arduino w Proteus ISIS.
Montaż komponentów
Oto kilka kroków podczas projektowania tego sterowania kierunkiem obrotu silnika prądu stałego za pomocą Arduino:
- Podłączamy zaciski silnika prądu stałego do pinów wyjściowych (OUT1 oraz OUT2) sterownika silnika L298.
- Podłączamy pin sterownika silnika L298 IN1 i IN2 odpowiednio do pinu Arduino UNO 2 i 5.
- Teraz, podłączmy pin ENA sterownika silnika L298 do pinu 9 Arduino.
- Podłączamy zasilanie, aby włączyć obwód.
- Upewnijmy się, że mamy prawidłowo podłączone zasilanie 12 V, 5 V oraz GND do sterownika silnika L298.
Schemat obwodu
Schemat pełnego montażu
Projektowanie kodu Arduino
Po poprawnym wykonaniu wszystkich połączeń, otwieramt kod źródłowy Arduino. Jeśli używamy Arduino po raz pierwszy, powinniśmy zajrzeć na stronę dot. instalacji sterownika Arduino w Windows.
Podłączamy płytkę Arduino do komputera i przechodzimy do Wyszukaj –> Menedżer Urządzeń, jak pokazano na poniższym rysunku.
Wybieramy menedżer urządzeń i możemy zobaczyć różne opcje, takie jak baterie, radia bluetooth, klawiatury, monitory, porty itp.
Otwieramy Porty (COM i LPT) jak pokazano na poniższym zrzucie ekranu.
Widzimy port COM obsługiwany przez płytkę Arduino, w tym przypadku COM5.
Teraz otwieramy oprogramowanie Arduino i przechodzimy do Narzędzi i wybieramy odpowiednio płytkę Arduino oraz port COM.
Opis jest przedstawiony na poniższym zrzucie ekranu.
Wystarczy skopiować i wkleić kod źródłowy podany poniżej.
#include <LiquidCrystal.h>
//Keyboard Controls:
//
// C - Clockwise
// S - Stop
// A - Anti-clockwise
// Declare L298N Controller pins
// Motor 1
int dir1PinA = 2;
int dir2PinA = 5;
int speedPinA = 7; // PWM control
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
void setup() {
Serial.begin(9600); // baud rate
lcd.begin(20, 4);
lcd.setCursor(5,0);
lcd.print("DC Motor");
lcd.setCursor(5,1);
lcd.print("Direction");
lcd.setCursor(5,2);
lcd.print("Control");
lcd.setCursor(2,3);
lcd.print("via Arduino UNO");
//Define L298N Dual H-Bridge Motor Controller Pins
pinMode(dir1PinA,OUTPUT);
pinMode(dir2PinA,OUTPUT);
pinMode(speedPinA,OUTPUT);
}
void loop() {
// Initialize the Serial interface:
if (Serial.available() > 0) {
int inByte = Serial.read();
int speed; // Local variable
switch (inByte) {
case 'C': // Clockwise rotation
analogWrite(speedPinA, 255);//Sets speed variable via PWM
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, HIGH);
Serial.println("Clockwise rotation"); // Prints out “Motor 1 Forward” on the serial monitor
Serial.println(" "); // Creates a blank line printed on the serial monitor
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Clockwise rotation");
break;
case 'S': // No rotation
analogWrite(speedPinA, 0); // 0 PWM (Speed)
digitalWrite(dir1PinA, LOW);
digitalWrite(dir2PinA, LOW);
Serial.println("No rotation");
Serial.println(" ");
//lcd.clear();
lcd.setCursor(5,1);
lcd.print("No rotation");
break;
case 'A': // Anti-clockwise rotation
analogWrite(speedPinA, 255); // Maximum PWM (speed)
digitalWrite(dir1PinA, HIGH);
digitalWrite(dir2PinA, LOW);
Serial.println("Anti-clockwise rotation");
Serial.println(" ");
//lcd.clear();
lcd.setCursor(3,2);
lcd.print("Anti-clockwise");
break;
default:
// Turn off the motor if any other key is being pressed
for (int thisPin = 2; thisPin < 11; thisPin++) {
digitalWrite(thisPin, LOW);
}
Serial.println("Wrong key is pressed");
//lcd.clear();
lcd.setCursor(0,3);
lcd.print("Wrong key is pressed");
}
}
}
Teraz załadujmy kod źródłowy na płytkę Arduino UNO, jak pokazano poniżej.
Na powyższym rysunku widać, że kod źródłowy jest wgrywany do płytki Arduino.
Komunikat Done uploading (Załadowanie zakończone) pokazuje, że kod źródłowy został pomyślnie załadowany na płytkę Arduino.
Teraz przechodzimy do Monitora szeregowego w prawym górnym rogu oprogramowania Arduino.
Naciskamy C. Możemy zobaczyć, że silnik prądu stałego obraca się w kierunku zgodnym z ruchem wskazówek zegara, a komunikat Obrót w kierunku zgodnym z ruchem wskazówek zegara zostanie wyświetlone na Monitorze szeregowym.
Teraz należy nacisnąć S. Silnik prądu stałego zatrzyma się, a na monitorze szeregowym pojawi się komunikat Brak obrotu.
Jeśli chcemy obracać silnik prądu stałego w kierunku przeciwnym do ruchu wskazówek zegara, naciskamy A. Na monitorze szeregowym pojawi się wtedy komunikat Obrót w kierunku przeciwnym do ruchu wskazówek zegara.
Stworzyłem logikę w taki sposób, że jeśli naciśniemy któryś z pozostałych przycisków, silnik prądu stałego zatrzyma się w odpowiedzi, a na monitorze szeregowym zostanie wyświetlony komunikat Wciśnięto niewłaściwy klawisz.
Wszystkie powyższe kroki zostały przedstawione na poniższym rysunku.
Testy końcowe sterowania kierunkiem obrotu silnika prądu stałego przy użyciu Arduino
Poniżej pokazane jest zdjęcie rzeczywistego układu do sterowania kierunkiem obrotu silnika prądu stałego przy użyciu Arduino.
Na powyższym zdjęciu widać, że podłączyliśmy płytkę Arduino UNO ze sterownikiem silnika L298, a następnie podłączyliśmy silnik prądu stałego z Arduino UNO i LCD. Ten ostatni używany jest do pokazywania bieżącego ruchu silnika.
Ponadto zaprojektowaliśmy również mały układ, który wspomniałem powyżej i nazwałem regulatorem napięcia. Jest on używany do obniżenia napięcia z 12 V do 5 V.
To już wszystko w kwestii poradnika sterowania kierunkiem obrotu silnika prądu stałego za pomocą Arduino. Mam nadzieję, że ten poradnik się wam podobał. W moich następnych poradnikach, będę łączył ten projekt z LabView i MATLABem. W wypadku napotkania jakichkolwiek problemów, można mnie w każdej chwili bez wahania pytać.