Talaan ng mga Nilalaman:
Video: UChip - Simple Sketch to Remote Control Motors And / or Servos Via 2.4GHz Radio Tx-Rx !: 3 Hakbang
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Gusto ko talaga ang mundo ng RC. Ang paggamit ng isang laruang RC ay nagbibigay sa iyo ng pakiramdam na ikaw ay may kontrol sa isang bagay na pambihira, sa kabila ng pagiging isang maliit na bangka, kotse o drone!
Gayunpaman, hindi madaling ipasadya ang iyong mga laruan at gawin silang gawin kahit anong gusto mong gawin nila. Kadalasan, napipilitan kang gamitin ang mga default na setting ng transmiter o ang partikular na idinisenyo na mga kumbinasyon ng mga switch at knobs.
Ang pagkontrol sa lahat ng bagay na talagang gusto mo ay medyo mahirap, higit sa lahat dahil ang RC mundo ay nangangailangan ng isang malalim na kaalaman sa pagprogram sa antas ng hardware upang makuha ang pinakamahusay dito.
Sinubukan ko ang maraming mga platform at pag-setup, ngunit palaging nagkakahalaga ito ng isang malaking pagsisikap upang makakuha ng sapat na komportable sa code bago gumawa ng ilang totoong pagpapasadya sa aking laruan sa RC.
Ang nawawala ko ay isang simpleng sketch na maaari kong mai-load gamit ang Arduino IDE at madali akong payagan na isalin ang mga halagang lumalabas mula sa Radio RX (receiver) sa nais na kontrol ng Motor / Servo.
Samakatuwid, narito ang nilikha ko pagkatapos maglaro ng kaunti sa uChip at sa Arduino IDE: Isang simpleng sketch upang malayunan ang mga Motors at / o Mga servos sa pamamagitan ng 2.4GHz Radio Tx-Rx!
Bill ng mga materyales
1 x uChip: Katugmang board ng Arduino IDE
1 xTx-Rx Radio system: ang anumang sistema ng radyo na may cPPM receiver ay mabuti (ang aking combo ay isang lumang Spectrum DX7 Tx + Orange R614XN cPPM Rx), tiyaking susundin mo ang tamang pamamaraan ng pagbubuklod upang mabigkis ang Tx at Rx.
1 x Baterya: kinakailangan ang mataas na kasalukuyang mga baterya kapag nakikipag-usap sa mga motor at servos.
Mga Motors / Servos: alinsunod sa iyong mga pangangailangan
Ang mga elektronikong sangkap upang himukin ang mga Motors / Servos: payagan ka ng mga simpleng resistor, MOSFET at Diode upang makamit ang layunin sa pagmamaneho.
Hakbang 1: Mga kable
Wire ang mga sangkap nang magkasama tulad ng inilarawan sa mga iskema.
Ang Rx ay konektado nang direkta sa uChipand ay hindi nangangailangan ng anumang panlabas na mga kabit. Kung sakaling gumagamit ka ng ibang tatanggap, i-verify kung kailangan mo ng isang shifter sa antas o hindi. Siguraduhing ikonekta ang signal ng cPPM sa uChip PIN_9 (na kung saan ay PORTA19 kung sakaling nais mong iakma ang code sa isa pang board ng SAMD21).
Ang natitirang mga kable ay kinakailangan upang makapagmaneho ng motor at / o sa servo. Ang nakalakip na eskematiko ay kumakatawan sa pangunahing circuit upang maprotektahan ang uChip mula sa mga spike / overshoot na karaniwang nangyayari kapag nagmamaneho ng mga inductive load. Ang pangunahing sangkap upang mapanatili ang kaligtasan ng uChip ay ang power Zener diode ng 5.1V (D1 sa eskematiko) na kailangan mong ilagay sa parallel sa VEXT (uChip pin 16) at GND (uChip pin 8). Bilang kahalili, sa halip na gamitin ang Zener diode, maaari kang pumili para sa opsyonal na circuitry na kinakatawan ng D2, C1 at C2, na pumipigil sa mga reverse spike upang makapinsala sa mga bahagi ng uChip.
Maaari kang magmaneho ng maraming mga motor / servos na kailangan mo sa pamamagitan ng simpleng pagtitiklop sa eskematiko at pagbabago ng mga control pin (maaari mong gamitin ang anumang pin maliban sa mga power pin (PIN_8 at PIN_16) at ang cPPM pin (PIN_9)). Isipin na, habang kailangan mo lamang ng isang proteksyon circuitry na kinakatawan ng Zener diode (o mga sangkap para sa opsyonal na circuitry), ang mga de-koryenteng sangkap na nauugnay sa pagmamaneho ng motor / servo ay dapat na kopyahin nang maraming beses sa bilang ng mga motor / servos na balak mong magmaneho.
Dahil nais kong magmaneho ng hindi bababa sa 2 motor at 2 servos, gumawa ako ng isang maliit na PCB na nagpatupad ng inilarawan na circuitry at makikita mo sa larawan. Gayunpaman, ang unang prototype ay ginawa sa isang proto-board na gumagamit ng mga lumilipad na wire.
Sa gayon, hindi mo kailangan ng anumang mga kasanayan sa disenyo ng paghihinang / PCB upang maipatupad ang simpleng proyektong ito:)
Hakbang 2: Programming
Narito ang mahika! Dito nagiging kawili-wili ang mga bagay.
Kung sakaling itinayo mo ang circuit na inilarawan sa nakaraang iskema, maaari mo lamang mai-load ang sketch na "DriveMotorAndServo.ino" at dapat gumana ang lahat.
Tingnan ang code at suriin kung paano ito gumagana.
Sa simula mayroong ilang # kahulugan na ginamit upang tukuyin:
- ang mga channel ng numero ng Rx (6Ch kasama ang Orange 614XN)
- ang mga pin kung saan nakakabit ang mga motor / servos
- Max at min na ginamit para sa servo at motor
- Max at min na ginamit para sa saklaw ng mga Radio channel
Pagkatapos, mayroong seksyon ng pagdedeklara ng mga variable kung saan ang mga motor / servos variable ay idineklara.
Kung sakaling magmaneho ka ng higit sa isang motor at isang servo na nakalakip tulad ng inilarawan sa nakaraang iskema, kailangan mong baguhin ang sketch at idagdag ang code na paghawak ng mga karagdagang motor / servos na na-attach mo. Kailangan mong magdagdag ng maraming Servo, servo_value at motor_value ng maraming servos / motor na iyong ginagamit.
Sa loob ng seksyon ng pagdedeklara ng mga variable mayroon ding ilang mga pabagu-bago na variable na ginamit para sa Pagkuha ng Paghahambing ng signal ng cPPM. HUWAG GAWIN ANG MGA VARIABLES NA ITO!
Ano ang kailangan mong gawin sa susunod ay sa pag-andar ng loop (). Dito, maaari kang magpasya kung ano ang gagamitin sa mga papasok na halaga ng mga channel.
Sa aking kaso kinonekta ko ang papasok na halaga nang direkta sa motor at servo, ngunit mas malugod kang baguhin na naaayon ito sa iyong mga pangangailangan! Sa video at mga larawan na naka-link sa tutorial na ito kinonekta ko ang 2 motor at 2 servos, ngunit maaaring mayroong 3, 4, 5,… hanggang sa maximum na magagamit na mga libreng pin (13 sa kaso ng uChip).
Mahahanap mo ang nakunan ng halaga ng channel sa loob ng ch [index] array, na ang "index" ay mula 0 hanggang NUM_CH - 1. Ang bawat channel ay tumutugma sa isang stick / switch / knob sa iyong radyo. Nasa sa iyo ang pag-unawa kung ano-ano-ano:)
Sa wakas, nagpatupad ako ng ilang mga pagpapaandar ng pag-debug upang mas madaling maunawaan ang nangyayari. I-comment / i-komento ang # tukuyin ang DEBUG upang mai-print sa katutubong SerialUSB ang halaga ng mga channel.
TIP: Mayroong higit pang code sa ibaba ng pag-andar ng loop (). Ang bahaging ito ng code ay kinakailangan upang maitakda ang mga power pin ng uChip, hawakan ang mga pagkagambala na nabuo ng tampok na paghahambing ng paghuli, itakda ang mga timer at layunin sa pag-debug. Kung sakaling pakiramdam mo ay sapat na matapang upang maglaro kasama ang mga rehistro, huwag mag-atubiling baguhin ito!
I-edit: Nai-update na sketch, naayos ang isang bug sa pagpapaandar ng pagmamapa.
Hakbang 3: Maglaro, Magmaneho, Lahi, Lumipad
Tiyaking nabuklod mo nang tama ang Tx at Rx system. Lakasin ito sa pagkonekta sa baterya. Patunayan na ang lahat ay gumagana. Maaari mong palawakin ang mga pag-andar o baguhin ang pag-andar ng bawat channel ayon sa gusto mo, dahil ngayon ay nasa ganap mong kontrol ang iyong hinaharap na modelo ng RC.
Ngayon, buuin ang iyong na-customize na modelo ng RC!
P. S.: dahil ang pagbubuklod ay maaaring maging lubos na mainip na gawin, balak kong palabasin sa lalong madaling panahon ang isang sketch na nagbibigay-daan sa pagbubuklod ng iyong Tx-Rx system nang hindi kinakailangang gawin ito nang manu-mano. Abangan ang mga update!