- Potrebne komponente
- Konstrukcija robotske roke
- Shema vezja in delovna razlaga:
- Kako upravljati robotsko roko:
V tej vadnici bomo zasnovali robotsko roko na osnovi Arduino Uno iz nekaterih kartonov in servo motorjev. Ves postopek gradnje je bil podrobno razložen spodaj. V tem projektu je Arduino Uno programiran za nadzor servo motorjev, ki služijo kot zglobi robotske roke. Ta nastavitev je videti tudi kot robotski žerjav ali pa ga z enostavnimi popravki lahko pretvorimo v žerjava. Ta projekt bo koristen začetnikom, ki se želijo naučiti razvijati preprost robot po nizki ceni ali pa se želijo naučiti delati z Arduino in servo motorji.
To robotsko roko Arduino lahko upravljate s štirimi potenciometri, pritrjenimi nanjo, vsak potenciometer pa se uporablja za nadzor vsakega servo. Te servo motorje lahko premikate tako, da zasukate lonce, da izberete nek predmet, z nekaj vaje pa lahko predmet enostavno izberete in premaknete z enega kraja na drugega. Tu smo uporabili servo motorje z nizkim navorom, vi pa lahko uporabite močnejše servo motorje za izbiro težkih predmetov. Celoten postopek je na koncu dobro prikazan v videu. Tukaj preverite tudi druge naše robotske projekte.
Potrebne komponente
- Arduino Uno
- Kondenzator 1000uF (4 kosi)
- Kondenzator 100nF (4 kosi)
- Servo motor (SG 90 - štirje kosi)
- 10K lonec - spremenljiv upor (4 kosi)
- Napajanje (5v - po možnosti dve)
Servo motor
Najprej se malo pogovorimo o Servo Motors. Servo motorji se uporabljajo predvsem, kadar je potrebno natančno gibanje ali položaj gredi. Te niso predlagane za visoke hitrosti. Servo motorji so predlagani za nizko hitrost, srednji navor in natančno uporabo položaja. Torej, ti motorji so najboljši za oblikovanje robotsko roko.
Servo motorji so na voljo v različnih oblikah in velikostih. Uporabili bomo majhne servo motorje, tu uporabljamo štiri servo servo motorje SG90. Servo motor bo imel večinoma žice, ena je za pozitivno napetost, druga za ozemljitev in zadnja za nastavitev položaja. RDEČA žica je priključena na napajanje, črna žica je priključena na maso, RUMENA žica pa na signal. Če želite izvedeti več o tem, preberite to vadnico o nadzoru servo motorja z uporabo Arduina V Arduinu imamo vnaprej določene knjižnice za nadzor servo, zato je zelo enostavno nadzorovati servo, kar se boste naučili skupaj s to vadnico.
Konstrukcija robotske roke
Vzemite ravno in stabilno površino, kot je miza ali trda kartonska plošča. Nato namestite servo motor na sredino in ga prilepite na svoje mesto. Prepričajte se, da je stopnja vrtenja v območju, predstavljenem na sliki. Ta servo deluje kot osnova roke.
Na prvi servo položite majhen košček kartona, nato pa na ta kos deske položite drugi servo in ga prilepite. Servo vrtenje se mora ujemati z diagramom.
Vzemite nekaj kartonov in jih razrežite na koščke 3 cm x 11 cm. Pazite, da se kos ne zmehča. Na enem koncu izrežite pravokotno luknjo (pustite 0,8 cm od spodaj) toliko, da namestite še en servo, na drugem koncu pa z vijaki ali z lepilom dobro namestite servo zobnik. Nato namestite tretji servo v prvo luknjo.
Zdaj odrežite še en kartonski kos z dolžino, prikazano na spodnji sliki, in prilepite drugo orodje na dnu tega kosa.
Zdaj prilepite četrti in zadnji servo na rob drugega kosa, kot je prikazano na sliki.
S tem sta dva kosa skupaj videti.
Ko to nastavitev pritrdimo na podlago, mora biti videti tako,
Skoraj je že končano. Le kavelj moramo narediti, da predmet zgrabimo in izberemo kot robotska roka. Za kavelj odrežite še dva kosa kartonske plošče dolžine 1cmx7cm & 4cmx5cm. Zlepite jih, kot je prikazano na sliki, in končno prestavo prilepite na sam rob.
Ta del pritrdite na vrh in s tem smo končali z izdelavo naše robotske roke.
S tem se je zaključila naša osnovna zasnova robotske roke in tako smo izdelali svojo poceni robotsko roko. Zdaj povežite vezje v plošči, kot je prikazano na vezju.
Shema vezja in delovna razlaga:
Priključek vezja za robotsko roko Arduino Uno je prikazan spodaj.
Napetost na spremenljivih uporih ni popolnoma linearna; bo hrupno. Da bi filtrirali ta hrup, so kondenzatorji nameščeni čez vsak upor, kot je prikazano na sliki.
Zdaj bomo napetost, ki jo zagotavlja ta spremenljivi upor (napetost, ki predstavlja nadzor položaja), napajali v ADC kanale Arduino. Za to bomo uporabili štiri ADC kanale UNO od A0 do A3. Po inicializaciji ADC bomo dobili digitalno vrednost loncev, ki predstavljajo položaj, ki ga potrebuje uporabnik. Vzeli bomo to vrednost in jo uskladili s položajem servo.
Arduino ima šest ADC kanalov. Za našo robotsko roko smo uporabili štiri. UNO ADC ima 10-bitno ločljivost, zato so celoštevilske vrednosti od 0 do 1023 (2 ^ 10 = 1024 vrednosti). To pomeni, da bo preslikal vhodne napetosti med 0 in 5 voltov v celoštevilčne vrednosti med 0 in 1023. Torej za vsakega (5/1024 = 4,9 mV) na enoto. Več o kartiranju nivojev napetosti z uporabo ADC kanalov v Arduinu najdete tukaj.
Zdaj, da UNO pretvori analogni signal v digitalni signal, moramo uporabiti ADC kanal Arduino Uno s pomočjo spodnjih funkcij:
1. analogRead (pin); 2. analogReference (); 3. analogReadResolution (bitov);
Kanali Arduino ADC imajo privzeto referenčno vrednost 5V. To pomeni, da lahko damo maksimalno vhodno napetost 5V za pretvorbo ADC na katerem koli vhodnem kanalu. Ker nekateri senzorji zagotavljajo napetosti od 0-2,5V, tako dobimo z referenco 5V manjšo natančnost, zato imamo navodilo, ki nam omogoča spreminjanje te referenčne vrednosti. Za spremembo referenčne vrednosti imamo torej "analogReference ();"
Privzeto dobimo največjo ločljivost ADC plošče, ki znaša 10 bitov, to ločljivost pa lahko spremenimo z uporabo navodil (“analogReadResolution (bitov);”).
V našem robotskem ročnem vezju smo to referenčno napetost pustili privzeto, tako da lahko vrednost iz kanala ADC beremo z neposrednim klicanjem funkcije “analogRead (pin);”, tukaj “pin” predstavlja pin, kamor smo povezali analogni signal, recimo želimo prebrati “A0”. Vrednost iz ADC lahko shranite v celo število kot int SENSORVALUE0 = analogRead (A0); .
Zdaj pa se pogovorimo o SERVO-ju, Arduino Uno ima funkcijo, ki nam omogoča nadzor položaja servo-servoa, tako da samo damo vrednost stopinje. Recimo, če želimo, da je servo na 30, lahko neposredno predstavimo vrednost v programu. Datoteka z glavo SERVO ( Servo.h ) interno skrbi za vse izračune razmerja dajatev.
#include
Tu prvi stavek predstavlja datoteko glave za nadzor SERVO MOTORJA. Druga izjava je poimenovanje servo; pustimo ga kot servo0, saj bomo uporabili štiri. Tretji stavek navaja, kje je priključen servo signalni zatič; to mora biti pin PWM. Tu uporabljamo PIN3 za prvi servo. Četrta izjava daje ukaze za pozicioniranje servo motorja v stopinjah. Če ima 30, se servo motor vrti za 30 stopinj.
Zdaj imamo servo položaj SG90 od 0 do 180, vrednosti ADC pa od 0 do 1023. Uporabili bomo posebno funkcijo, ki se samodejno ujema z obema vrednostma.
sensorvalue0 = zemljevid (sensorvalue0, 0, 1023, 0, 180);
Ta stavek samodejno preslika obe vrednosti in rezultat shrani v celo število 'servovalue0' .
Tako smo z uporabo Arduina nadzorovali servo naprave v našem projektu Robotic Arm. Spodaj preverite celotno kodo.
Kako upravljati robotsko roko:
Uporabniku so na voljo štirje lonci. Z vrtenjem teh štirih loncev zagotavljamo spremenljivo napetost na ADC kanalih UNO. Digitalne vrednosti Arduina so torej pod nadzorom uporabnika. Te digitalne vrednosti so preslikane tako, da prilagodijo položaj servo motorja, zato položaj servo motorja nadzoruje uporabnika in z vrtenjem teh loncev lahko uporabnik premika sklepe robotske roke in lahko izbere ali zgrabi kateri koli predmet.