Satura rādītājs:
- 1. darbība. Nepieciešamais aprīkojums - aparatūra un elektronika
- 2. solis: roku montāža
- 3. solis: Elektroinstalācija un vadības panelis
- 4. solis: kods
- 5. darbība. Saites un resursi
Video: Arduino kontrolētā robotu roka ar 6 brīvības pakāpēm: 5 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Es esmu robotikas grupas dalībnieks un katru gadu mūsu grupa piedalās ikgadējā Mini-Maker Faire. Sākot ar 2014. gadu, es nolēmu katra gada pasākumam izveidot jaunu projektu. Toreiz man bija apmēram mēnesis pirms pasākuma, lai kaut ko saliktu kopā, un nebija ne jausmas, ko vēlos darīt.
Kolēģis publicēja saiti uz "interesantu atvērtā pirmkoda robotu roku uzbūvi", kas man radīja vislielāko interesi. Plāni bija tikai roka bez vadības ierīcēm vai kontrolieris. Ņemot vērā manu laika ierobežojumu, tas šķita patiešām labs sākumpunkts. Vienīgā problēma bija tā, ka man tiešām nebija instrumentu, lai sāktu darbu.
Ar dažu grupas dalībnieku palīdzību man izdevās izgriezt un nosūtīt man akrila daļas, kā arī divas zemāk redzamās 3D drukātās daļas. Kopā ar dažiem datortehnikas pasūtījumiem uz nakti un vairākiem braucieniem uz vietējo datortehnikas veikalu, es pabeidzu darba projektu naktī pirms pasākuma!
Kā parasti, stāstā ir vairāk un būvē ir vairāki iemiesojumi, kas ir apkopoti zemāk redzamajā. Ja jūs interesē aizmugures stāsts, vairāk varat atrast šeit:
1. darbība. Nepieciešamais aprīkojums - aparatūra un elektronika
Sākotnējais projekta dizainers dzīvoja Eiropā un vēlāk izmantoja metriskos mērījumus un tur izplatītos materiālus. Piemēram, preses dēlis, ko viņš izmantoja korpusam, bija 5 mm biezs. Līdzīgs materiāls šeit ASV ir 1/8 , kas ir aptuveni 3,7 mm biezs. Tas atstāja spraugu atverēs, kuras sākotnēji bija paredzētas presēšanai. Tā vietā, lai labotu rasējumus, es vienkārši izmantoju Gorilla līmi, lai nostiprinātu šos savienojumus.
Viņš arī izmantoja M3 vītņotus uzgriežņus un skrūves, kas nav standarta jūsu vietējā datortehnikas veikalā ASV. Tā vietā, lai tos pārveidotu par vietēji pieejamām opcijām, es vienkārši pasūtīju aparatūru tiešsaistē, kā parādīts manā detaļu sarakstā zemāk.
- 22 - M3 x 0,5 x 23 mm pārtraukumi
- 15 - M3 x 15 mm starplikas
- 40 - M3 skrūves
- M3 Sešstūra uzgriežņi
- M3 25 mm skrūves
- 1 - pavasaris
- 3/4 "divpusēja stiprinājuma lente
- 5 - SG 5010 TowerPro Servo
- 1 - mini servo SG92R TowerPro
- 1 - SG90 TowerPro mini servo
- 2,54 mm vienas rindas taisnas tapas
- 1 - pusizmēra maizes dēlis
- 1 - sieviešu/vīriešu "pagarinājuma" džemperu vadi - 40 x 6"
- 1 - 12 "x 24" zila akrila loksne vai lāzera griezuma gabali no jūsu iecienītākā pakalpojumu sniedzēja
- 2 - 3 mm x 20 mm + 4 mm x 5 mm savienojuma gultņu starplikas 3D drukātas (skatīt zemāk)
- 1 - Vadības panelis *Skatiet sadaļu Elektroinstalācija
- 1 - izkliedēta RGB (trīskrāsu) 10 mm LED
- 1 - Arduino Uno
- 1 - standarta LCD 16x2 + papildierīces - balta uz zila
- 1 - i2c / SPI rakstzīmju LCD mugursoma
- 1-Adafruit 16 kanālu 12 bitu PWM/servo draiveris
- 1 - MCP3008 - 8 kanālu 10 bitu ADC ar SPI saskarni
- 3 - JoyStick Breakout Module Sensor *Skatiet piezīmi vadu sadaļā
- DC mucas džeks
- Maiņstrāvas un līdzstrāvas adapteris
- Servo pagarinātāji - dažāda garuma
Gandrīz visas šīs rokas daļas tika sagrieztas no 1/8 collu akrila. Tomēr abas savienojuma gultņu starplikas ir jāizdrukā. Arī sākotnējā konstrukcija paredzēja, ka abām savienojuma starplikas pamatnēm jābūt 7 mm augstām pret gultņa vārpstu. Kad es sāku montēt augšdelmu, ātri kļuva skaidrs, ka tie ir pārāk augsti TowerPro servo augstuma dēļ. Man vajadzēja izgatavot jaunus savienojuma gultņus, kuru pamatne bija tikai 3 mm augsta, kas, starp citu, joprojām bija nedaudz par augstu, bet pārvaldāma. Jūs vēlaties ņemt vērā savu servo relatīvo augstumu un ņemt vērā attālumu starp abām apakšdelmām:
Servo augstums + servo rags + savienojuma gultnis + abpusēja lente = 47 mm +/- 3 mm.
2. solis: roku montāža
Pirms sākat, centrējiet visus savus servos! Ja jebkurā būvniecības laikā, ja manuāli pārvietojat servo pozīciju, pirms nostiprināšanas pie rāmja jums tas būs jāatjauno. Tas ir īpaši svarīgi plecu servos, kuriem vienmēr ir jāpārvietojas vienoti.
-
Pievienojiet bāzes servo augšējai pamatplāksnei, izmantojot M3 25 mm skrūves un sešstūra uzgriežņus. PIEZĪME. Iespējams, vēlēsities vītnēm pielikt cieši, lai samazinātu uzgriežņu atslābumu lietošanas laikā.
- Ja jūs izmantojat iepriekš minēto detaļu sarakstu, jūs turpmāk vēlaties salikt 5 pamatnes starplikas, vītņojot 2 katru no M3 x 0,5 x 23 mm atdalītājiem kopā un pēc tam ar sešstūra uzgriežņiem pievienojot tās augšējai pamatplāksnei.
- Piestipriniet apakšējo pamatplāksni pie 5 M3 skrūvēm.
- Piestipriniet plecu plāksni pie divām servo stiprinājuma plāksnēm, izmantojot drošu akrila līmi. Šeit es izmantoju Gorilla līmi. PIEZĪME. Katrai no divām servo plāksnēm aizmugurē ir caurums, kas ļauj savienot armatūras starpliku. Pārliecinieties, vai caurumi sakrīt!* Kamēr pie rokas ir līme, ejiet uz priekšu un pievienojiet plaukstas stiprinājuma plāksni ar satvērēja galveno plāksni.* Pēc izvēles varat arī pielīmēt plaukstas servoplāksni pie divām plaukstas locītavas plāksnēm. Es šo izvēli neveicu, lai tās savienotu kopā ar pārtraukumiem, kā aprakstīts tālāk.
-
Piestipriniet tagad sacietējušo plecu komplektu pie pamatnes servo. Es izmantoju visplašāko ragu, kas iekļauts servo, kas bija sešu kātu stiprinājuma rags.
- Apakšējā rokas rāmja pievienošana plecu servos var būt sarežģīta. Pirms turpināt, es iesaku piestiprināt ragus pie apakšējo roku rāmjiem. PIEZĪME: Pirms servu piestiprināšanas pie rāmja pārliecinieties, ka tie ir centrēti uz plecu mezgla. Šiem diviem servos ir jāpārvietojas vienoti, un, ja tie ir nepareizi novietoti, tie vismaz izraisīs servo trīci un, ja tie būs pietiekami nepareizi, var sabojāt rāmi vai servos. * Katrs no plecu serviem ir uzstādīts ar kronšteiniem montāžas plākšņu aizmugurē, nevis izlaiž servus cauri plāksnēm - tas ļaus jums slīpi piespiest ragu uz servo vārpstas un nostiprināt skrūvi. Vēl nepiestipriniet servo pie montāžas plāksnes. * Pēc tam pievienojiet iekšējo servo un piestipriniet roku
- Salieciet augšdelma rāmi un servos, izbīdot servos caur roku spraugām un pēc tam ievietojot starplikas starp abām augšdelma plāksnēm un nostipriniet ar M3 skrūvēm.
- Pievienojiet abpusēju līmlenti elkoņa locītavas starplikas aizmugurē un nogrieziet lieko.
- Piestipriniet starpliku servo apakšā, kas darbosies kā elkoņa izpildmehānisms.
- Iebīdiet augšdelma komplektu apakšējo roku montāžas rāmī un nostipriniet servo ragu skrūves.
- Pievienojiet stiegrojuma atkāpes starp divām apakšējām plecu plāksnēm. Lai samazinātu svaru, es izmantoju divus, nevis visus četrus.
- Pievienojiet abpusēju līmlenti augšējās plaukstas locītavas starplikas aizmugurē un nogrieziet lieko.
- Piestipriniet starpliku servo apakšā, kas darbosies kā plaukstas izpildmehānisms.
- Piestipriniet ārējo plaukstas plaukstu pie plaukstas servo raga un nostipriniet ar raga skrūvi.
- Salieciet plaukstas servoplāksni ar abām plaukstas locītavas plāksnēm un atdalītājiem.
- Piestipriniet plaukstas servo uz servo plāksnes ar servo skavas plāksni.
- Jums ir jāpiestiprina plaukstas rags pie servo, pirms piestiprināt satvērēju uz šī raga, jo ir bloķēta atvere ragu skrūvei.
- Pirms satvērēja servo raga piestiprināšanas pie servo, brīvi salieciet satvērēja gabalus, lai tie būtu piemēroti. Tas ļaus jums atstāt ragu iepriekšējā solī.
- Pievienojiet satvērēja ragu savam servo un vēl vairāk pievelciet skrūves, kas tur satveršanas savienojumus. PIEZĪME: nepieskrūvējiet šos uzgriežņus un skrūves līdz galam, jo tiem jābūt vaļīgiem, lai satvērējs varētu pārvietoties.
3. solis: Elektroinstalācija un vadības panelis
Es izveidoju šo projektu kā attīstības platformu dažām idejām, kas man ir vēlākam izglītības projektam. Tātad, lielākā daļa manu savienojumu ir vienkārši dupont savienotāji. Vienīgā lodēšana, ko es izdarīju, bija MCP3008. Ja šim komponentam varat atrast izlaušanās dēli, tad jums vajadzētu būt iespējai bez rokas lodēt.
Ir 3 komponentu grupas:
- Ievadi - šie vienumi uzņem informāciju no lietotāja un sastāv no kursorsvirām un mcp3008 ADC.
- Rezultāti - šie vienumi nodod pasaulei datus, parādot lietotājam statusu vai atjauninot servos ar atrašanās vietas datiem. Šie priekšmeti ir LCD ekrāns, LCD mugursoma, RGB gaismas diode, servo draivera panelis un, visbeidzot, servo.
- Apstrāde - Arduino apkopo pēdējo grupu, kas ņem datus no ieejām un izsūta datus uz izejām saskaņā ar koda norādījumiem.
Iepriekš redzamā Fritzing shēma detalizē visu komponentu tapas savienojumus.
Ieejas
Mēs sāksim ar ievadiem. Kursorsviras ir analogās ierīces - tas nozīmē, ka tām ir mainīgs spriegums kā Arduino ieeja. Katrai no trim kursorsvirām ir divas analogās izejas X un Y (uz augšu, uz leju, pa kreisi pa labi), tādējādi kopā 6 ieejas Arduino. Lai gan Arduino Uno ir pieejamas 6 analogās ieejas, mums ir jāizmanto divas no šīm tapām I2C komunikācijai ar ekrānu un servo kontrolieri.
Šī iemesla dēļ es iekļāvu MCP3008 analogo ciparu pārveidotāju (ADC). Šī mikroshēma uzņem līdz 8 analogām ieejām un pārvērš tās par ciparu signālu, izmantojot Arduino SPI sakaru tapas šādi:
- MCP tapas 1-6> Mainīgas izejas no īkšķa kursorsviras
- MCP Pins 7 & 8> Nav savienojuma
- MCP Pin 9 (DGND)> Zeme
- MCP pin 10 (CS/SHDN)> Uno Pin 12
- MCP Pin 11 (DIN)> Uno Pin 11
- MCP Pin 12 (DOUT)> Uno Pin 10
- MCP Pin 13 (CLK)> Uno Pin 9
- MCP tapa 14 (AGND)> Zeme
- MCP Pin 15 & 16> +5V
Sastāvā esošie kursorsviru savienojumi ir parādīti tikai kā piemērs. Atkarībā no kursorsviras iegādes un to uzstādīšanas veida savienojumi var atšķirties no manējiem. Dažādiem kursorsviras zīmoliem var būt atšķirīgs pieskāriens, kā arī X un Y orientācija var būt atšķirīga. Svarīgi ir saprast, ko attēlo katra ADC ievade. Katra tapa manā kodā attēlo šādas attiecības:
- 1. tapa - Bāze - Analogie dati šajā tapā pagriezīs robota zemāko servo
- 2. tapa - plecs - Analogie dati par šo tapu pagriezīs abus servos virs pamata servo
- 3. tapa - elkonis - Analogie dati par šo tapu pagriezīs nākamo servo uz augšu no plecu servos
- 4. tapa - UP/DN plaukstas locītava - Analogie dati par šo tapu pagriezīs plaukstas servo, paaugstinot un nolaižot satvērēju
- 5. tapa - satvērējs - Analogie dati par šo tapu atver un aizver satvērēju
- 6. tapa - pagriezt plaukstas locītavu - Analogie dati par šo tapu pagriezīs satvērēju
PIEZĪME. Iegādājoties un uzstādot detaļu sarakstā minētās īkšķa kursorsviras, ņemiet vērā, ka moduļu orientācija var atšķirties no manējās, tāpēc pārbaudiet x un y izejas, lai pareizi izveidotu savienojumu ar ADC. Turklāt, ja izmantojat manu 3D drukāto vadības paneli, montāžas atveres var būt nobīdītas no manējā.
Izejas
Adafruit PWM/Servo kontrolleris padara šo projektu ļoti vienkāršu. Vienkārši pievienojiet servo servo galvenēm, un tiek apstrādāti visi strāvas un signāla savienojumi. Ja vien neatradīsit servo ar īpaši gariem vadiem, jūs vēlēsities iegūt dažāda garuma servo kabeļu pagarinājumu komplektu, lai visi jūsu servo kabeļi sasniegtu jūsu kontrollera paneli.
Servo ir savienoti šādi:
- 0 pozīcija - bāzes servo
- 1. pozīcija - plecu servo (servo Y kabelis)
- 2. pozīcija - elkoņa servo
- 3. pozīcija - Rokas 1 Servo
- 4. pozīcija - satvērēja servo
- 5. pozīcija - Rokas 2 Servo
Turklāt VCC un V + ir savienoti ar +5 voltiem, un GND ir pievienots zemei.
1. PIEZĪME. Šeit ir viena LIELA piezīme: barošanas spriegums visam projektam nāk caur servo vadības paneļa barošanas spaiļu bloku. Servo kontrollera V+ tapa faktiski piegādā strāvu no spaiļu bloka uz pārējo ķēdi. Ja jums ir jāprogrammē Uno, es ļoti iesakām atvienot V+ tapu pirms Uno pievienošanas datoram, jo pašreizējā pieslēgšanās no servos var sabojāt jūsu USB portu.
2. PIEZĪME. Projekta barošanai izmantoju 6V maiņstrāvas līdzstrāvas sienas adapteri. Es iesaku adapteri, kas var piegādāt vismaz 4A strāvu, lai, saslēdzoties vienam vai vairākiem servos, pēkšņa strāvas strauja palielināšanās neapdraud jūsu sistēmu un neatiestatītu Arduino.
16X2 LCD ekrāns ir savienots ar Adafruit LCD mugursomu, lai izmantotu I2C saskarni, ko jau izmanto servo kontrolleris. Servo kontrollera SCL un mugursomas CLK savienojas ar pin A5 uz Uno. Tāpat SDA uz servo kontrollera un DAT mugursomā ir savienoti ar pin A4 uz Uno. Turklāt 5V ir pievienots +5 voltiem, bet GND - zemei. LAT mugursomā nav savienots ar neko.
Visbeidzot, RGB gaismas diode ir savienota ar 7. (SARKANA), 6. (zaļā) un 5. (zilā) tapu Uno. Gaismas diodes zemes kājiņa ir savienota ar zemi caur 330 omu rezistoru.
Apstrāde
Visbeidzot, atlikušie Arduino savienojumi, kas nav uzskaitīti iepriekš, ir šādi: Pin 5V ir pievienots +5 voltiem, un GND ir savienots ar zemi.
Savā iestatījumā es izmantoju maizes dēļa sānu sliedes, lai sasaistītu visas strāvas un zemes līnijas, kā arī I2C tapas visām ierīcēm.
4. solis: kods
Kā minēts iepriekš, es sākotnēji izveidoju šo projektu kā demonstrāciju savai vietējai Maker Faire. Es domāju, ka tas ir kaut kas, ko bērni un pieaugušie var spēlēt, atrodoties mūsu stendā. Kā izrādās, tas bija daudz populārāks, nekā biju iedomājies - tik ļoti, ka bērni par to cīnījās. Tātad, kad pienāca laiks pārrakstīšanai, es iekļāvu demonstrācijas režīmu, kas ievieš laika ierobežojumu.
Roka sēž tur un gaida, kad kāds pārvietos kursorsviru, un, kad viņi to dara, sākas 60 sekunžu taimeris. Pēc 60 sekundēm tā pārtrauc lietotāja ievadīšanu un 15 sekundes "Atpūšas". Īsā uzmanība tiek pievērsta tam, kas viņi ir, šis atpūtas periods ievērojami samazināja strīdu par nūju laiku.
Pamata darbība
Tālāk esošajā atsauces sadaļā uzskaitītais kods ir diezgan vienkāršs. Masīvs izseko 6 savienojumus ar min, max paplašinājumiem, sākuma stāvokli un pašreizējo stāvokli. Kad roka ir ieslēgta, palaišanas funkcija nosaka bibliotēkas, kas nepieciešamas sarunai ar MCP3008, LCD mugursomu (un pēc tam ekrānu) un nosaka LED tapas. No turienes tā pārbauda pamata sistēmas un pāriet uz rokas roku. Mājas funkcija sākas ar satvērēju un virzās uz leju līdz pamatnei, lai tā samazinātu iespēju sasaistīties normālos apstākļos. Ja roka ir pilnībā izstiepta, iespējams, vislabāk ir manuāli atvērt roku pirms barošanas. Tā kā vispārējie servoiekārtas nesniedz atgriezenisko saiti par tās stāvokli, mums katrs ir jānovieto iepriekš noteiktā vietā un jāseko līdzi, cik tālu katrs ir pārvietots.
Galvenā cilpa vispirms sākas gaidīšanas režīmā - meklējot kursorsviras, lai attālinātos no centrālās pozīcijas. Kad tas notiek, galvenā cilpa maina stāvokļus uz atpakaļskaitīšanas stāvokli. Kad lietotājs pārvieto katru kursorsviru, kursorsviras relatīvais novietojums no centra papildinās vai atņem pašreizējo zināmo pozīciju un atjaunina atbilstošo servo. Kad servo ir sasniedzis noteikto robežu vienā virzienā, kursorsvira apstājas. Lietotājam būs jāpārvieto kursorsviru citā virzienā, lai to pārvietotu vēlreiz. Tas ir programmatūras ierobežojums, kas jānosaka servos neatkarīgi no to aparatūras apstāšanās. Šī funkcija ļauj nepieciešamības gadījumā noturēt rokas kustības noteiktā darbības zonā. Ja kursorsviru atlaiž uz centru, kustība apstāsies.
Šis kods ir tikai vispārējs sākumpunkts. Jūs varat pievienot savus režīmus, kā vēlaties. Viens piemērs var būt nepārtrauktas darbības režīms bez taimera vai pievienošana kursorsviras spiedpogām kā ieeja un rakstīt ieraksta/atskaņošanas režīmu.
5. darbība. Saites un resursi
Atsauces uz rokām
- Ziņa, kas iedvesmoja šo projektu
- Oriģinālo dizaineru emuāra ziņasMana robotiskā rokaMani mini servo satvērēji un pabeigta robotu roka Reiziniet robotu roku un elektroniku
- Thingiverse Arm
- Thingiverse mini servo satvērējs
Programmatūras bibliotēkas
- Adafruit PWM/servo kontroliera resursi
- MCP3008 bibliotēka
- MCP3008 datu lapa
Vadības panelis un kods
- Manis sastādītā paneļa Tinkercad rasējums
- Pašreizējais kodu krātuve
Ieteicams:
Vienkārša robota roka, kas tiek kontrolēta ar faktisko rokas kustību: 7 soļi (ar attēliem)
Vienkārša robota roka, kas tiek kontrolēta pār faktisko rokas kustību: šī ir ļoti vienkārša DOF robota roka iesācējiem. Roku kontrolē Arduino. Tas ir savienots ar sensoru, kas ir piestiprināts pie operatora rokas. Tāpēc operators var kontrolēt rokas elkoni, saliekot elkoņa kustību
Fpga kontrolēta RC servomotoru robotu roka - Digilent konkurss: 3 soļi
Fpga kontrolēta RC servomotoru robotu roka - Digilent konkurss: FPGA kontrolēts servomotoru robotu roks Šī projekta mērķis ir izveidot programmējamu sistēmu, kas var veikt lodēšanas darbības uz plātnes. Sistēma ir balstīta uz Digilent Basys3 izstrādes plati, un tā varēs lodēt kopā
ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi
ROS MoveIt Robotic Arm 2. daļa: Robotu kontrolieris: https://github.com/AIWintermuteAI/ros-moveit-arm.git Iepriekšējā raksta daļā mēs esam izveidojuši URDF un XACRO failus savai robotizētajai rokai un palaiduši RVIZ, lai kontrolētu mūsu robotu roka simulētā vidē. Šoreiz mēs to darīsim ar reālu
Arduino kontrolētā robotu roka no Lego Mindstorm: 6 soļi
Arduino kontrolētā robotu roka no Lego Mindstorm: Pārstrādājiet divus vecos Lego Mindstorm motorus satvērēja rokā, ko kontrolē Arduino Uno. Šis ir Hack Sioux Falls projekts, kurā mēs izaicinājām bērnus izveidot kaut ko foršu ar Arduino
Nunchuk kontrolētā robotu roka (ar Arduino): 14 soļi (ar attēliem)
Nunchuk kontrolētā robotu roka (ar Arduino): Robotiskās rokas ir satriecošas! Tās ir rūpnīcās visā pasaulē, kur tās precīzi krāso, lodē un pārnēsā lietas. Tos var atrast arī kosmosa izpētē, zemūdens tālvadības transportlīdzekļos un pat medicīnas lietojumos! Un tagad jūs varat