Kategorie: Obwody mikrokontrolera
Liczba wyświetleń: 19709
Komentarze do artykułu: 0

Sterowanie silnikiem i serwomechanizmem za pomocą Arduino

 

W prostych projektach systemów automatyki często konieczne jest nie tylko odczytanie odczytów czujników, ale także uruchomienie mechanizmów ruchu. W tym celu stosuje się różne silniki elektryczne. Najprostszą i najpopularniejszą opcją jest silnik prądu stałego. Zdobył miłość kochanków swoją dostępnością, łatwością regulacji prędkości. Jeśli zadaniem jest przesunięcie dowolnego mechanizmu o zadany kąt lub odległość, wygodnie jest użyć serwonapędu lub silnika krokowego.

W tym artykule przyglądamy się serwomechanizmom i małym silnikom prądu stałego, łącząc je z płytą Arduino i regulując DCT.

Sterowanie silnikiem i serwomechanizmem za pomocą Arduino

Silnik prądu stałego

Najczęstszy silnik elektryczny stosowany w urządzeniach przenośnych, zabawkach, modelach sterowanych radiowo i innych urządzeniach. Magnesy trwałe są zamocowane na małym silniku elektrycznym na stojanie, a uzwojenie na wirniku.

Silnik prądu stałego

Prąd jest dostarczany do uzwojenia przez zespół szczotki. Szczotki są wykonane z grafitu, czasem można znaleźć miedziane styki ślizgowe. Szczotki ślizgają się po lamelach znajdujących się na jednym końcu wirnika. Jeśli nie wejdziesz w szczegóły, jego prędkość obrotowa zależy od prądu uzwojenia twornika.

Kotwica silnika kolektora

W dużych silnikach prądu stałego na stojanie znajduje się uzwojenie wzbudzenia połączone z uzwojeniem wirnika (przez zespół szczotki) w określony sposób (wzbudzanie sekwencyjne, równoległe lub mieszane). W ten sposób osiągany jest pożądany moment obrotowy i liczba obrotów.


Kontrola prędkości

Elektryczny silnik prądu stałego

Po podłączeniu do sieci silnik prądu stałego zaczyna obracać się z prędkością znamionową. Aby zmniejszyć prędkość, musisz ograniczyć prąd. Aby to zrobić, wprowadza się rezystory balastowe, ale zmniejsza to efektywność instalacji jako całości i pojawia się nadmiar źródła ciepła. Aby skuteczniej regulować napięcie i prąd, stosuje się inną metodę - Kontrola PWM.

Kontrola PWM

Metodą sterowania sygnałem modulowanym szerokością impulsu (napięcie) jest generowanie pożądanej wartości napięcia poprzez zmianę szerokości impulsu, przy stałym czasie trwania okresu (częstotliwości).

Oznacza to, że okres jest podzielony na dwie części:

1. Czas impulsu.

2. Czas pauzy.

Stosunek czasu impulsu do całkowitego czasu okresu nazywa się cyklem roboczym:

Ks = ti / tper

odwrotność nazywa się „cyklem roboczym”:

D = 1 / KZ = tper / ti

Aby opisać tryb pracy sterownika PWM, stosuje się obie koncepcje: zarówno cykl roboczy, jak i cykl roboczy.

Pobór prądu silnika zależy od jego mocy. Liczba obrotów, jak powiedziano, zależy od prądu. Prąd można regulować, zmieniając wielkość napięcia przykładanego do uzwojenia. W rzeczywistości, gdy jest zasilany napięciem, które przekracza wartość nominalną zgodnie z paszportem silnika, jego prędkość będzie również przekraczać prędkość nominalną. Jednak takie tryby pracy są niebezpieczne dla silnika, ponieważ w uzwojeniach płynie większy prąd, co powoduje ich zwiększone nagrzewanie.

Jeśli uszkodzenie silnika na skutek krótkotrwałych impulsów lub powtarzających się krótkotrwałych trybów pracy jest minimalne, wówczas podczas długotrwałej pracy przy podwyższonym napięciu i prędkości, wypali się lub jego łożyska nagrzeją się i zaklinują, a następnie uzwojenia wypalą się, jeśli zasilanie nie zostanie odłączone.

Jeśli napięcie wejściowe jest zbyt niskie, mały silnik może po prostu nie mieć wystarczającej mocy, aby się poruszać. Dlatego konieczne jest eksperymentalne ustalenie normalnej prędkości i napięcia dla konkretnego silnika nieprzekraczającego wartości znamionowej.


Łączymy się z arduino

Miałem mały silnik, wydaje się, że z odtwarzacza kasetowego, co oznacza, że ​​jego napięcie znamionowe będzie niższe niż 5 woltów, wtedy wystarczy moc wyjściowa arduino. Zasilę go z pinu 5V, tj. z wyjścia stabilizatora liniowego umieszczonego na płycie. Zgodnie ze schematem, który widzisz poniżej.

Nie znam prądu tego silnika, więc podłączyłem go do zasilania i zainstalowałem tranzystor polowy między silnikiem a stykiem zasilającym, na którego bramce zastosowano sygnał z wyjścia PWM, można użyć dowolnego z dostępnych.

Schemat podłączenia silnika prądu stałego Arduino

Aby wyregulować prędkość, do obwodu dodałem rezystor zmienny, podłączając go do wejścia analogowego A0. Do szybkiego połączenia użyłem płyty lutowniczej bez lutowania, która jest również nazywana płytą chlebową.

Zainstalowałem rezystor ograniczający prąd w okablowaniu tranzystora (aby zmniejszyć prąd ładowania bramki, uratuje to port przed spalaniem, a zasilanie mikrokontrolera od osiadania i jego zamrożenia) o 240 Ohm, i pociągnąłem go do ziemi za pomocą rezystora 12 kOhm, należy to zrobić, aby był bardziej stabilny zbiornik migawki pracował i rozładowywał się szybciej.

Szczegółowy opis tranzystorów polowych w artykule na naszej stronie internetowej. Użyłem potężnego, wspólnego i niezbyt drogiego mosfetu z n-kanałem i wbudowaną diodą zwrotną IRF840.

Wykonanie i zdefiniowanie części obwodu

Tak wygląda zestaw mojego stanowiska laboratoryjnego:

Silnik prądu stałego i arduino

Funkcja sterowania PWM jest wywoływana przy zapisie do odpowiednich wartości wyjściowych (3, 5, 6, 9, 10, 11) od 0 do 255 za pomocą polecenia AnalogWrite (pin, wartość). Logikę jej pracy przedstawiono na poniższych wykresach.

Funkcja sterowania PWM

Taki sygnał jest podawany do bramki tranzystora:

Taki sygnał jest podawany do bramki tranzystora

Kod programu hańby jest krótki i prosty, szczegółowo wszystkie te funkcje zostały opisane w poprzednich artykułach o arduino.

int sensorPin = A0; // wejście z potencjometru

int motorPin = 3; // Wyjście PWM do bramki kamery

void setup () {

pinMode (motorPin, OUTPUT);

}

void loop () {

analogWrite (motorPin, mapa (analogRead (sensorPin), 0, 1023, 0, 256));

}

W funkcji analogWrite przypisuję wartość do wyjścia PWM za pomocą polecenia map, jego użycie pozwala usunąć kilka wierszy kodu i jedną zmienną.


Jest to działający schemat i doskonale nadaje się do obserwacji procesów podczas regulacji mocy obciążenia, jasności diod LED, prędkości obrotowej silnika, wystarczy podłączyć żądane obciążenie zamiast silnika. W takim przypadku zamiast 5 V można przyłożyć dowolne napięcie do obciążenia, na przykład 12 V, nie zapomnij podłączyć ujemnej mocy do styku, na przykład 12 V, nie zapomnij podłączyć ujemnej mocy do styku GND na płycie mikrokontrolera.

W Arduino częstotliwość PWM, wywołana przez funkcję AnalogWrite, wynosi tylko 400 Hz, przy minimalnych wartościach napięcia słychać szum o odpowiedniej częstotliwości z uzwojeń silnika.

Arduino i serwo

Serwa

Silnik, który może znajdować się w ustalonej pozycji, a wystawiony na działanie czynników zewnętrznych, na przykład wymuszonego ugięcia wału, utrzymuje swoją pozycję bez zmian - nazywa się serwonapędem. Ogólnie definicja brzmi nieco inaczej:

Serwo jest silnikiem napędzanym ujemnym sprzężeniem zwrotnym.

Zazwyczaj z serwonapędu wychodzą trzy przewody:

  • Plus moc.

  • Mniejsza moc.

  • Sygnał sterujący.

Napęd serwo składa się z:

  • Silnik prądu stałego (lub silnik bezszczotkowy);

  • Opłaty za zarządzanie;

  • Czujnik położenia (enkoder do serwomechanizmów o kącie obrotu 360 ° lub potencjometr do serwomechanizmów o kącie obrotu 180 °);

  • Zmniejszenie biegów (zmniejsza prędkość obrotową silnika i zwiększa moment obrotowy na wale napędowym).

Jednostka sterująca porównuje sygnał na wbudowanym czujniku położenia i sygnał, który przeszedł przez przewód sterujący, jeśli się różnią, wówczas występuje obrót pod kątem, pod którym wyrównana jest różnica między sygnałem.

Zasada działania serwa

Główne cechy serwomechanizmów:

  • Prędkość toczenia (czas, w którym wał obraca się o kąt 60 °);

  • Moment obrotowy (kg / cm, tj. Ile kilogramów silnik może wytrzymać na dźwigni 1 cm od wału);

  • Napięcie zasilania;

  • Pobór prądu;

  • Metodą sterowania (analogową lub cyfrową nie ma znaczącej różnicy, ale cyfrowy jest szybszy i bardziej stabilny).

Zazwyczaj okres sygnału wynosi 20 ms, a czas trwania impulsu sterującego:

  • 544 μs - odpowiada 0 °;

  • 2400 μs - odpowiada kątowi 180 °.

W rzadkich przypadkach długość impulsu może się różnić, na przykład odpowiednio 760 i 1520 μs, informacje te można wyjaśnić w dokumentacji technicznej przemiennika. Jednym z najbardziej popularnych serwo hobby jest Tower Pro SG90 i podobne modele.Jest niedrogi - około 4 dolarów.

Sevroprivod dla arduino

Utrzymuje 1,8 kg / cm na wale, a wraz z nim są śruby mocujące i dźwignie z wypustami na wale. W rzeczywistości to dziecko jest dość silne i bardzo problematyczne jest zatrzymanie go jednym palcem - sam napęd zaczyna wypadać z palców - taka jest jego siła.


Sterowanie serwo i Arduino

Jak już wspomniano, kontrola odbywa się poprzez zmianę czasu trwania impulsu, ale nie należy mylić tej metody z PWM (PWM), jej poprawna nazwa to PDM (modulacja czasu trwania impulsu). Nieznaczne odchylenia w częstotliwości sygnału (20 ms - czas trwania, częstotliwość 50 Hz) nie odgrywają specjalnej roli. Ale nie odbiegaj od częstotliwości o więcej niż 10 Hz, silnik może pracować gwałtownie lub wypalić się.

Sterowanie serwo i Arduino

Podłączenie do arduino jest dość proste, możesz również zasilać napęd z pinu 5V, ale nie jest to pożądane. Faktem jest, że na początku występuje niewielki skok prądu, co może powodować spadek mocy i Fałszywe wyjścia mikrokontrolera. Chociaż 1 mały dysk (typ SG90) jest możliwy, ale nie więcej.

Aby kontrolować takie serwomechanizmy za pomocą Arduino, masz bibliotekę Servo wbudowaną w IDE, ma ona mały zestaw poleceń:

  • attach () - dodaj zmienną do pinu. Przykład: drive name.attach (9) - podłącz serwo do pinu 9. Jeśli twój napęd potrzebuje niestandardowych długości impulsów sterujących (544 i 2400 μs), możesz je określić oddzielone przecinkiem po numerze pinu, na przykład: servo.attach (pin, minimalny kąt (μs), maksymalny kąt w ISS);

  • write () - ustawia kąt obrotu wału w stopniach;

  • writeMicroseconds () - ustawia kąt długości impulsu w mikrosekundach;

  • read () - określa bieżącą pozycję wału;

  • attach () - Sprawdza, czy pin jest ustawiony z podłączonym serwomechanizmem;

  • detach () - anuluj polecenie dołączania.

Ta biblioteka pozwala kontrolować 12 serwomechanizmów z płyt UNO, Nano i podobnych (mega368 i 168), a zdolność do używania PWM na pinach 9 i 10 zanika. Jeśli masz MEGA, możesz kontrolować 48. serwery, ale PWM na pinach 11 i 12 zniknie, jeśli użyjesz do 12 serwomechanizmów, PWM pozostanie w pełni funkcjonalny na wszystkich kontaktach.

Jeśli podłączysz tę bibliotekę, nie będziesz mógł pracować z odbiornikami / nadajnikami 433 MHz. Jest do tego biblioteka Servo2, która poza tym jest identyczna.

Biblioteka Servo2

Oto przykład kodu, którego użyłem do eksperymentów z serwonapędem, znajduje się w standardowym zestawie przykładów:

#include // podłącz bibliotekę

Servo myservo; // zadeklarowana nazwa zmiennej dla serwomechanizmu myservo

int potpin = 0; // pin do podłączenia potencjometru nastawczego

int val; // zmienna, aby zapisać wyniki odczytu sygnału z potencjometru

void setup () {

myservo.attach (9); // ustaw 9 pinów jako wyjście sterujące dla serwomechanizmu

}

void loop () {

val = analogRead (potpin); // wyniki odczytu potencjometru zapisane w trans. val będą w zakresie od 0 do 1023

val = mapa (val, 0, 1023, 0, 180); // przetłumacz zakres pomiarowy z wejścia analogowego 0-1023

// w zakresie zadań dla serwomechanizmu 0-180 stopni

myservo.write (val); // przekazać konwersję sygnał z pot-ra do sterowania wejście serwo

opóźnienie (15); // potrzebne jest opóźnienie dla stabilnego działania systemu

 

Łączymy serwo z Arduino

Wniosek

Używanie najprostszych silników elektrycznych w połączeniu z arduino jest dość prostym zadaniem, a opanowanie tego materiału poszerza twoje możliwości w dziedzinie automatyki i robotyki. Najprostsze roboty lub modele samochodów sterowane radiowo składają się z takich silników, a serwa służą do kontrolowania obrotu kół.

W rozważanych przykładach zastosowano potencjometr do ustawienia kąta obrotu lub prędkości obrotowej, zamiast tego można zastosować dowolne inne źródło sygnału, na przykład może wystąpić obrót lub zmiana prędkości w wyniku informacji otrzymanych z czujników.

Przykład zastosowania serwomechanizmów w energii alternatywnej: śledzenie kąta padania światła słonecznego i regulacja położenia paneli słonecznych w elektrowniach.

Aby zaimplementować taki algorytm, możesz użyć kilku fotorezystory lub inne urządzenia optoelektroniczne do pomiaru ilości padającego światła i, w zależności od ich odczytów, ustawiają kąt obrotu panelu słonecznego.

Zobacz także na e.imadeself.com:

  • Jak serwo jest ustawione i działa
  • Arduino i silnik krokowy: podstawy, schematy, połączenia i sterowanie
  • Funkcje łączenia urządzeń z Arduino
  • Jak odróżnić silnik indukcyjny od silnika prądu stałego
  • Jak podłączyć enkoder inkrementalny do Arduino

  •