Spisu treści:

Ramię robota Arduino: 5 kroków
Ramię robota Arduino: 5 kroków

Wideo: Ramię robota Arduino: 5 kroków

Wideo: Ramię robota Arduino: 5 kroków
Wideo: 46.Jak wykonać ramie robota arduino cz1 2024, Listopad
Anonim
Image
Image
Ramię robota Arduino
Ramię robota Arduino
Ramię robota Arduino
Ramię robota Arduino

Ponieważ jest to mój pierwszy projekt po 15 samouczkach mojego zestawu startowego Arduino, prawdziwym celem jest zdobycie kilku krytyków, wskazówek, sugestii, pomysłów od każdego, kto wie więcej ode mnie.

Ten projekt dotyczy ramienia robota z 4 stopniami swobody i uchwytem. Przy przyzwoicie niskim budżecie: konstrukcja została wycięta przez znajomego, 4 serwa kosztowały 30€, 2 joysticki 4€, śruby śrub itp. za mniej niż 10€ i cała reszta (Arduino, przewody, serwomechanizm chwytu itp.).) był już zawarty w moim zestawie startowym. Łącznie 40-45 €, czyli około 45-50 dolarów amerykańskich (taka sama cena zestawu na ramię, ale hej, fajnie było zbudować go samemu (i raz na jakiś czas coś zepsuć) i nie postępuj zgodnie z instrukcjami jak maszyna).

Ponieważ był to mój pierwszy projekt i Instructable, wziąłem udział w konkursie „First Time Author” i kilku innych konkursach, więc jeśli Ci się spodoba, zagłosuj na to:)

Krok 1: PROJEKTOWANIE I MONTAŻ:

Najpierw potrzebowałem struktury: to była zdecydowanie najdłuższa część. Ponieważ nie chciałem kopiować i wklejać projektu od kogoś innego, wziąłem projekt jako odniesienie i ja (i kilku bardziej wykwalifikowanych kolegów z klasy, którzy naprawdę mnie uratowali) zaczęliśmy go modyfikować według naszych potrzeb (różne serwa o różnym momencie obrotowym, wadze i wymiarach itp.). Musiałem go zbudować kilka razy, za każdym z nich coś znalazłem nie tak i musieliśmy przeciąć kilka kawałków i spróbować ponownie. Załączyłem plik.dxf na wypadek, gdybyś chciał go użyć. Potem musiałem kupić elektronikę:Większość części była standardowa, najtrudniej było wybrać serwa. Wymagany moment obrotowy obliczyłem według zasady kciuka, później spróbowałem dokładniejszego obliczenia i okazało się, że mogłem go trochę przesadzić. Podobno 6 kg/cm wystarczyłoby na 2 serwo (od bazy), a mój daje 9-11 kg/cm. Cóż, daje mi to pewne bezpieczeństwo i możliwość załadowania do 2 kg ładunku (co jest niemożliwe, ale podoba mi się, że technicznie mógłbym to zrobić). Mogłem też kupić inne serwa, z malejącym momentem obrotowym przy oddalaniu się od bazy, ale kupowanie identycznych serwo od tego samego dostawcy było zdecydowanie najtańszą opcją. Zasilanie: Arduino zdecydowanie nie wystarczało dla serw, ponieważ każde mg995 ciągnie 350mA, a mikroserwo 9g pobiera 100mA, co daje łącznie 350*4 +100 = 1500mA. Uratowałem więc ładowarkę (6V 1,5A) i przylutowałem do niej dwa zworki. (jeśli ktoś z Was może potrzebować prawdziwej instrukcji, po prostu zapytaj w komentarzach, a zrobię co w mojej mocy, aby stworzyć krok po kroku przewodnik) Lista materiałów:- Konstrukcja- Śruba M5x7cm x5, Śruby m5 x15 (podstawa)- Śruba M3x16mm x18*- Śruba M3x20mm x13*- Śruba M3 x40*- Śruba M3x8cm x3 - Zacisk (inaczej spadnie)- 3 kołki- Arduino (lub coś innego do sterowania, musi mieć co najmniej 5 PWM) - Coś do zasilania 5-6 V i co najmniej 1,5 A - 3x joysticki typu ps2 - 4x serwa TowerPro mg995 - 1x mikroserwo TowerPro 9g (do uchwytu)- Dużo zworek - Płytka do krojenia chleba*(użyłem śrub i wkrętów, aby móc szybko montować i demontować, w przeciwnym razie prawie wszystkie można by wymienić na wkręty do drewna)

Krok 2: KOD:

Pomysł polega na kontrolowaniu każdego serwomechanizmu za pomocą jednej z dwóch osi joysticka podobnego do ps2. Każdy joystick wydawał się mieć różne „wartości spoczynkowe” (wartość między 0-1023, gdy jest nieruchomy) zarówno dla osi y, jak i x. był problem, ponieważ różnica była prawie mała (jeden miał zero na y na 623) i chciałem użyć funkcji mapy do konwersji z 0-1023 na stopnie. Ale funkcja map uważa, że reszta to 1023/2. Co spowodowało, że każde serwo poruszające się po włączeniu Arduino, nie jest dobre. Udało mi się to obejść, znajdując ręcznie różnicę między wartością odczytu a każdą inną wartością odpoczynku (którą obliczyłem osobno dla każdego joysticka), a następnie aby kod był krótszy i sprytniejszy, kazałem mu odczytać pozostałe wartości w funkcji setup i zapisać je w niektórych zmiennych. Nowy algorytm polega na przeliczaniu przyrostu w stopniach, ale chciałem bardzo małej ilości stopni dla mojego przyrostu, więc Musiałem podzielić to na stałą: próbowałem wielu wartości, aż wymyśliłem końcową 200 (może dodać potencjometr, aby ręcznie zmienić tę wartość na pożądaną). Reszta kodu jest chyba dość standardowa, nawet jeśli bardziej eleganckim rozwiązaniem może być umieszczenie obliczenia przyrostu w osobnej funkcji.

Krok 3: ELEKTRONIKA:

ELEKTRONIKA
ELEKTRONIKA

Okablowanie jest takie samo, jak pokazano na zdjęciu lub w pliku fritzowym: sygnał serw do pinów: 5-6-9-10-11 i oś joysticka do pinów analogowych: A0-A1-A2-A3-A4Główny problem, na który natknąłem się było to, że joysticki MUSZĄ BYĆ dostarczane przez Arduino, a NIE przez ładowarkę, której używam do serw. W przeciwnym razie serwo po prostu zwariowałoby, poruszając się losowo w tę iz powrotem. Myślę, że może to być spowodowane tym, że jeśli dostarczę je z ładowarką, Arduino nie będzie w stanie dokładnie określić potencjalnej różnicy, kiedy je przesunę, ale potem znowu: Jestem nowicjuszem w elektronice, więc to tylko przypuszczenie. Połączenie uziemienia Arduino i uziemienia ładowarki przez płytkę stykową pomogło zapobiec przypadkowym i nieoczekiwanym ruchom, z podobnego powodu zasilania joysticków, jak przypuszczam.

Krok 4: OBECNIE ROZWIJAMY SIĘ:

OBECNIE ROZWIJAMY SIĘ
OBECNIE ROZWIJAMY SIĘ

Ponieważ każdy joystick może sterować 2 serwomechanizmami (1 na oś), potrzebuję 3 serwa do sterowania całym ramieniem, ale niestety mam tylko 2 kciuki. Pomyślałem więc, że zamiast sterować każdym serwo, mogę sterować tylko pozycją xyz chwyć i otwórz-zamknij chwyt, w sumie 4 osie, 2 joysticki i 2 kciuki! Dowiedziałem się, że ten problem jest dobrze znany jako Inverse Kinematics, dowiedziałem się również, że to wszystko, ale proste. Pomysł polega na pisaniu (nieliniowe) równania, aby znaleźć stan każdego efektora (kąty dla serw) z uwzględnieniem końcowej pozycji. Przesłałem odręczną pracę z równaniami i obecnie pracuję nad nowym kodem, aby ich użyć. To nie powinno być zbyt trudne, po prostu muszę czytać joysticki, używać ich odczytów do modyfikacji współrzędnych xyz uchwytu, a następnie podać je do moich równań, obliczyć kąty serw i zapisać je.

Krok 5: PRZYSZŁE ULEPSZENIA:

Tak więc jestem całkiem zadowolony z wyniku tego i biorąc pod uwagę, że jestem całkowicie nowy w elektronice, a nie wysadzanie czegoś ani siebie, było już ogromnym zwycięstwem. Jak powiedziałem na początku, każdy pomysł na przyszłe ulepszenia, zarówno oprogramowania, jak i sprzęt, jest więcej niż mile widziany! Do tej pory myślałem o:1. Potencjometr do zmiany „czułości” joysticków.2. Nowy kod, aby „nagrał” niektóre ruchy i wykonał je ponownie (być może szybciej i krócej niż wejście człowieka)3. Jakiś rodzaj wizualnego/dystansowego/głosowego wprowadzania danych i możliwość zdobywania przedmiotów bez używania joysticków4. Umiejętność rysowania figur geometrycznych Jakiś inny pomysł? Zachęcamy do komentowania wszelkich sugestii. Dziękuję

Zalecana: