Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Hakbang 1: Pag-set up
- Hakbang 2: Hakbang 2: Pagpapaliwanag ng Code
- Hakbang 3: TAPOS
Video: Angular Positional Control ng 28BYJ-48 Stepper Motor Na May Arduino at Analogue Joystick: 3 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Ito ay isang control scheme para sa 28BYJ-48 stepper motor na binuo ko upang magamit bilang bahagi ng aking proyekto sa panghuling taon ng disertasyon. Hindi ko pa ito nakita dati na nagawa kong i-upload ang natuklasan ko. Inaasahan kong makakatulong ito sa ibang tao diyan!
Karaniwang pinapayagan ng code ang isang stepper motor na "kopyahin" ang angular na posisyon ng isang analogue joystick, iyon ay upang sabihin kung itulak mo ang joystick pasulong, ang motor ay tumuturo patungo sa "hilaga". itulak ang joystick patungo sa kanluran, ang motor ay umiikot upang ituro sa parehong direksyon.
Para sa aking pagpapatupad kinakailangan ko na kung ang joystick ay pinakawalan, ibig sabihin ay walang anggular na posisyon, ang motor ay bumalik sa direksyon na "tahanan". Ang direksyon ng bahay ay nakaharap sa silangan, at ang motor (o sa pagpapaupa ng anumang pointer / aparato na na-attach mo sa output shaft!) Ay dapat ding nakaharap sa direksyon na ito kapag pinapagana.
Mga gamit
Arduino Uno o katulad
breadboard at pagpili ng mga wire ng jumper (lalaki hanggang lalaki, lalaki hanggang babae)
5V supply ng kuryente
Analogue joystick module (mainam na may isang pansamantalang tampok na pindutan ng push, ginagawang mas madali ang pamamahinga ng posisyon na "home"
28BYJ-48 stepper motor at ULN2003 stepper driver
Panulat, papel at blu-tac (o anumang iba pang aparato ng pointer upang ilakip sa motor!)
Hakbang 1: Hakbang 1: Pag-set up
Ikonekta ang stepper motor sa stepper driver, at ikonekta ang mga pin tulad ng sumusunod:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - Arduino pin 10
IN4 - Arduino pin 11
Ikonekta ang iyong 5v power supply sa mga supply rails sa iyong breadboard, at ikonekta ang mga ULN2003 5v input sa mga riles ng supply. ikonekta ang ground rail sa lupa sa iyong Arduino.
para sa joystick, kumonekta tulad ng sumusunod:
Switch pin - Arduino pin 2
X axis - Arduino A0 (Analogue sa 0)
Y axis - Arduino A1
+ 5V - Arduino 5V output
GND - Arduino GND
Sa wakas ay ikonekta ang lupa ng iyong breadboard sa iba pang Arduino GND pin
Hakbang 2: Hakbang 2: Pagpapaliwanag ng Code
Isinama ko ang buong Arduino code para ma-download at magamit mo. Ngunit gagawin ang aking makakaya upang ipaliwanag ang mga kaugnay na bahagi dito.
Ang teorya sa likod ng code na ito ay ang puwang na sinakop ng joystick ay nahahati sa isang graph, na may 0, 0 sa gitna. subalit ang mga input ng joystick ay natitira sa (tinatayang) 512 sa gitna, kaya upang mapagtagumpayan ang dalawang pagpapaandar na ito ay ginagamit upang "zero" ang binasang halaga mula sa axis ng X at Y. nakasalalay sa suplay ng kuryente na ginamit mo maaaring kailanganin mong baguhin ang mga halaga sa mga pagpapaandar na ZeroX at ZeroY upang ang iyong joystick ay magbibigay ng isang maaasahang pagbabasa ng 0 kapag nagpapahinga.
Kapag nabasa ang mga halagang X, Y, una silang na-convert sa mga radian gamit ang function na atan2 () sa library ng matematika.h. Ang pagpapaliwanag ng pagpapaandar na ito ay nasa labas ng saklaw ng pagtuturo na ito, ngunit mangyaring tingnan ito - ito ay isang simpleng simpleng trick ng geometry!
Sa wakas, upang gawing mas madali ang buhay para sa amin na dating nagtatrabaho sa degree kaysa sa mga rad, ang halaga ng rad na kinakalkula ng atan2 () ay na-convert sa degree.
Sa tuktok ng loop ay isang maliit na snippet ng code na nagbibigay-daan sa iyo upang mag-click sa panandaliang pindutan sa joystick upang ilipat ang lokasyon ng "home". Ito ay hindi kapani-paniwalang kapaki-pakinabang habang sinusubukan ang code, ngunit naiwan ko ito dahil nakikita ko kung paano ito magiging kapaki-pakinabang sa ilang mga pagkakataon.
Ngayon sa pangunahing bultuhan ng code! nagsisimula kami sa pamamagitan ng pagbabasa ng joystick X, Y coordinate dalawang beses na pinaghiwalay ng isang 10ms pagkaantala at pagkatapos ay suriin kung pareho ang mga ito - Nalaman ko na ang joystick ay paminsan-minsan na naglalabas ng sporadic readings, at ang bahagyang pagkaantala na ito ay sapat upang ihinto ang pag-on ng motor batay sa mga ito. Ito rin ay isang maikling sapat na pagkaantala na tila hindi makagambala sa mga sadyang pag-input.
Ang natitirang code ay sa sarili ay nagpapaliwanag at nagawa ko ang aking makakaya upang idokumento ito; Ang isang serye ng mga pahayag ng KUNG ihambing ang kasalukuyang anggulo ng joystick sa anggulo ng motor, at ilipat ang motor sa anggulo na iyon. Ang 28BYJ-48 ay may 5.689 na mga hakbang bawat degree, kaya't pinarami namin ang kinakailangang paggalaw ng tila kakaibang numero na ito!
Ang isang bahagi ng code na nangangailangan ng pinaka-nagpapaliwanag ay ang tinawag kong "wraparound case". Sa gabi na ang joystick at motor ay nasa hal. + 175 °, at ang joystick pagkatapos ay lumipat sa -175 ° (isang kilusan na 10 ° lamang sa joystick, mula sa hilaga lamang ng kanluran hanggang timog lamang ng kanluran), ang motor ay lilipat SA MALING DIREKSIYON ng 350 °! upang account para sa mga ito ang espesyal na kaso ay nakasulat.
Ang case ng wraparound ay nagsisimula sa pamamagitan ng pag-check kung ang motor at joystick ay may kabaligtaran na mga palatandaan, ibig sabihin, positibo ang motor at negatibo ang joystick, o kabaligtaran. Sinusuri din nito na ang kabuuan ng ganap (iyon ay, mga positibong halaga) ng joystick at motor ay higit sa 180 °.
Kung ang parehong mga pahayag na ito ay totoo, ang pag-andar pagkatapos ay suriin kung ang motor ay kailangang ilipat sa pakanan (ang halaga ng motor ay negatibo) o anticlockwise (kung ang halaga ng motor ay positibo).
Ang ganap na mga halaga ng anggulo ng motor at anggulo ng joystick ay totaled, at ibabawas mula sa 360 ° upang matukoy ang distansya upang ilipat. Sa wakas, ang anggulo ng motor (na sumasalamin ngayon sa anggulo ng joystick) ay na-update na tulad nito.
Hakbang 3: TAPOS
Kaya, ang natitira lamang upang gawin ay i-upload ang code sa iyong Arduino at patakbuhin ito! Tingnan ang video sa itaas para sa isang magandang ideya kung paano gumagana ang proyekto. Ito ay magiging kapaki-pakinabang para sa mga camera gimbal, robotic arm at maraming iba pang mga application!
Kung gagamitin mo ang code, mangyaring ipaalam sa akin, at kung may nakikita ka kung saan maaaring mapabuti ang code, gusto kong marinig ang iyong puna.
Inirerekumendang:
Paano Gumamit ng 28BYJ-48 Stepper Motor Na May 3 Mga Push Button: 5 Hakbang
Paano Gumamit ng 28BYJ-48 Stepper Motor Na May 3 Push Buttons: Nais mo bang makontrol ang iyong stepper motor gamit ang mga push button? Maaari itong gawin Clockwise, Counter Clockwise at pagkatapos ay Itigil ang pagpapaandar? Pagkatapos ang video na ito ay para sa iyo
Kinokontrol ng Stepper Motor na Stepper Motor Nang Walang Microcontroller (V2): 9 Mga Hakbang (na may Mga Larawan)
Kinokontrol ng Stepper Motor na Stepper Motor Nang Walang Microcontroller (V2): Sa isa sa aking mga nakaraang Instructable, ipinakita ko sa iyo kung paano makontrol ang isang stepper motor na gumagamit ng isang stepper motor na walang microcontroller. Ito ay isang mabilis at nakakatuwang proyekto ngunit dumating ito kasama ang dalawang mga problema na malulutas sa Instructable na ito. Kaya, wit
Kinokontrol na Modelong Stepper Motor ng Stepper - Stepper Motor Bilang isang Rotary Encoder: 11 Hakbang (na may Mga Larawan)
Kinokontrol na Modelong Stepper Motor ng Stepper | Stepper Motor Bilang isang Rotary Encoder: Sa isa sa mga nakaraang Instructable, natutunan namin kung paano gamitin ang isang stepper motor bilang isang rotary encoder. Sa proyektong ito, gagamitin namin ngayon ang stepper motor na naka-rotary encoder upang makontrol ang isang modelo ng lokomotip gamit ang isang Arduino microcontroller. Kaya, nang walang fu
Kinokontrol ng Stepper Motor na Stepper Motor - Stepper Motor Bilang isang Rotary Encoder: 11 Hakbang (na may Mga Larawan)
Kinokontrol ng Stepper Motor na Stepper Motor | Stepper Motor Bilang isang Rotary Encoder: Magkaroon ng isang pares ng mga stepper motor na nakahiga at nais na gumawa ng isang bagay? Sa Instructable na ito, gumamit tayo ng isang stepper motor bilang isang rotary encoder upang makontrol ang posisyon ng isa pang stepper motor gamit ang isang Arduino microcontroller. Kaya't nang walang pag-aalinlangan, ge
Mga Circuit ng Raspberry Pi GPIO: Paggamit ng isang LDR Analogue Sensor Nang walang isang ADC (Analogue sa Digital Converter): 4 na Hakbang
Mga Circuit ng Raspberry Pi GPIO: Paggamit ng isang LDR Analogue Sensor Nang walang isang ADC (Analogue sa Digital Converter): Sa aming naunang mga Instructable, ipinakita namin sa iyo kung paano mo mai-link ang mga pin ng GPIO ng iyong Raspberry Pi sa mga LED at switch, at kung paano maaaring maging Mataas ang mga pin ng GPIO o Mababa. Ngunit paano kung nais mong gamitin ang iyong Raspberry Pi gamit ang isang analogue sensor? Kung nais naming gumamit ng