Talaan ng mga Nilalaman:

Dalawang Wheel ng Self-Balancing Robot: 7 Mga Hakbang
Dalawang Wheel ng Self-Balancing Robot: 7 Mga Hakbang

Video: Dalawang Wheel ng Self-Balancing Robot: 7 Mga Hakbang

Video: Dalawang Wheel ng Self-Balancing Robot: 7 Mga Hakbang
Video: The Immortal Hulk: Full Story (The Big Spill) 2024, Hulyo
Anonim
Dalawang Wheel ng Robot na Self-Balancing
Dalawang Wheel ng Robot na Self-Balancing

Ang itinuturo na ito ay dadaan sa proseso ng disenyo at pagbuo para sa isang self-balancing robot. Bilang isang tala, nais ko lamang sabihin na ang mga robot sa sariling pagbabalanse ay hindi isang bagong konsepto at ang mga ito ay binuo at naitala ng iba. Nais kong gamitin ang pagkakataong ito upang ibahagi sa iyo ang aking interpretasyon ng robot na ito.

Ano ang isang self-balancing robot?

Ang isang self-balancing robot ay isang sistema na gumagamit ng data ng pagsukat ng hindi gumagalaw, na natipon mula sa isang onboard sensor, upang patuloy na ayusin ang posisyon nito upang manatiling patayo.

Paano ito gumagana?

Ang isang simpleng pagkakatulad na isasaalang-alang ay isang baligtad na palawit. Kung saan ang gitna ng masa ay nasa itaas ng pivot point. Gayunpaman, sa aming kaso, pinaghihigpitan namin ang pendulum sa 1 antas ng kalayaan sa pamamagitan ng pagkakaroon ng isang axis ng pag-ikot, sa aming kaso ang axis ng pag-ikot ng dalawang gulong. Dahil ang anumang uri ng kaguluhan ay magiging sanhi ng pagbagsak ng robot, kailangan namin ng isang paraan ng aktibong pagpapanatili ng balanse ng robot. Dito naglalaro ang aming closed-loop algorithm (PID controller), alam kung aling direksyon ang pagbagsak ng aming robot maaari naming ayusin ang direksyon ng pag-ikot ng aming mga motor upang mapanatili ang balanseng sistema.

Paano gumagana ang closed-loop algorithm?

Ang pangunahing prinsipyo sa pagpapanatili ng balanseng robot ay, kung ang robot ay nahuhulog ay magbabayad ito sa pamamagitan ng ilipat ang ilalim ng robot pasulong upang mahuli ang sarili at samakatuwid ay panatilihin ang patayo. Gayundin, kung ang robot ay nahuhulog nang paatras ay magbabayad ito sa pamamagitan ng paggalaw sa ilalim ng robot paatras upang mahuli ang sarili.

Kaya, kailangan nating gumawa ng dalawang bagay dito, una, kailangan nating kalkulahin ang anggulo ng pagkahilig (Roll) na nararanasan ng robot at bilang isang resulta, kailangan nating kontrolin ang direksyon ng pag-ikot ng mga motor.

Paano namin susukatin ang anggulo ng pagkahilig?

Upang sukatin ang anggulo ng pagkahilig gagamitin namin ang isang Yunit ng Pagsukat ng Inertial. Ang mga modyul na ito ay nagsasama ng isang accelerometer at gyroscope.

  • Ang accelerometer ay isang aparato na electromagnetic na sumusukat sa wastong pagpapabilis, ito ang pagpabilis ng isang katawan sa isang instant na frame ng pahinga.
  • Ang gyroscope ay isang electromekanical na aparato na sumusukat sa anggular na tulin at ginagamit upang matukoy ang oryentasyon ng aparato.

Gayunpaman, ang problema sa paggamit ng mga naturang sensor ay ang:

  • Ang accelerometer ay napaka ingay ngunit pare-pareho sa paglipas ng panahon, ang anggulo ay nag-iiba sa biglang pahalang na paggalaw
  • Ang halaga ng gyroscope, sa kabilang banda, ay naaanod sa paglipas ng panahon, ngunit sa una, ito ay medyo tumpak

Para sa itinuturo na ito, hindi ako magpapatupad ng isang filter sa halip masamang paggamit ng onboard na Digital Motion Processing (DMP). Ang iba ay gumamit ng isang pantulong na filter upang makakuha ng isang makinis na signal, maaari kang pumili ng alinmang pamamaraan na gusto mo. habang ang robot ay nagbabalanse sa alinman sa pagpapatupad.

Mga gamit

Mga Bahagi:

  1. Arduino Pro Mini 3.3V 8 na may 8 Mhz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB sa TTL serial module ng adapter
  3. GY-521 module na may MPU-6050
  4. Isang pares ng N20 micro gear motor 6V - 300rpm
  5. L298N driver ng motor
  6. LM2596S DC sa DC buck converter
  7. Baterya (Rechargeable 9.7V Li-ion na baterya pack)
  8. Strap ng baterya
  9. Dalawang prototyping PCB circuit board
  10. Lalaki at babaeng header pin jumper wires

Mga tool:

  1. Panghinang at bakalang panghinang
  2. Pagkakatay ng nylon hex spacer
  3. Itinakda ang Precision screwdriver
  4. 3d printer

Hakbang 1: Konstruksiyon

Dahil may access ako sa isang 3D printer nagpasya akong i-print ng 3D ang chassis at gumamit ng mga standoff upang ikonekta ang lahat nang magkasama.

Ang robot ay binubuo ng 4 na mga layer

  1. Ang ilalim na layer ay nag-uugnay sa mga motor at may mga mounting point para sa L298N motor driver module
  2. Ang susunod na layer ay matatagpuan ang prototype board na may Arduino pro mini at mga header na solder dito
  3. Ang pangatlong layer ay nai-mount ang IMU
  4. Ang tuktok na layer, na tinawag kong "bumper layer" ay hols ang baterya, ang buck converter, at isang switch ng pera

Ang aking pangunahing prinsipyo sa disenyo ay panatilihing modular ang lahat. Ang dahilan para dito ay kung may isang bagay na nagkamali sa isa sa mga sangkap madali ko itong mapapalitan o kung kailangan ko ng isang bahagi para sa isa pang proyekto madali ko itong madadala nang hindi nag-aalala tungkol sa hindi magagamit muli ang system.

Hakbang 2: Mga kable

Kable
Kable

Naghinang ako ng ilang mga babaeng pin ng header sa isang perf-board upang tumugma sa mga Arduino pro mini header pin. Kasunod nito, naghinang ako ng male header na pin ang board upang payagan ang pag-access sa I / O. Ang natitirang mga bahagi ay naka-mount sa naka-print na frame ng 3D at konektado gamit ang mga jumper wires.

Hakbang 3: Control Theory

Ngayon ay nagpapatuloy kami sa pangunahing bahagi ng proyekto. Upang mapanatili ang balanse ng robot, kailangan nating makabuo ng isang naaangkop na signal ng kontrol upang maihimok ang mga motor sa tamang direksyon at sa tamang bilis upang mapanatili ang balanse at matatag ng robot. Upang magawa ito, gagamit kami ng isang tanyag na algorithm ng control loop na kilala bilang isang PID controller. Tulad ng ipinahihiwatig ng akronim na mayroong tatlong mga termino sa tagakontrol na ito, ito ang proporsyonal, integral, at mga derivative na termino. Ang bawat isa ay sinamahan ng mga coefficients na tumutukoy sa kanilang impluwensya sa system. Kadalasan ang pinaka-gumugugol na bahagi ng pagpapatupad ng controller ay ang pag-tune ng mga nadagdag para sa bawat natatanging system upang makuha ang pinaka-pinakamainam na tugon.

  • Ang proporsyonal na term na direktang nagpaparami ng error upang magbigay ng isang output, kaya't mas malaki ang error mas malaki ang tugon
  • Ang integral na term ay bumubuo ng isang tugon batay sa isang akumulasyon ng error upang mabawasan ang steady-state error. Kung mas matagal ang system ay hindi balanse ang bilis ng mga motor ay tutugon
  • Ang derivative term ay ang hango ng error na ginamit upang mahulaan ang tugon sa hinaharap at sa paggawa nito binabawasan ang oscillation dahil sa sobrang pag-overshooting ng steady-state.

Ang pangunahing prinsipyo ng algorithm na ito ay upang patuloy na kalkulahin ang anggulo ng pagkahilig na kung saan ay ang pagkakaiba sa pagitan ng nais na posisyon at ng kasalukuyang posisyon, ito ay kilala bilang error. Ginagamit nito pagkatapos ang mga halagang ito ng error at kinakalkula ang kabuuan ng proporsyonal, integral, at mga derivative na tugon upang makakuha ng isang output, na kung saan ay ang mga signal ng kontrol na ipinadala sa mga motor. Bilang isang resulta, kung malaki ang error ang signal ng kontrol na ipinadala sa mga motor ay paikutin ang mga motor sa mataas na bilis upang makarating sa isang balanseng estado. Gayundin, kung ang error ay maliit ang control signal ay paikutin ang mga motor na mababa ang bilis upang mapanatili ang balanse ng robot.

Hakbang 4: Paggamit ng MPU 6050

MPU6050 Library

github.com/jrowberg/i2cdevlib/tree/master/…

Hindi lahat ng mga sensor ay eksaktong replika ng bawat isa. Bilang isang resulta, kung susubukan mo ang dalawang MPU 6050 maaari kang makakuha ng iba't ibang mga halaga para sa accelerometer at gyroscope kapag nakalagay pa rin sa parehong ibabaw. Upang mapagtagumpayan ang pare-pareho na offset ng anggulo kailangan nating ipagdiwang ang bawat sensor na ginagamit namin. Pagpapatakbo ng script na ito:

www.i2cdevlib.com/forums/topic/96-arduino-…

isinulat ni Luis Rodenas, makakakuha kami ng mga offset. Ang mga error na offset ay maaaring matanggal sa pamamagitan ng pagtukoy ng mga halaga ng offset sa setup () na gawain.

Gamit ang Digital Motion Processor

Naglalaman ang MPU6050 ng isang DMP (Digital Motion Processor).

Ano ang DMP? Maaari mong isipin ang DMP bilang isang onboard microcontroller na nagpoproseso ng kumplikadong paggalaw mula sa 3-axis gyroscope at 3-axis accelerometer sa board ng mpu6050, gamit ang sarili nitong mga algorithm ng pagsasanib ng paggalaw. Pag-offload ng pagpoproseso na kung hindi ay magagawa ng Arduino

Paano ito magagamit? Upang malaman kung paano gamitin ang DMP dumaan sa halimbawa ng sketch MPU6050_DMP6 na kasama ng library ng MPU6050 (sa Arduino IDE: File-> Halimbawa-> MPU6050-> MPU6050_DMP6). Ito rin ay isang magandang pagkakataon upang suriin ang iyong sensor na talagang gumagana at ang mga kable ay tama

Hakbang 5: Pag-coding

Ginamit ko ang Arduino IDE at isang interface ng FTDI upang mai-program ang Arduino pro mini.

Gamit ang halimbawa ng sketch (MPU6050_DMP6) na kasama ng library ng MPU6050 bilang aking base code ay nagdagdag ako ng mga pagpapaandar ng PID () at MotorDriver ().

Idagdag ang library

  • MPU6050: Upang magamit ang sensor ng MPU6050 kakailanganin naming i-download ang I2C developer library mula kay Jeff Rowberg at idagdag ito sa Arduino "libraries" folder na matatagpuan sa mga file ng programa sa iyong computer.
  • Wire: Kailangan din namin ang Wire library upang pahintulutan kaming makipag-usap sa mga aparatong I2C.

Pseudo Code

Isama ang Mga Aklatan:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Inisyal na mga variable, Constant, at object

Pag-setup ()

  • Itakda ang pin mode para sa pagkontrol ng mga motor
  • Itakda ang pin mode para sa LED status
  • Pasimulan ang MPU6050 at magtakda ng mga halaga ng offset

PID ()

Kalkulahin ang halaga ng PID

MotorDriver (tugon ng PID)

Gumamit ng halaga ng PID upang makontrol ang bilis at direksyon ng mga motor

Loop ()

  • Kumuha ng data mula sa DMP
  • Tumawag sa PID () isang paggana ng MotorDriver ()

Hakbang 6: Pamamaraan ng Pag-tune ng PID

Ito ang pinaka nakakapagod na bahagi ng proyekto at nangangailangan ng kaunting pasensya maliban kung napakaswerte mo. Narito ang mga hakbang:

  1. Itakda ang termino I at D sa 0
  2. Hawak ang robot, ayusin ang P upang ang robot ay magsimula lamang mag-oscillate tungkol sa posisyon ng balanse
  3. Sa set ng P, taasan ang I upang ang robot ay mas mabilis na bumilis kapag wala sa balanse. Sa maayos na pag-tune ng P at ako, ang robot ay dapat na makapag-balanse sa sarili nang hindi bababa sa ilang segundo, na may ilang osilasyon
  4. Panghuli, dagdagan ang D mabawasan ang pag-oscillation

Kung ang unang pagtatangka ay hindi nagbibigay ng kasiya-siyang mga resulta, ulitin ang mga hakbang na may ibang halaga ng P. Alamin din na maaari mong maayos ang mga halagang PID pagkatapos, upang higit na madagdagan ang pagganap. Ang mga halaga dito ay nakasalalay sa hardware, huwag magulat kung nakakakuha ka ng napakalaki o napakaliit na mga halaga ng PID.

Hakbang 7: Konklusi

Ang mga micro gear motor na ginamit ay mabagal upang makapag-reaksyon sa malalaking abala at bibigyan ang sistema ay masyadong magaan walang sapat na pagkawalang-kilos upang makuha ang nais na pendulum effect, kaya't kung ang robot ay nakasandal ay nakasandal lamang ito sa isang anggulo at pasulong ng karera. Sa wakas, ang mga naka-print na gulong ng 3D ay isang masamang pagpipilian habang patuloy silang nadulas.

Mga mungkahi para sa pagpapabuti:

  • Mas mabilis na mga motor na may mas mataas na metalikang kuwintas, ibig sabihin, para sa mga DC motor ay mas mataas ang boltahe na nag-rate ng mas mataas na metalikang kuwintas
  • makakuha ng isang mas mabibigat na baterya o ilipat lamang ang masa nang medyo mas mataas
  • Palitan ang mga naka-print na gulong ng mga goma upang makakuha ng mas maraming lakas

Inirerekumendang: