Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino

Article Image
Kompletny poradnik, pokazujący krok po kroku jak sterować kierunkiem obrotu silnika krokowego przy użyciu Arduino.
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

Dzisiaj opiszę wam, jak można stworzyć prosty algorytm służący do sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino. W moich poprzednich poradnikach stworzyłem algorytm do sterowania kierunkiem obrotu silnika prądu stałego za pomocą Arduino, sterowania kierunkiem silnika prądu stałego przy użyciu Matlaba, kontroli prędkości obrotu silnika prądu stałego przy użyciu Arduino oraz sterowania prędkością silnika prądu stałego przy użyciu Matlab. W tym poradniku będę sterował silnikiem krokowym za pomocą Arduino, wprowadzając różne komendy przez port szeregowy.

Zanim przejdziemy do szczegółów tego poradnika, musimy znać podstawową różnicę pomiędzy silnikami krokowymi a silnikami prądu stałego. Silniki prądu stałego mają tylko dwa zaciski wejściowe – jeden jest dodatni, a drugi ujemny. Musimy tylko dostarczyć zasilanie i zacznie się obracać. Nie dzieje się tak jednak w przypadku silnika krokowego. Silnik krokowy, którego będziemy używać w tym poradniku, posiada sześć pinów, z których cztery dostarczają impulsy lub kroki, a pozostałe dwa są pinami zasilania. Tak więc, w tym poradniku będziemy kontrolować wspomniany sześciopinowy silnik krokowy przy użyciu kontrolera silnika L298 i płytki Arduino UNO. Zasadniczo możemy użyć silnika krokowego tam, gdzie wymagana jest precyzja. Silnik krokowy ma szeroki zakres zastosowań np. w robotyce, maszynach CNC, automatyce domowej itp. Najprościej mówiąc, możemy powiedzieć, że silnik krokowy może być stosowany tam, gdzie istnieje potrzeba poruszania się o określony kąt. Zacznijmy więc od sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino:

Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino

W tym poradniku dowiemy się jak stworzyć program do sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino poprzez wysyłanie różnych komend z portu szeregowego. Na początek podzielę się listą komponentów użytych do tego mini projektu.

Chcę opowiedzieć trochę o silniku krokowym, ponieważ wszystkie inne komponenty zostały już szczegółowo omówione w sterowaniu kierunkiem obrotów silnika prądu stałego za pomocą Arduino.

Silnik krokowy

Zasadniczo, silniki krokowe są jak silniki prądu stałego, które obracają się w dyskretnych krokach. Mają one ułożonych wiele cewek, które są zwykle znane jako fazy. Silnik będzie się obracał krok po kroku, jeśli zasilimy każdą z faz po kolei.

Wysoki poziom precyzji można osiągnąć poprzez sterowanie silnikiem krokowym za pomocą komputera. Silniki krokowe dostępne są na rynku w wielu różnych rozmiarach. Prędkość silnika krokowego jest kontrolowana przez częstotliwość generowanych impulsów. Mają one szeroki zakres zastosowań, takich jak dyski twarde, robotyka, teleskopy, anteny, zabawki itp. Na poniższym zdjęciu pokazany jest sześcioprzewodowy silnik krokowy.

Zaprojektowałem obwód napędu silnika krokowego przy użyciu Proteus ISIS. Zrzut ekranu z oprogramowania jest pokazany na poniższym rysunku.

Można pobrać kompletny kod źródłowy dla sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino - link na końcu artykułu.

Dobór przewodów

Użyłem sześcioprzewodowego silnika krokowy. Każdy przewód ma swoją własną funkcję.

Najpierw podzieliłem te sześć przewodów na dwie pary.

Każda para składa się z trzech przewodów, z których jeden jest wspólny, a dwa pozostałe generują impulsy.

Dwie pary trzech przewodów pokazane są na poniższym zdjęciu.

Następnie w każdej parze wybrałem wspólny przewód, z którego rezystancja dla pozostałych dwóch przewodów jest wspólna.

Sprawdziłem rezystancję od przewodu wspólnego do obu pozostałych przewodów tej samej pary.

Stwierdziłem, że opór od przewodu wspólnego do obu pozostałych przewodów jest taki sam.

Na powyższym rysunku widzimy, że niebieski, różowy oraz biały należą do tej samej pary, z której biały jest przewodem wspólnym.

Na poniższym zdjęciu pokazane jest jak znalazłem opór pomiędzy białym a niebieskim przewodem i okazało się, że wynosi on 8,0 Ω.

Opisane powyżej czynności są przedstawione na poniższym zdjęciu.

Następnie sprawdziłem rezystancję pomiędzy białym a różowym przewodem i okazało się, że wynosi ona 8,1 czyli prawie tyle samo co 8,0 więc pokazuje to, że biały przewód jest wspólny dla przewodu niebieskiego i różowego.

Poniżej znajduje się zdjęcie przedstawiające powyższy krok.

Następnie znalazłem opór pomiędzy różowym a niebieskim przewodem i wynosił on 15,6, czyli dokładnie dwukrotność wcześniejszej rezystancji.

Jest to pokazane na poniższym zdjęciu.

Połączyłem oba wspólne przewody, jak pokazano na fotografii poniżej.

Oto film, w którym w szczegółach omówiłem jak zidentyfikować przewody silnika krokowego:

Pozostałe cztery przewody służą do generowania impulsów, które nazywane są również krokami

Podłączyłem te cztery przewody do pinów wyjściowych OUT1, OUT2, OUT3 oraz OUT4 mikrokontrolera L298.

Piny wejściowe mikrokontrolera L298 In1, In2, In3 oraz In4 są podłączone do pinów nr 7, 6, 5 oraz 4 płytki Arduino UNO.

Uwaga: Sterowałem również silnikiem krokowym za pomocą mikrokontrolera PIC, więc sugerowałbym wszystkim, aby najpierw zapoznać się z tamtym poradnikiem zanim przejdziemy do szczegółów tego poradnika.

Sterowanie silnikiem krokowym za pomocą mikrokontrolera PIC

Schemat blokowy

Zrobiłem prosty schemat blokowy dla sterowania kierunkiem obrotów silnika krokowego za pomocą Arduino, który będzie pomocny w jasnym zrozumieniu algorytmu i montażu elementów sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino.

Rzeczony schemat blokowy jest przedstawiony na poniższym rysunku.

Przede wszystkim, do poprawnego działania projektu potrzebujemy zasilacza.

Arduino odczytuje komendy z portu szeregowego i wysyła do sterownika silnika L298, aby obrócić silnik krokowy.

Komendy są wyświetlane na wyświetlaczu ciekłokrystalicznym (LCD – Liquid Crystal Display).

Opis kodu źródłowego Arduino

Poniżej podana jest główna funkcja sterowania kierunkiem silnika krokowego za pomocą Arduino.

#include <LiquidCrystal.h>//Biblioteka dla LCD
#include <Stepper.h> //Biblioteka dla silnika krokowego

const int stepsPerRevolution = 255;  

// Inicjalizacja biblioteki silnika krokowego na pinach
Stepper myStepper(stepsPerRevolution, 4, 5, 6, 7);
char data;
//Przypisanie pinów LCD
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
void setup() {
  // ustawić prędkość obrotową na 60 obr
  myStepper.setSpeed(60);
  // inicjalizacja portu szeregowego:
  Serial.begin(9600);

lcd.begin(20, 4);//Typ LCD

lcd.setCursor(3,0);//ustawienie kursora LCD i wyświetlanie na nim
lcd.print("Stepper Motor");
lcd.setCursor(5,1);
lcd.print("Direction");
lcd.setCursor(5,2);
lcd.print("Control");
lcd.setCursor(2,3);
lcd.print("via Arduino UNO");

delay(3000);

lcd.clear ();//Wyczyszczenie ekranu LCD

lcd.setCursor(0,2);
lcd.print("www.TheEngineering");
lcd.setCursor(4,3);
lcd.print("Projects.com");
}

void loop() {
  if(Serial.available())
  {
    data = Serial.read(); //Odczyt danych z portu szeregowego
  }
  
    if(data == 'C'){Clockwise();}//Obrót zgodny z ruchem wskazówek zegara
    if(data == 'A'){AntiClockwise();}//Obrót przeciwny do ruchu wskazówek zegara
    if(data == 'S')//zatrzymanie silnika krokowego
    {
      data = 0; 
      lcd.setCursor(3,0);
      lcd.print("No rotation");}
    
}

W kodzie podanym powyżej najpierw zainicjalizowaliśmy biblioteki LCD i silnika krokowego.

Następnie przypisałem silnikowi krokowemu piny, którymi jest on podłączony do Arduino.

Następnie zainicjalizowałem piny LCD, którymi jest on podłączony do Arduino UNO.

Następnie stworzyłem trzy różne wyrażenia if , C dla obrotu zgodnego z ruchem wskazówek zegara, A dla obrotu przeciwnego do ruchu wskazówek zegara i S dla braku obrotu.

Następnie, w pętli wywołałem funkcje clockwise i anticlockwise (zgodnie z i przeciwnie do ruchu wskazówek zegara), których kod źródłowy podam i wyjaśnię poniżej.

Następnie wyczyściłem dane szeregowe, aby zatrzymać obrót silnika.

Kod źródłowy funkcji clockwise (zgodnie z ruchem wskazówek zegara) jest podany poniżej.

void Clockwise()//funkcja do obrotu zgodnie z ruchem wskazówek zegara
{
    Serial.println("clockwise"); //wyświetlanie na porcie szeregowym
    Serial.println("”);//wyświetli pustą linię na porcie szeregowym
    myStepper.step(stepsPerRevolution);//obrót w kierunku przeciwnym do ruchu wskazówek zegara
    lcd.setCursor(3,0);//ustawienie kursora LCD
    lcd.print("Clockwise"); //wyświetlanie na LCD
}

Kod źródłowy funkcji anticlockwise (przeciwnie do ruchu wskazówek zegara) jest podany poniżej.

void AntiClockwise()//funkcja do obrotu przeciwnego do ruchu wskazówek zegara
{
  Serial.println("anti-clockwise");//wyświetl na porcie szeregowym
  Serial.println("");//wyświetla pustą linię na serialu
  myStepper.step(-stepsPerRevolution);//ruch w kierunku zgodnym z ruchem wskazówek zegara
  lcd.setCursor(3,0);//ustawienie kursora LCD
  lcd.print("Anti-clockwise");//wyświetlanie na LCD
}

Teraz otwórzmy oprogramowanie Arduino i po prostu skopiujmy i wklejmy kod źródłowy podany powyżej.

Uruchomimy program i otworzymy Port szeregowy w prawym górnym rogu oprogramowania Arduino.

Teraz, gdy wpiszemy komendę C silnik krokowy zacznie pracować w kierunku zgodnym z ruchem wskazówek zegara.

Jeśli wyślemy komendę A przez port szeregowy, silnik krokowy zacznie się obracać w kierunku przeciwnym do ruchu wskazówek zegara.

Po wysłaniu komendy S obroty silnika krokowego zostaną zatrzymane.

Faktyczna konfiguracja sprzętu

Faktyczna konfiguracja sprzętowa do sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino jest przedstawiona na poniższym zdjęciu:

Teraz, jeśli wyślemy komendę C przez port szeregowy, silnik krokowy zacznie się obracać w kierunku zgodnym z ruchem wskazówek zegara, a polecenie to zostanie również wyświetlone na LCD.

Na poniższym zdjęciu jest pokazana komenda wyświetlona na LCD.

Teraz, jeśli wyślemy komendę A przez port szeregowy, silnik krokowy zacznie się obracać w kierunku przeciwnym do ruchu wskazówek zegara, a polecenie to zostanie również wyświetlone na LCD.

Na poniższym zdjęciu jest pokazana komenda wyświetlona na LCD.

Teraz, jeśli wyślemy komendę S przez port szeregowy, silnik krokowy nie będzie się już obracał, a polecenie zostanie również wyświetlone na LCD.

Na poniższym zdjęciu jest pokazana komenda wyświetlona na LCD.

Oto kompletna demonstracja wideo sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino. Mam nadzieję, że będzie pomocna:

To wszystko jeśli chodzi o poradnik sterowania kierunkiem obrotu silnika krokowego za pomocą Arduino. Mam nadzieję, że poradnik się podobał. W wypadku napotkania jakichkolwiek problemów, można mnie w każdej chwili bez wahania pytać.

Postaram się jak najlepiej rozwiązać nadsyłane problemy, w lepszy sposób, jeśli to możliwe. Będę poznawał Arduino poprzez tworzenie na nim różnych projektów.

Do pobrania
Download icon Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino - kody źródłowe

Artykuł Stepper 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
Firma:
Tematyka materiału: Kurs Arduino, pierwsze kroki, Projekty Arduino, L298, Sterowanie silnikiem krokowym, PWM, mostek H
AUTOR
Źródło
www.theengineeringprojects.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"