Jak wspomniano wcześniej, Arduino Due to płyta oparta na kontrolerze ARM przeznaczona dla inżynierów elektroników i hobbystów. Ta płyta DUE może być używana do wykonywania maszyn CNC, drukarek 3D, ramion robotów itp. Wszystkie te projekty mają wspólną cechę, jaką jest kontrola pozycji. Każdy z tych projektów wymaga dokładności w odniesieniu do ich pozycji. Dokładne pozycje w tych maszynach można uzyskać za pomocą serwomotorów. W tej sesji będziemy kontrolować położenie serwomotoru za pomocą Arduino Due. Omówiliśmy już połączenie serwomotoru z Arduino Uno i połączenie serwomotoru z mikrokontrolerem 8051.
Serwomotory:
Serwomotory są znane z dokładnego ruchu lub położenia wału. Nie są one proponowane do zastosowań o dużej szybkości. Są one proponowane do zastosowań z małą prędkością, średnim momentem obrotowym i dokładnym położeniem. Silniki te są używane w robotycznych maszynach, układach sterowania lotem i systemach sterowania. Serwomotory są również używane w niektórych drukarkach i faksach.
Serwomotory są dostępne w różnych kształtach i rozmiarach. W tym samouczku będziemy używać serwomotoru SG90. SG90 to silnik serwo o 180 stopniach. Więc za pomocą tego serwa możemy ustawić oś od 0 do 180 stopni.
Silnik serwo ma głównie trzy przewody, jeden służy do napięcia dodatniego, drugi do masy, a ostatni do ustawiania położenia. Przewód CZERWONY jest podłączony do zasilania, przewód brązowy jest podłączony do masy, a przewód ŻÓŁTY (lub BIAŁY) jest podłączony do sygnału.
Silnik serwo to połączenie silnika prądu stałego, systemu kontroli położenia i przekładni. W serwo mamy układ sterowania, który pobiera sygnał PWM z pinu sygnałowego. Dekoduje sygnał i pobiera z niego współczynnik wypełnienia. Następnie porównuje stosunek z predefiniowanymi wartościami pozycji. Jeśli występuje różnica w wartościach, odpowiednio dostosowuje pozycję serwomechanizmu. Zatem pozycja osi serwomotoru jest oparta na współczynniku wypełnienia sygnału PWM do pinu SIGNAL.
Częstotliwość sygnału PWM (modulowana szerokością impulsu) może się różnić w zależności od typu serwomotoru. Ważną rzeczą jest tutaj DUTY RATIO sygnału PWM. Sprawdź to dla PWM z Arduino Due. Jednak w tym przypadku nie musimy się nawet martwić o wybór współczynnika obciążenia. W Arduino mamy specjalną funkcję; wywołując go, możemy wyregulować położenie serwomechanizmu, po prostu podając kąt. Porozmawiamy o tym w sekcji roboczej poniżej.
Przed podłączeniem serwomotoru do Arduino Due, możesz przetestować swoje serwo za pomocą tego obwodu testera serwomotoru. Sprawdź również te projekty, aby sterować serwomechanizmem za pomocą czujnika elastycznego lub czujnika siły.
Składniki:
Sprzęt: Arduino Due, zasilacz (5v), silnik serwo.
Oprogramowanie: Arduino nightly, pobierz je z linku poniżej (https://www.arduino.cc/en/Main/Software)
Szczegółowe informacje na temat pobierania i instalowania tego oprogramowania można znaleźć w pierwszym samouczku Pierwsze kroki z Arduino Due.
Schemat obwodu i objaśnienie robocze:
Jak wspomniano wcześniej w ARDUINO, mamy predefiniowane biblioteki, które odpowiednio ustawią częstotliwości i współczynniki wypełnienia po wywołaniu lub dołączeniu pliku nagłówkowego. W ARDUINO musimy po prostu określić położenie serwa, które jest potrzebne, a DUE generuje odpowiedni sygnał PWM dla serwa. Rzeczy, które musimy zrobić, aby uzyskać dokładną pozycję serwomechanizmu, to:
#zawierać
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (kąt_pozycji_potrzebnej);
Plik nagłówkowy „#include
Po drugie, nazwę serwomechanizmu należy wybrać za pomocą „Servo myservo” , tutaj myservo to wybrana nazwa, więc pisząc dla pozycji będziemy używać tej nazwy, ta funkcja przydaje się, gdy mamy wiele serw do sterowania, możemy w ten sposób kontrolować aż 12 serw.
Z Arduino Ponieważ mamy 12 kanałów PWM, musimy powiedzieć DUE, gdzie jest podłączony pin sygnałowy serwomechanizmu lub gdzie ma wygenerować sygnał PWM. Aby to zrobić, mamy „myservo.attach (2);” , tutaj mówimy DUE, że podłączyliśmy pin sygnałowy serwa na PIN2.
Pozostało już tylko ustawić pozycję, zamierzamy ustawić pozycję serwomechanizmu za pomocą „ myservo.write (45);” , po tym poleceniu wskazówka serwomechanizmu porusza się o 45 stopni. Jeśli zmienimy „45” na „175”, oś serwa ustawi się pod kątem do 175 stopni i pozostanie tam. Po tym, gdy musimy zmienić pozycję serwomechanizmu, wystarczy wywołać polecenie „ myservo.write (required_position_angle);” .
W programie będziemy zwiększać i zmniejszać kąty za pomocą pętli. Więc serwo przechodzi od 0 do 180, potem od 180 do 0 i tak dalej. Sterowanie serwomotorem przez Arduino Due najlepiej wyjaśnić krok po kroku w kodzie C poniżej.