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.

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.

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.

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

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.

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.

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.

Tak wygląda zestaw mojego stanowiska laboratoryjnego:

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.

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.

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.

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.

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

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.

Oto przykład kodu, którego użyłem do eksperymentów z serwonapędem, znajduje się w standardowym zestawie przykładów:
#include
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

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 electro-pl.tomathouse.com
: