Šajā apmācībā mēs izstrādāsim Arduino Uno bāzētu robotu roku no dažiem kartoniem un servomotoriem. Viss būvniecības process ir detalizēti paskaidrots zemāk. Šajā projektā Arduino Uno ir ieprogrammēts vadīt servomotorus, kas kalpo kā robotizētās rokas locītavas. Šī iestatīšana izskatās arī kā robotizēts celtnis vai arī mēs to varam pārveidot par celtni, veicot dažus vienkāršus pielāgojumus. Šis projekts būs noderīgs iesācējiem, kuri vēlas iemācīties izstrādāt vienkāršu robotu par zemām izmaksām vai vienkārši vēlas iemācīties strādāt ar Arduino un servomotoriem.
Šo Arduino robotu roku var vadīt ar četriem tam piestiprinātiem potenciometriem, katrs potenciometrs tiek izmantots katra servo vadībai. Jūs varat pārvietot šos servo serverus, pagriežot podus, lai izvēlētos kādu objektu, un ar kādu praksi jūs varat viegli izvēlēties un pārvietot objektu no vienas vietas uz otru. Mēs šeit izmantojām zemas griezes momenta servoservus, taču smago priekšmetu pacelšanai varat izmantot jaudīgākus servo servus. Viss process ir labi parādīts videoklipa beigās. Šeit pārbaudiet arī citus mūsu robotikas projektus.
Nepieciešamās sastāvdaļas
- Arduino Uno
- 1000uF kondensators (4 gab.)
- 100nF kondensators (4 gab.)
- Servomotors (SG 90 - četri gabali)
- 10K pot - mainīgs rezistors (4 gab.)
- Barošanas avots (5v - vēlams divi)
Servo motors
Vispirms mēs runājam mazliet par Servo Motors. Servo motori galvenokārt tiek izmantoti, ja ir nepieciešama precīza vārpstas kustība vai novietojums. Tie nav paredzēti ātrgaitas lietojumiem. Servomotori tiek piedāvāti mazam ātrumam, vidējam griezes momentam un precīzai pozīcijas pielietošanai. Tātad šie motori ir vislabāk piemēroti robotizētas rokas projektēšanai.
Servomotori ir pieejami dažādās formās un izmēros. Mēs izmantosim mazus servomotorus, šeit mēs izmantojam četrus SG90 servo. Servomotorā galvenokārt būs vadi, viens ir paredzēts pozitīvam spriegumam, otrs - zemējumam, bet pēdējais - pozīcijas iestatīšanai. RED vads ir savienots ar strāvu, melnais vads ir savienots ar zemi un dzeltens vads ir savienots ar signālu. Izmēģiniet šo servomotora vadības apmācību, izmantojot Arduino, lai uzzinātu vairāk par to. Arduino servera kontrolei mums ir iepriekš noteiktas bibliotēkas, tāpēc ir ļoti viegli kontrolēt servo, ko jūs iemācīsities kopā ar šo apmācību.
Robotu rokas uzbūve
Paņemiet līdzenu un stabilu virsmu, piemēram, galdu vai cieto kartonu. Pēc tam vidū novietojiet servomotoru un pielīmējiet to vietā. Pārliecinieties, ka rotācijas pakāpe ir attēlā redzamajā apgabalā. Šis servo darbojas kā rokas pamats.
Novietojiet nelielu kartona gabalu virs pirmā servo un pēc tam uz šī dēļa gabala ielieciet otro servo un pielīmējiet to vietā. Servo rotācijai jāatbilst shēmai.
Paņemiet dažus kartonus un sagrieziet tos 3 cm x 11 cm gabalos. Pārliecinieties, ka gabals nav mīkstināts. Vienā galā izgrieziet taisnstūrveida atveri (atstājiet 0,8 cm no apakšas) tieši tik, lai būtu piemērots cits servo, un citā galā cieši piestipriniet servomehānismu ar skrūvēm vai līmi. Pēc tam ievietojiet trešo servo pirmajā caurumā.
Tagad sagrieziet vēl vienu kartona gabalu ar garumiem, kas parādīti zemāk redzamajā attēlā, un šī gabala apakšpusē pielīmējiet citu pārnesumu.
Tagad līmējiet ceturto un pēdējo servo otrā gabala malā, kā parādīts attēlā.
Tādējādi divi gabali kopā izskatās.
Kad mēs pievienosim šo iestatījumu pamatnei, tam vajadzētu izskatīties,
Tas ir gandrīz pabeigts. Mums vienkārši jāpadara āķis, lai satvertu un izvēlētos objektu kā robotu roku. Āķim sagrieziet vēl divus kartona kartona gabalus, kuru garums ir 1cmx7cm un 4cmx5cm. Līmējiet tos kopā, kā parādīts attēlā, un pielīmējiet gala pārnesumu pašā malā.
Uzlieciet šo gabalu uz augšu, un ar to mēs esam izveidojuši savu robotu roku.
Līdz ar to mūsu robotizēto roku konstrukcija tika pabeigta, un tā mēs esam uzbūvējuši savu zemo cenu robotu roku. Tagad pievienojiet ķēdi maizes dēlī saskaņā ar shēmu.
Shēmas shēma un darba skaidrojums:
Arduino Uno robotu rokas ķēdes savienojums ir parādīts zemāk.
Spriegums pāri mainīgiem rezistoriem nav pilnīgi lineārs; tas būs trokšņains. Tātad, lai filtrētu šo troksni, kondensatori tiek novietoti pāri katram rezistoram, kā parādīts attēlā.
Tagad mēs ievadīsim spriegumu, ko nodrošina šis mainīgais rezistors (spriegums, kas attēlo pozīcijas kontroli) Arduino ADC kanālos. Tam mēs izmantosim četrus UNO ADC kanālus no A0 līdz A3. Pēc ADC inicializācijas mums būs podu digitālā vērtība, kas attēlo lietotājam nepieciešamo pozīciju. Mēs ņemsim šo vērtību un saskaņosim to ar servo pozīciju.
Arduino ir seši ADC kanāli. Mēs savai robotizētajai rokai esam izmantojuši četrus. UNO ADC ir 10 bitu izšķirtspēja, tāpēc veselu skaitļu vērtības svārstās no 0 līdz 1023 (2 ^ 10 = 1024 vērtības). Tas nozīmē, ka tas ieejas spriegumus no 0 līdz 5 voltiem kartēs veselu skaitļu vērtībās no 0 līdz 1023. Tātad katram (5/1024 = 4,9 mV) vienībā. Uzziniet vairāk par sprieguma līmeņu kartēšanu, izmantojot ADC kanālus Arduino šeit.
Tagad, lai UNO pārveidotu analogo signālu ciparu signālā, mums jāizmanto Arduino Uno ADC kanāls, izmantojot tālāk norādītās funkcijas:
1. analogRead (pin); 2. analogReference (); 3. analogReadResolution (biti);
Arduino ADC kanāliem ir noklusējuma atsauces vērtību 5V. Tas nozīmē, ka mēs varam dot maksimālo ieejas spriegumu 5 V ADC pārveidošanai jebkurā ieejas kanālā. Tā kā daži sensori nodrošina spriegumu no 0-2,5 V, tāpēc ar 5 V atsauci mēs iegūstam mazāku precizitāti, tāpēc mums ir instrukcija, kas ļauj mums mainīt šo atsauces vērtību. Tātad, lai mainītu atsauces vērtību, mums ir “analogReference ();”
Pēc noklusējuma mēs iegūstam maksimālo plates ADC izšķirtspēju, kas ir 10 biti, šo izšķirtspēju var mainīt, izmantojot instrukciju (“analogReadResolution (bits);”).
Mūsu robotu rokas ķēdē mēs esam atstājuši šo atsauces spriegumu pēc noklusējuma, tāpēc mēs varam nolasīt vērtību no ADC kanāla, tieši izsaucot funkciju “analogRead (pin);”, šeit “pin” apzīmē tapu, kur mēs savienojām analogo signālu, teiksim mēs vēlamies izlasīt “A0”. Vērtību no ADC var saglabāt veselā skaitlī kā int SENSORVALUE0 = analogRead (A0); .
Tagad parunāsim par SERVO, Arduino Uno ir funkcija, kas ļauj mums kontrolēt servo pozīciju, vienkārši norādot pakāpes vērtību. Sakiet, ja mēs vēlamies, lai servo būtu 30, mēs varam tieši attēlot vērtību programmā. SERVO galvenes ( Servo.h ) fails iekšēji rūpējas par visiem darba attiecību aprēķiniem.
# iekļaut
Šis pirmais paziņojums apzīmē galvenes failu SERVO MOTOR kontrolei. Otrais apgalvojums ir servo nosaukšana; mēs to atstājam kā servo0, jo mēs izmantosim četrus. Trešais paziņojums norāda, kur ir pievienota servo signāla tapa; tam jābūt PWM tapai. Šeit mēs izmantojam PIN3 pirmajam servo. Ceturtais paziņojums dod komandas servomotora pozicionēšanai grādos. Ja tam dod 30, servomotors pagriežas par 30 grādiem.
Tagad mums ir SG90 servo pozīcija no 0 līdz 180, un ADC vērtības ir no 0 līdz 1023. Mēs izmantosim īpašu funkciju, kas automātiski atbilst abām vērtībām.
sensora vērtība0 = karte (sensora vērtība 0, 0, 1023, 0, 180);
Šis apgalvojums automātiski kartē abas vērtības un saglabā rezultātu veselā skaitļā “servovalue0” .
Tas ir veids, kā mēs esam kontrolējuši Servos mūsu Robotisko roku projektā, izmantojot Arduino. Pārbaudiet pilnu kodu zemāk.
Kā vadīt robotu:
Lietotājam ir četri podi. Un, pagriežot šos četrus podus, mēs nodrošinām mainīgu spriegumu pie UNO ADC kanāliem. Tātad Arduino digitālās vērtības ir lietotāja kontrolē. Šīs digitālās vērtības tiek kartētas, lai pielāgotu servomotora pozīciju, tādējādi servo pozīcija kontrolē lietotāju, un , pagriežot šos podus, lietotājs var pārvietoties robotizētās rokas locītavās un var paņemt vai paķert jebkuru priekšmetu.