- Būtini komponentai
- Robotinės rankos konstrukcija
- Grandinės schema ir darbo paaiškinimas:
- Kaip valdyti robotinę ranką:
Šioje pamokoje mes suprojektuosime „ Arduino Uno“ pagrįstą robotų ranką iš kai kurių kartonų ir servovariklių. Visas statybų procesas buvo išsamiai paaiškintas toliau. Šiame projekte „ Arduino Uno“ yra užprogramuotas valdyti servovariklius, kurie tarnauja kaip robotų rankos sąnariai. Ši sąranka taip pat atrodo kaip robotinis kranas arba mes galime jį paversti kranu atlikdami keletą lengvų patobulinimų. Šis projektas bus naudingas pradedantiesiems, norintiems išmokti sukurti paprastą robotą už mažą kainą arba tiesiog norintiems išmokti dirbti su „Arduino“ ir servo varikliais.
Šią „ Arduino“ robotinę ranką galima valdyti keturiais prie jos pritvirtintais potenciometrais, kiekvienas potenciometras naudojamas kiekvienam servo valdymui. Šiuos servo servisus galite perkelti pasukdami puodus, kad išsirinktumėte kokį nors daiktą. Taikydami tam tikrą praktiką, galite lengvai pasirinkti ir perkelti objektą iš vienos vietos į kitą. Čia naudojome mažo sukimo momento servo servisus, tačiau sunkesniems daiktams rinkti galite naudoti galingesnius servo servisus. Visas procesas buvo gerai parodytas vaizdo įrašo pabaigoje. Čia taip pat patikrinkite kitus mūsų robotikos projektus.
Būtini komponentai
- Arduino Uno
- 1000uF kondensatorius (4 vnt.)
- 100nF kondensatorius (4 vnt.)
- Servo variklis (SG 90 - keturi vienetai)
- 10K puodas - kintamas rezistorius (4 vnt.)
- Maitinimo šaltinis (5v - pageidautina du)
Servo variklis
Pirmiausia mes šiek tiek pakalbėjome apie „Servo Motors“. Servo varikliai dažniausiai naudojami, kai reikia tikslaus veleno judėjimo ar padėties. Jie nėra siūlomi didelės spartos programoms. Siūlomi servo varikliai, skirti mažam greičiui, vidutiniam sukimo momentui ir tiksliai pritaikyti padėtį. Taigi šie varikliai geriausiai tinka robotų rankos projektavimui.
Servo varikliai yra įvairių formų ir dydžių. Mes ketiname naudoti mažus servovariklius, čia mes naudosime keturis SG90 servo. Servo variklyje daugiausia bus laidai, vienas skirtas teigiamai įtampai, kitas - žemei, o paskutinis - padėčiai nustatyti. RED laidas yra prijungtas prie maitinimo šaltinio, juodas laidas yra prijungtas prie žemės, o geltonas laidas - prie signalo. Peržiūrėkite šią „Servo Motor“ valdymo naudojant „Arduino“ pamoką, kad sužinotumėte daugiau apie tai. „Arduino“ mes turime iš anksto apibrėžtas bibliotekas servo valdymui, todėl labai lengva valdyti servo valdymą, kurį sužinosite kartu su šia pamoka.
Robotinės rankos konstrukcija
Paimkite plokščią ir stabilų paviršių, pavyzdžiui, stalą ar kietosios kartono lentą. Tada viduryje uždėkite servovariklį ir įklijuokite jį į vietą. Įsitikinkite, kad sukimosi laipsnis yra paveikslėlyje pateiktoje srityje. Šis servo veikia kaip rankos pagrindas.
Ant pirmojo servo padėkite nedidelį kartono gabalėlį, tada ant šio lentos gabalo uždėkite antrą servo servetėlę ir įklijuokite ją į vietą. Servo sukimas turi atitikti schemą.
Paimkite keletą kartonų ir supjaustykite juos 3 cm x 11 cm gabalėliais. Įsitikinkite, kad gabalas nėra suminkštintas. Viename gale iškirpkite stačiakampę skylę (palikite 0,8 cm nuo apačios) tiek, kad tilptų kitas servo serveris, o kitame gale tvirtai pritvirtinkite servo pavarą varžtais arba klijais. Tada į pirmąją skylę įdėkite trečią servo servo padėkliuką.
Dabar iškirpkite kitą kartono gabalėlį, kurio ilgiai parodyti žemiau esančiame paveikslėlyje, o šio gabalo apačioje priklijuokite kitą pavarą.
Dabar klijuokite ketvirtą ir paskutinę servo servetėlę ant antrosios dalies krašto, kaip parodyta paveiksle.
Tai atrodo kaip dvi dalys kartu.
Kai pritvirtinsime šią sąranką prie pagrindo, ji turėtų atrodyti,
Tai beveik padaryta. Mums tiesiog reikia padaryti kabliuką, kad griebtumėmės ir paimtume daiktą kaip robotą. Norėdami sukabinti, supjaustykite dar dvi 1 cmx7 cm ir 4 cm x 5 cm ilgio kartono lentos dalis. Klijuokite juos kartu, kaip parodyta paveiksle, ir priklijuokite galinę pavarą prie pat krašto.
Uždėkite šį kūrinį ant viršaus ir tuo mes padarėme savo robotų rankos statybą .
Tai užbaigė mūsų pagrindinę robotų rankos konstrukciją ir taip sukūrėme savo pigių robotų ranką. Dabar prijunkite grandinę duonos lentoje pagal schemą.
Grandinės schema ir darbo paaiškinimas:
„ Arduino Uno“ robotinės rankos grandinės jungtis parodyta žemiau.
Įtampa per kintamus rezistorius nėra visiškai tiesinė; tai bus triukšmingas. Taigi, norint ištrinti šį triukšmą, kondensatoriai dedami ant kiekvieno rezistoriaus, kaip parodyta paveikslėlyje.
Dabar mes tieksime įtampą, kurią teikia šis kintamasis rezistorius (įtampa, atspindinti padėties valdymą) į ADC „Arduino“ kanalus. Tam ketiname naudoti keturis UNO ADO kanalus nuo A0 iki A3. Po ADC inicijavimo turėsime skaitmeninę puodų vertę, atspindinčią vartotojui reikalingą padėtį. Mes atsižvelgsime į šią vertę ir suderinsime ją su servo padėtimi.
„Arduino“ turi šešis ADC kanalus. Robotų rankai panaudojome keturis. UNO ADC skiriamoji geba yra 10 bitų, taigi sveikųjų skaičių vertės svyruoja nuo 0 iki 1023 (2 ^ 10 = 1024 vertės). Tai reiškia, kad jis įves įtampą nuo 0 iki 5 voltų į sveikas skaičius nuo 0 iki 1023. Taigi kiekvienam (5/1024 = 4,9 mV) vienetui. Sužinokite daugiau apie įtampos lygių nustatymą naudojant ADC kanalus „Arduino“ čia.
Dabar, kad UNO galėtų konvertuoti analoginį signalą į skaitmeninį signalą, turime naudoti „Arduino Uno“ ADC kanalą, naudodamiesi žemiau pateiktomis funkcijomis:
1. analoginis skaitymas (kaištis); 2. analoginė nuoroda (); 3. analogReadResolution (bitai);
Arduino ADC kanalų turėti numatytąjį pamatinę vertę 5V. Tai reiškia, kad ADC konversijai bet kuriame įėjimo kanale galime suteikti maksimalią įėjimo įtampą 5 V. Kadangi kai kurie jutikliai teikia 0–2,5 V įtampą, todėl naudojant 5 V atskaitos tašką gauname mažesnį tikslumą, todėl turime instrukciją, leidžiančią pakeisti šią atskaitos vertę. Taigi norėdami pakeisti pamatinę vertę turime „analogReference ();“
Pagal numatytuosius nustatymus gauname didžiausią plokštės ADC skiriamąją gebą, kuri yra 10 bitų, šią skiriamąją gebą galima pakeisti naudojant instrukcijas („analogReadResolution (bits);“).
Mūsų robotų rankinėje grandinėje šią atskaitos įtampą palikome numatytajai, todėl galime nuskaityti vertę iš ADC kanalo tiesiogiai iškviesdami funkciją „analogRead (pin);“, čia „pin“ reiškia kaištį, prie kurio prijungėme analoginį signalą, tarkim, norime perskaityti „A0“. Vertę iš ADC galima įrašyti į sveiką skaičių kaip int SENSORVALUE0 = analogRead (A0); .
Dabar pakalbėkime apie SERVO, „Arduino Uno“ turi funkciją, leidžiančią mums valdyti servo padėtį, tiesiog nurodant laipsnio vertę. Tarkime, jei norime, kad servo serveris būtų 30, galime tiesiogiai nurodyti vertę programoje. SERVO antraštės ( Servo.h ) byla rūpinasi visais darbo santykio skaičiavimais viduje.
# įtraukti
Šis pirmasis sakinys reiškia antraštės failą, skirtą valdyti SERVO MOTOR. Antrasis teiginys yra servo pavadinimas; mes paliekame jį kaip servo0, nes ketiname naudoti keturis. Trečiame sakinyje nurodoma, kur prijungtas servo signalo kaištis; tai turi būti PWM kaištis. Pirmam servo servisui naudojame PIN3. Ketvirtame sakinyje nurodomos servovariklio padėties nustatymo laipsniais komandos. Jei jam suteikiama 30, servovariklis sukasi 30 laipsnių kampu.
Dabar mes turime SG90 servo padėtį nuo 0 iki 180, o ADC vertės yra nuo 0 iki 1023. Mes naudosime specialią funkciją, kuri automatiškai atitiks abi vertes.
sensorvalue0 = žemėlapis (sensorvalue0, 0, 1023, 0, 180);
Šis sakinys automatiškai atvaizduoja vertes ir išsaugo rezultatą sveikuoju skaičiumi „servovalue0“ .
Štai kaip mes valdėme „Servos“ robotų rankos projekte naudodami „Arduino“. Patikrinkite visą kodą žemiau.
Kaip valdyti robotinę ranką:
Vartotojui suteikiami keturi puodai. Sukdami šiuos keturis puodus, mes suteikiame kintamą įtampą UNO ADC kanaluose. Taigi skaitmenines „Arduino“ vertes kontroliuoja vartotojas. Šios skaitmeninės vertės yra susietos, kad būtų galima sureguliuoti servo variklio padėtį, taigi servo padėtis valdo vartotoją, o sukdamas šiuos „Pots“ vartotojas gali judinti robotinės rankos sąnarius ir pasirinkti ar paimti bet kurį daiktą.