Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino

Kompletny poradnik, pokazujący krok po kroku jak sterować kierunkiem obrotu silnika prądu stałego przy użyciu Arduino.
Article Image
1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści

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.

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ć.

Do pobrania
Download icon Kod do sterowania kierunkiem obrotu silnika prądu stałego za pomocą Arduino

Artykuł DC Motor Direction Control using Arduino opracowano w wersji polskiej na podstawie współpracy z portalem www.theengineeringprojects.com.

1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści
Tematyka materiału: Kurs Arduino, pierwsze kroki, Projekty Arduino, L298, Sterowanie silnikiem
AUTOR
Źródło
www.theengineeringprojects.com
Udostępnij
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"