Cuprins:

Brațul robot Arduino: 5 pași
Brațul robot Arduino: 5 pași

Video: Brațul robot Arduino: 5 pași

Video: Brațul robot Arduino: 5 pași
Video: Braț de robot cu arduino 2024, Iulie
Anonim
Image
Image
Brațul robot Arduino
Brațul robot Arduino
Brațul robot Arduino
Brațul robot Arduino

Deoarece este primul meu proiect după cele 15 tutoriale ale kitului meu de start Arduino, scopul real al acestuia este de a primi câteva critici, sfaturi, sugestii, idei de la oricine știe mai mult decât mine.

Acest proiect este despre un braț robotizat, cu 4 dofuri și o prindere. Cu un buget redus decent: structura a fost tăiată de un prieten, cele 4 servome au fost 30 €, cele 2 joystick-uri 4 €, șuruburile șurub etc. pentru mai puțin de 10 € și toate celelalte (Arduino, fire, servo grip etc.) a fost deja inclus în trusa mea de început. Pentru un total de 40-45 €, care reprezintă aproximativ 45-50 de dolari SUA (același preț al unui kit pentru braț, dar hei, a fost amuzant să trebuiască să-l construiesc singur (și să încurc ceva din când în când) și nu respectarea instrucțiunilor ca o mașină).

Deoarece acesta a fost primul meu proiect și instructabil, am intrat în „First Time Author” și alte câteva concursuri, așa că, dacă vă place, votați-l:)

Pasul 1: PROIECTARE ȘI ASAMBLARE:

Mai întâi am avut nevoie de o structură: aceasta a fost cu siguranță cea mai lungă parte. Din moment ce nu am vrut să copiez și să lipesc proiectul de la altcineva, am luat un proiect ca referință și eu (și câțiva colegi de clasă mai pricepuți care m-au salvat cu adevărat) am început să-l modificăm în funcție de nevoile noastre (servomotoare diferite cu cuplu, greutate și dimensiuni diferite etc.). A trebuit să-l construiesc de câteva ori, fiecare dintre ele am găsit ceva în neregulă și a trebuit să recutăm câteva piese și să încerc din nou. Am atașat fișierul.dxf în cazul în care doriți să-l utilizați. Apoi a trebuit să cumpăr electronice: Majoritatea pieselor erau standard, iar cel mai greu era să alegi servomotoarele. Am calculat cuplul necesar cu regula generală, ulterior am încercat un calcul mai precis și am aflat că s-ar fi putut să-l exagerez puțin. Se pare că 6 kg / cm ar fi fost suficiente pentru al 2-lea servo (de la bază), iar al meu oferă 9-11 kg / cm. Ei bine, acest lucru îmi oferă siguranță și șansa de a încărca până la 2 kg de încărcare (ceea ce este imposibil, dar îmi place că aș putea să o fac tehnic). Aș fi putut cumpăra, de asemenea, servo-uri diferite, cu un cuplu scăzut în timp ce mă îndepărtam de bază, dar cumpărarea de servo-uri identice de la același furnizor a fost de departe cea mai ieftină opțiune. 350mA și microservo 9g atrage 100mA, pentru un total de 350 * 4 +100 = 1500mA. Așa că am recuperat un încărcător (6V 1.5A) și i-am lipit două fire jumper. ghid) Lista materialelor: - Structură- Șurub M5x7cm x5, șuruburi m5 x15 (bază) - Șurub M3x16mm x18 * - Șurub M3x20mm x13 * - Șuruburi M3 x40 * - Șurub M3x8cm x3 - Clemă (altfel va cădea) - 3 dibluri- Arduino (sau altceva pentru a-l controla, trebuie să aibă cel puțin 5 PWM) - Ceva care să furnizeze 5-6V și cel puțin 1,5 A - joystickuri de 3x-like ps2- 4x servere TowerPro mg995- 1x microservo TowerPro 9g (pentru prindere) - O mulțime de fire jumper - Panou * (am folosit șuruburi și șuruburi pentru a putea asambla și dezasambla rapid, altfel ai putea înlocui aproape toate cu șuruburi pentru lemn)

Pasul 2: COD:

Ideea este de a controla fiecare servo cu una din cele două axe ale unui joystick de tip ps2. Fiecare joystick părea să aibă „valori de repaus” diferite (valoarea între 0-1023 când este încă) atât pentru axa y, cât și pentru axa x. a fost o problemă, din moment ce diferența era foarte mică (unul avea zero pe y la 623) și am vrut să folosesc funcția hartă pentru a converti de la 0-1023 la grade. Dar funcția hartă consideră că valoarea restului este 1023/2. Ceea ce a adus la fiecare servo în mișcare imediat ce pornesc Arduino, nu este bine. Am reușit să ocolesc acest lucru găsind manual diferența dintre valoarea de citire și fiecare valoare de repaus diferită (pe care am calculat-o separat pentru fiecare joystick), apoi la face codul mai scurt și mai inteligent, l-am făcut să citească valorile de rest în funcția de configurare și să le salveze în unele variabile. Noul algoritm se bazează pe conversia incrementului în grade, dar am vrut o cantitate foarte mică de grade pentru incrementul meu, deci A trebuit să-l împart pentru o constantă: am încercat multe valori, până am ajuns cu ultimul 200 (pot adăuga un potențiometru pentru a schimba manual această valoare la cea dorită). Restul codului este destul de standard, cred, chiar dacă ar putea fi mai elegant să puneți calculul incrementului într-o funcție separată.

Pasul 3: ELECTRONICĂ:

ELECTRONICĂ
ELECTRONICĂ

Cablarea este aceeași ca în imagine sau în fișierul fritzing: servosemnal la pinii: 5-6-9-10-11 și axa joystick-ului la pinii analogici: A0-A1-A2-A3-A4 Problema majoră pe care am întâmpinat-o a fost faptul că joystick-urile TREBUIE SĂ FIE furnizate de Arduino, NU de încărcătorul pe care îl folosesc pentru servos. În caz contrar, servo-ul ar înnebuni mișcându-se aleatoriu înainte și înapoi. Cred că ar putea fi pentru că, dacă le furnizez încărcătorul, Arduino nu va putea spune cu exactitate diferența de potențial atunci când le mut, dar din nou: Sunt foarte nou în domeniul electronicii, așa că este doar o presupunere. Conectarea la pământ a încărcătorului Arduino și a încărcătorului prin panou a ajutat la prevenirea mișcărilor aleatorii și neașteptate, pentru un motiv similar al alimentării joystick-urilor, presupun.

Pasul 4: ÎNTREBAT ÎN MOMENTURI:

ÎNTREI ÎMBUNĂTĂȚIRE
ÎNTREI ÎMBUNĂTĂȚIRE

Deoarece fiecare joystick poate controla 2 servo-uri (1 pe axă), am nevoie de 3 servo-uri pentru a controla întregul braț, dar, din fericire, am doar 2 degete. apucați și deschideți-închideți mânerul, pentru un total de 4 axe, 2 joystick-uri și 2 degetele mari! Am aflat că această problemă este binecunoscută sub numele de Cinematică inversă, am aflat, de asemenea, că este foarte ușor. Ideea este să scriu (neliniare) ecuații pentru a găsi starea fiecărui efector (unghiuri pentru servouri) dată poziției finale. Am încărcat o hârtie scrisă manual cu ecuațiile și lucrez în prezent la un nou cod pentru a le utiliza. Nu ar trebui să fie prea greu, practic trebuie să citesc joystick-urile, să folosesc citirile lor pentru a modifica coordonatele xyz ale mânerului și apoi să le dau ecuațiilor mele, să calculez unghiurile servos și să le scriu.

Pasul 5: ÎMBUNĂTĂȚIRI VIITOARE:

Deci, sunt destul de mulțumit de rezultatul acesteia și considerând că sunt complet nou în domeniul electronicii, că nu arunc ceva sau eu însumi a fost deja o victorie imensă. După cum am spus la început, orice idee pentru îmbunătățiri viitoare, atât software cât și hardware, este mai mult decât binevenit! Până acum m-am gândit la: 1. Potențiometrul pentru a modifica „sensibilitatea” joystick-urilor.2. Cod nou pentru a-l face să „înregistreze” unele mișcări și să le facă din nou (poate mai rapid și mai scurt decât aportul uman) 3. Un fel de intrare vizuală / distanță / voce și posibilitatea de a obține obiecte fără ca cineva să folosească joystick-urile4. Să poți desena figuri geometrice Orice altă idee? Vă rugăm să nu ezitați să comentați cu orice sugestie. Vă mulțumim

Recomandat: