- Wymagane składniki
- Budowa ramienia robota
- Schemat obwodu i objaśnienie robocze:
- Jak obsługiwać ramię robota:
W tym samouczku zamierzamy zaprojektować ramię robota oparte na Arduino Uno z niektórych kartonów i serwomotorów. Cały proces budowy został szczegółowo wyjaśniony poniżej. W tym projekcie Arduino Uno jest zaprogramowane do sterowania serwomotorami, które służą jako przeguby ramienia robota. Ta konfiguracja wygląda również jak żuraw robotyczny lub możemy przekształcić go w dźwig, wykonując kilka prostych poprawek. Ten projekt będzie pomocny dla początkujących, którzy chcą nauczyć się opracowywać prostego robota w niskiej cenie lub po prostu chcą nauczyć się pracy z Arduino i serwomotorami.
To ramię robota Arduino może być sterowane za pomocą czterech dołączonych do niego potencjometrów, każdy potencjometr służy do sterowania każdym serwomechanizmem. Możesz przesuwać te serwomechanizmy, obracając garnki, aby wybrać jakiś przedmiot, a przy odrobinie praktyki możesz łatwo podnieść i przenieść obiekt z jednego miejsca do drugiego. Użyliśmy tutaj serw o niskim momencie obrotowym, ale możesz użyć mocniejszych serw do podnoszenia ciężkich przedmiotów. Cały proces został dobrze pokazany w wideo na końcu. Sprawdź również nasze inne projekty robotyki tutaj.
Wymagane składniki
- Arduino Uno
- Kondensator 1000uF (4 sztuki)
- Kondensator 100nF (4 sztuki)
- Silnik serwo (SG 90- cztery sztuki)
- Rezystor zmienny 10K (4 sztuki)
- Zasilanie (5 V - najlepiej dwa)
Siłownik
Najpierw porozmawiamy trochę o silnikach serwo. Serwomotory są używane głównie wtedy, gdy istnieje potrzeba dokładnego ruchu lub położenia wału. Nie są one proponowane do zastosowań o dużej szybkości. Serwomotory są proponowane do zastosowań z małą prędkością, średnim momentem obrotowym i dokładnym położeniem. Dlatego te silniki są najlepsze do projektowania ramienia robota.
Serwomotory są dostępne w różnych kształtach i rozmiarach. Będziemy używać małych serwomotorów, tutaj używamy czterech serwomechanizmów SG90. Serwomotor będzie miał głównie przewody, jeden jest przeznaczony do napięcia dodatniego, drugi do masy, a ostatni do ustawiania położenia. Przewód CZERWONY jest podłączony do zasilania, przewód czarny jest podłączony do masy, a przewód ŻÓŁTY jest podłączony do sygnału. Przejdź przez ten samouczek dotyczący sterowania serwomotorem za pomocą Arduino, aby dowiedzieć się więcej na ten temat. W Arduino mamy predefiniowane biblioteki do sterowania serwomechanizmem, więc bardzo łatwo jest sterować serwomechanizmem, czego nauczysz się wraz z tym samouczkiem.
Budowa ramienia robota
Weź płaską i stabilną powierzchnię, taką jak stół lub twarda tektura. Następnie umieść serwomotor na środku i przyklej go na miejscu. Upewnij się, że stopień obrotu znajduje się w obszarze przedstawionym na rysunku. To serwo działa jako podstawa ramienia.
Umieść mały kawałek kartonu na górze pierwszego serwomechanizmu, a następnie umieść drugie serwo na tym kawałku deski i przyklej go na miejscu. Obroty serwomechanizmu muszą być zgodne ze schematem.
Weź kilka kartonów i pokrój je na kawałki o wymiarach 3 cm x 11 cm. Upewnij się, że kawałek nie jest zmiękczony. Wytnij prostokątny otwór na jednym końcu (pozostaw 0,8 cm od dołu) na tyle, aby dopasować kolejne serwo, a na drugim końcu mocno dopasuj serwomechanizm za pomocą śrub lub kleju. Następnie umieść trzecie serwo w pierwszym otworze.
Teraz wytnij kolejny kawałek tektury o długościach pokazanych na poniższym rysunku i przyklej inną zębatkę na dole tego kawałka.
Teraz przyklej czwarty i ostatni serwo do krawędzi drugiej części, jak pokazano na rysunku.
Dzięki temu dwa kawałki razem wyglądają.
Kiedy przymocujemy ten zestaw do podstawy, powinno to wyglądać,
Prawie gotowe. Musimy tylko zrobić hak, aby chwycić i podnieść przedmiot jak robotyczna dłoń. Na haczyk wytnij kolejne dwa kawałki tektury o długości 1 cm x 7 cm i 4 cm x 5 cm. Sklej je ze sobą, jak pokazano na rysunku, i przyklej ostatnie koło zębate na samej krawędzi.
Zamontuj ten element na górze i dzięki temu zbudowaliśmy nasze ramię robota.
W ten sposób nasz podstawowy projekt ramienia robota został ukończony i tak zbudowaliśmy nasze tanie ramię robota. Teraz podłącz obwód w płytce stykowej zgodnie ze schematem obwodu.
Schemat obwodu i objaśnienie robocze:
Poniżej pokazano połączenie obwodu dla ramienia robota Arduino Uno.
Napięcie na rezystorach zmiennych nie jest całkowicie liniowe; będzie głośno. Aby odfiltrować ten szum, kondensatory są umieszczone na każdym rezystorze, jak pokazano na rysunku.
Teraz podamy napięcie dostarczane przez te zmienne rezystory (napięcie, które reprezentuje kontrolę położenia) do kanałów ADC Arduino. W tym celu wykorzystamy cztery kanały ADC UNO od A0 do A3. Po inicjalizacji ADC będziemy mieli cyfrową wartość potencjometrów reprezentujących pozycję potrzebną użytkownikowi. Przyjmiemy tę wartość i dopasujemy ją do pozycji serwomechanizmu.
Arduino ma sześć kanałów ADC. Użyliśmy czterech w naszym ramieniu robota. UNO ADC ma rozdzielczość 10 bitów, więc wartości całkowite z zakresu 0-1023 (2 ^ 10 = 1024 wartości). Oznacza to, że odwzoruje napięcia wejściowe od 0 do 5 woltów na wartości całkowite od 0 do 1023. Tak więc dla każdego (5/1024 = 4,9 mV) na jednostkę. Dowiedz się więcej o mapowaniu poziomów napięcia za pomocą kanałów ADC w Arduino tutaj.
Teraz, aby UNO konwertowało sygnał analogowy na sygnał cyfrowy, musimy użyć kanału ADC Arduino Uno, przy pomocy poniższych funkcji:
1. analogRead (pin); 2. analogReference (); 3. analogReadResolution (bity);
Kanały Arduino ADC mają domyślną wartość odniesienia 5V. Oznacza to, że możemy podać maksymalne napięcie wejściowe 5 V do konwersji ADC na dowolnym kanale wejściowym. Ponieważ niektóre czujniki dostarczają napięcia od 0-2,5 V, więc przy wartości odniesienia 5 V uzyskujemy mniejszą dokładność, więc mamy instrukcję, która pozwala nam zmienić tę wartość odniesienia. Więc do zmiany wartości odniesienia mamy „analogReference ();”
Domyślnie otrzymujemy maksymalną rozdzielczość ADC płyty, która wynosi 10 bitów, rozdzielczość tę można zmienić za pomocą instrukcji („analogReadResolution (bits);”).
W naszym roboczym obwodzie ręcznym pozostawiliśmy to napięcie odniesienia na domyślne, więc możemy odczytać wartość z kanału ADC, bezpośrednio wywołując funkcję „analogRead (pin)”, tutaj „pin” oznacza pin, do którego podłączyliśmy sygnał analogowy chcemy przeczytać „A0”. Wartość z ADC można zapisać w postaci liczby całkowitej jako int SENSORVALUE0 = analogRead (A0); .
Teraz pomówmy o SERVO, Arduino Uno posiada funkcję, która pozwala nam kontrolować pozycję serwomechanizmu po prostu dając wartość stopni. Powiedzmy, że jeśli chcemy, aby serwo miało wartość 30, możemy bezpośrednio przedstawić wartość w programie. Plik nagłówkowy SERVO ( Servo.h ) zajmuje się wewnętrznie wszystkimi obliczeniami współczynnika wypełnienia.
#zawierać
Tutaj pierwsza instrukcja reprezentuje plik nagłówkowy do sterowania SILNIKIEM SERWO. Drugą instrukcją jest nazwanie serwomechanizmu; zostawiamy to jako servo0, ponieważ będziemy używać czterech. Trzecie stwierdzenie określa, gdzie jest podłączony pin sygnału serwa; musi to być pin PWM. Tutaj używamy PIN3 dla pierwszego serwa. Czwarte stwierdzenie zawiera polecenia dotyczące pozycjonowania serwomotoru w stopniach. Jeśli podano 30, serwomotor obraca się o 30 stopni.
Teraz mamy pozycję serwomechanizmu SG90 od 0 do 180, a wartości ADC są od 0-1023. Użyjemy specjalnej funkcji, która automatycznie dopasuje obie wartości.
sensorvalue0 = map (sensorvalue0, 0, 1023, 0, 180);
Ta instrukcja automatycznie mapuje obie wartości i zapisuje wynik jako liczbę całkowitą „servovalue0” .
W ten sposób kontrolowaliśmy serwomechanizmy w naszym projekcie ramienia robota za pomocą Arduino. Sprawdź pełny kod poniżej.
Jak obsługiwać ramię robota:
Użytkownik ma do dyspozycji cztery garnki. Obracając te cztery potencjometry, zapewniamy zmienne napięcie na kanałach ADC UNO. Zatem wartości cyfrowe Arduino są pod kontrolą użytkownika. Te wartości cyfrowe są mapowane w celu dostosowania położenia serwomotoru, stąd też położenie serwomechanizmu jest kontrolowane przez użytkownika, a obracając te garnki, użytkownik może przesuwać przeguby ramienia robota i chwytać dowolny przedmiot.