Talaan ng mga Nilalaman:

Robotic Arm Kinokontrol ng Arduino at PC: 10 Hakbang
Robotic Arm Kinokontrol ng Arduino at PC: 10 Hakbang

Video: Robotic Arm Kinokontrol ng Arduino at PC: 10 Hakbang

Video: Robotic Arm Kinokontrol ng Arduino at PC: 10 Hakbang
Video: Record & play micro servo robotic Arm 2024, Nobyembre
Anonim
Image
Image
Teorya sa Likod ng Proyekto
Teorya sa Likod ng Proyekto

Ang mga armas ng robotic ay malawakang ginagamit sa industriya. Kung ito man ay para sa pagpapatakbo ng pagpupulong, ang hinang o kahit isa ay ginagamit para sa pag-dock sa ISS (International Space Station), tinutulungan nila ang mga tao sa trabaho o pinalitan nila ang tao nang buo. Ang braso na aking itinayo ay mas maliit na representasyon ng robotic arm na dapat gamitin para sa gumagalaw na mga bagay. Kinokontrol ito ng arduino pro mini na mayroon nang built-in na library para sa pagkontrol sa mga servos. Ang servos ay kinokontrol ng PWM (Pulse Width Modulation) na hindi mahirap i-program ngunit ginagawang mas madali ng library na ito. Maaaring makontrol ng gumagamit ang mga servos na iyon sa pamamagitan ng potentiometers na idinisenyo upang kumilos bilang mga divider ng boltahe o mula sa programa sa PC na gumagamit ng 4 na mga slider para sa pagkontrol sa mga servo motor.

Para sa proyektong ito kailangan kong idisenyo ang aking pasadyang PCB at gawin ito, lumikha ng mga 3D na modelo ng braso at magsulat ng code na kumokontrol sa lahat. Sa tuktok nito naka-code ako ng karagdagang programa sa sawa na nagpapadala ng mga signal sa arduino na namamahala sa pag-decode ng signal na iyon at ilipat ang mga servos sa posisyon na itinakda ng gumagamit.

Hakbang 1: Teorya sa Likod ng Proyekto

Teorya sa Likod ng Proyekto
Teorya sa Likod ng Proyekto

Magaling ang Arduino sa paraang iyon na nag-aalok ito ng libreng library upang magtrabaho. Para sa proyektong ito ginamit ko ang library Servo.h na ginagawang mas madali ang pagkontrol ng mga servo.

Ang servo motor ay kinokontrol ng PWM -Pulse Width Modulation- na nangangahulugang upang makontrol ang servo kailangan mong gumawa ng mga maikling boltahe na pulso. Maaaring i-decode ng Servo ang haba ng signal na ito at paikutin sa ibinigay na posisyon. At dito ko ginamit ang nabanggit na library. Hindi ko kinailangan kalkulahin ang haba ng signal sa aking sarili ngunit ginamit ko ang mga pag-andar ng library kung saan ipinapasa ko lang ang parameter sa mga degree at gumagawa ito ng signal.

Para sa pagkontrol sa mga servos Gumamit ako ng mga potentiometers na kumikilos bilang mga divider ng boltahe. Ang mga board ng Arduino ay may maraming mga analog / digital converter na ginamit ko para sa proyekto. Talaga ang arduino ay sinusubaybayan ang boltahe sa gitnang pin sa potentiometer at kung ito ay umiikot sa isang gilid na boltahe dito ay 0 Volts (halaga = 0) at sa kabilang panig ito ay 5 Volts (halaga = 1023). Ang halagang ito ay na-scale mula sa saklaw na 0 - 1023 hanggang 0 - 180 at pagkatapos ay ipinasa ito sa pagpapaandar na nabanggit na.

Ang isa pang paksa ay ang serial na komunikasyon sa arduino na sasakupin ko lamang ng maikling. Karaniwang programa na nakasulat sa PC ay nagpapadala ng halagang pinili ng gumagamit, maaaring mai-decode ito ng arduino at ilipat ang servo sa ibinigay na posisyon

Hakbang 2: Pagdidisenyo ng PCB

Pagdidisenyo ng PCB
Pagdidisenyo ng PCB
Pagdidisenyo ng PCB
Pagdidisenyo ng PCB
Pagdidisenyo ng PCB
Pagdidisenyo ng PCB

Dinisenyo ko ang 2 PCB - isa para sa pangunahing kontrol kung saan ang arduino at mga pin para sa mga servo at sa pangalawa ay ang mga potensyal. Dahilan para sa 2 PCB ay nais kong makontrol ang robotic arm mula sa ligtas na distansya. Ang parehong mga circuit ay konektado sa pamamagitan ng cable ng ibinigay na haba - sa aking kaso 80 cm.

Para sa mapagkukunan ng kuryente pinili ko ang panlabas na adapter dahil ang mga servos na ginamit ko ay kumakain ng mas maraming lakas kaysa sa maaring ibigay ng arduino. Tulad ng nakikita mo may ilang mga capacitor na hindi ko pa nabanggit. Ginagamit ang mga ito para sa pagsala. Tulad ng alam mo ngayon, ang servo motor ay kinokontrol ng mga maikling salpok. Ang mga salpok na iyon ay maaaring gumawa ng supply ng mga patak ng boltahe at potentiometers na dating saklaw ng 0-5 volts ngayon ay may mas maliit na saklaw. Nangangahulugan iyon na ang boltahe sa gitna ng pin ay nagbabago at ang arduino ay nakakakuha ng halagang ito at binabago ang posisyon na ang servo motor. Maaari itong magpatuloy magpakailanman at nagdudulot ito ng hindi ginustong pag-oscillation na maaaring matanggal ng ilang mga capacitor na parallel sa supply.

Hakbang 3: Paggawa ng PCB

Paggawa ng PCB
Paggawa ng PCB
Paggawa ng PCB
Paggawa ng PCB
Paggawa ng PCB
Paggawa ng PCB

Para sa paggawa ng PCB iminumungkahi ko sa iyo na basahin ito.

Gumamit ako ng Iron on Glossy paper na pamamaraan at mahusay itong gumana.

Pagkatapos ay naghinang ako ng mga bahagi sa PCB. Maaari mong makita na gumamit ako ng arduino socket kung sakaling kakailanganin ko ito sa hinaharap.

Hakbang 4: Pagdidisenyo ng Arm

Pagdidisenyo ng Arm
Pagdidisenyo ng Arm
Pagdidisenyo ng Arm
Pagdidisenyo ng Arm
Pagdidisenyo ng Arm
Pagdidisenyo ng Arm

Ito ay hindi sa anumang paraan ang pinakamahirap na bahagi ng paggawa ng proyektong ito.

Ang buong pag-setup ay ginawa mula sa 8 bahagi kung saan ang 4 ay hindi gumagalaw na bahagi - kahon para sa potentiometers at base kung saan matatagpuan ang arduino - at iba pang apat ang braso mismo. Hindi ako magtutuon ng detalye ngunit ang disenyo na iyon ay medyo madaling maunawaan at sa simpleng paraan. Dinisenyo ito upang magkasya sa aking pasadyang PCB at mga servos na isasama ko sa listahan ng mga bahagi.

Hakbang 5: Pag-print ng Mga Bahagi

Pagpi-print ng Mga Bahagi
Pagpi-print ng Mga Bahagi
Pagpi-print ng Mga Bahagi
Pagpi-print ng Mga Bahagi
Pagpi-print ng Mga Bahagi
Pagpi-print ng Mga Bahagi

Ang mga bahagi ay nakalimbag sa Prusa printer. Ang ilang mga mukha ay kailangang ma-ground ng kaunti at ang mga butas ay drilled trough. Gayundin ang mga sumusuporta sa mga haligi ay kailangang alisin.

Hakbang 6: Pagsasama-sama sa Lahat ng Ito

Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito

Sa hakbang na ito tulad ng sinasabi ng pamagat na pinagsama ko lahat.

Sa una ay nag-solder ako ng mga wires sa potentiometers at pagkatapos ang mga wires sa PCB. Ang mga potensyal ay mahusay na magkasya sa mga butas at mainit kong nakadikit ang PCB sa mga haligi na nakalimbag sa ilalim ng kahon. Maaari kang mag-drill ng mga butas sa board at sa kahon ngunit nalaman kong ang pagdikit nito ay higit pa sa sapat. Pagkatapos ay isinara ko ang parehong bahagi ng kahon at na-secure ang mga ito sa posisyon na may 4 na mga turnilyo na umaangkop sa mga butas na dinisenyo ko.

Bilang isang susunod na hakbang gumawa ako ng flat ribbon cable upang ikonekta ang parehong mga board.

Sa pangunahing kahon ay nag-solder ako ng mga wire mula sa VCC pin ng konektor upang lumipat at pagkatapos ay sa Vcc ng board at mula sa GND ng board hanggang sa GND ng konektor. Pagkatapos ay mainit kong nakadikit ang konektor sa lugar at nakasakay sa mga haligi. Tama ang sukat ng konektor sa butas kaya't hindi kinakailangan ng mainit na pandikit.

Pagkatapos, sa pamamagitan ng paggamit ng mga tornilyo ay ikinabit ko ang ilalim na servo sa ilalim ng kahon.

Pagkatapos nito ay inilagay ko ang itaas na bahagi ng kahon sa ilalim na bahagi at katulad ng sa potentiometer box ay na-secure ko ito sa 4 na mga turnilyo.

Ang susunod na bahagi ay medyo nakakalito ngunit nagawa kong ilagay ang natitirang braso kasama ang iba't ibang mga mani at pad at hindi ito masikip tulad ng inaasahan ko dahil dinisenyo ko ang ilang mga pagpapaubaya sa pagitan ng mga bahagi, kaya mas madaling makipagtulungan sa kanila.

At bilang pangwakas na hakbang inilalagay ko ang ilang tape sa ilalim ng mga kahon dahil kung hindi man ay dumudulas ang mga ito.

Hakbang 7: Programming Arduino

Programming Arduino
Programming Arduino
Programming Arduino
Programming Arduino
Programming Arduino
Programming Arduino

Nabanggit ko na kung paano gumagana ang programa sa teorya sa likod ng proyekto, ngunit mas lalo ko itong masisira.

Kaya't sa simula kailangan nating tukuyin ang ilang mga variable. Karamihan ay kinopya ito ng 4 na beses dahil mayroon kaming 4 na servo at sa palagay ko hindi kinakailangan na gumawa ng mas kumplikadong lohika upang gawing mas maikli ang programa.

Susunod mayroong walang bisa na pag-set up kung saan tinukoy ang mga pin ng servos.

Pagkatapos ay may walang bisa na loop - bahagi ng programa na nag-loop nang walang hanggan. Sa bahaging ito ng programa ay kinukuha ang halaga mula sa kaliskis ng potensyomiter nito at inilalagay sa output. Ngunit may isang problema na ang halaga mula sa potentiometer ay tumalon nang kaunti kaya kailangan kong magdagdag ng filter na gumagawa ng average ng huling 5 halaga at pagkatapos ay naglalagay ito ng output. Pinipigilan nito ang hindi ginustong pag-alog.

Ang huling bahagi ng programa ay nagbabasa ng data mula sa serial port at nagpapasya kung ano ang gagawin batay sa ipinadala na data.

Upang lubos na maunawaan ang code, iminumungkahi ko sa iyong pagbisita sa mga opisyal na website ng arduino.

Hakbang 8: Programming sa Python

Programming sa Python
Programming sa Python
Programming sa Python
Programming sa Python
Programming sa Python
Programming sa Python

Ang bahaging ito ng proyektong ito ay hindi kinakailangan ngunit sa palagay ko ay nagbibigay lamang ito ng higit na halaga sa proyektong ito.

Nag-aalok ang Python ng mga toneladang aklatan na malayang magamit ngunit sa proyektong ito gumagamit lamang ako ng tkinter at serial. Ginagamit ang Tkinter para sa GUI (Graphical User Interface) at serial tulad ng sinasabi ng pangalan nito na ginagamit para sa serial na komunikasyon.

Lumilikha ang code na ito ng GUI na may 4 na mga slider na may minimum na halagang 0 at maximum na 180. Maaaring pahiwatig para sa iyo na ito ay nasa degree at ang bawat slider ay na-program upang makontrol ang isang servo. Ang program na ito ay sa halip simple - kinakailangan ang halaga at ipapadala ito sa arduino. Ngunit ang paraan ng pagpapadala nito ay kawili-wili. Kung pipiliin mong baguhin ang halaga ng unang servo sa 123 degree magpapadala ito sa halaga ng arduino 1123. Ang unang numero ng bawat ipinadala na numero ay nagsasabi kung aling servo ang malapit nang makontrol. Ang Arduino ay may code na maaaring decode ito at ilipat ang tamang servo.

Hakbang 9: Listahan ng Mga Bahagi

Listahan ng Mga Bahagi
Listahan ng Mga Bahagi
  • Arduino Pro Mini 1 piraso
  • Servo FS5106B 1 piraso
  • Servo Futaba S3003 2 piraso
  • I-pin ang header 2x5 1 piraso
  • I-pin ang header 1x3 6 na piraso
  • Capacitor 220uF 3 piraso
  • Micro Servo FS90 1 piraso
  • Connector AWP-10 2 piraso
  • Connector FC681492 1 piraso
  • Lumipat P-B100G1 1 piraso
  • Socket 2x14 1 piraso
  • TTL-232R-5v - converter ng 1 piraso
  • Potentiometer B200K 4 na piraso
  • at marami pang mga turnilyo, pad at nut

Hakbang 10: Pangwakas na Mga Saloobin

Salamat sa pagbabasa nito at inaasahan kong na-motivate kita kahit papaano. Ito ang aking kauna-unahang mas malaking proyekto kung saan ginawa ko ang aking sarili nang hindi kinopya ang mga bagay mula sa internet at unang nai-post na mga itinuturo. Alam ko na ang braso ay maaaring ma-upgrade ngunit nasiyahan ako dito sa ngayon. Ang lahat ng mga bahagi at source code ay libre, malugod mong magagamit ito at baguhin ito sa anumang paraang nais mo. Kung mayroon kang anumang mga katanungan huwag mag-atubiling tanungin sila sa seksyon ng komento. Maaari mo ring tingnan ang mga video, ang mga ito ay hindi nasa mahusay na kalidad ngunit ipinapakita nila ang pagpapaandar ng proyekto.

Inirerekumendang: