Talaan ng mga Nilalaman:
- Hakbang 1: Paghalo ng Paraan »Wala
- Hakbang 2: Paraan ng Paraan »Paikutin
- Hakbang 3: Pamamaraan ng Pamamaraan »Simple
- Hakbang 4: Pamamaraan ng Pamamaraan »Proportional
Video: Pag-unawa sa Paghahalo ng Channel: 4 na Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Kung naghimok ka ng isang chassis ng remote control, may isang magandang pagkakataon na ginamit mo ang paghahalo, kahit na hindi mo alam ito. Sa partikular, kung gumamit ka ng isang solong joystick o gimble upang makontrol ang isang sasakyan na gumagamit ng skid steering o kaugalian na pagpipiloto, ginamit mo ang paghahalo.
Ang paghahalo ay simpleng kung paano ginagamit ang data mula sa iyong joystick upang matukoy kung gaano karaming lakas ang dapat ibigay sa bawat panig ng tsasis.
Kung magbubukas ka ng isang joystick, sa pangkalahatan ay makakakita ka ng dalawang potentiometers sa loob. Ang isa upang sukatin ang iyong kasalukuyang posisyon sa kahabaan ng Y axis (pataas at pababa), at ang isa pa upang masukat kung nasaan ka sa kahabaan ng X axis (gilid sa gilid).
Bagaman wala akong pormal na pagsasanay sa paksa na kinailangan kong gawin sa paghahalo ng code dati at kamakailan ay nais kong sumisid nang kaunti sa paksa.
Una nais kong tandaan na ang karamihan sa mga RC transmitter ay may kakayahan sa paghahalo tulad ng ginagawa ng maraming mga motor controler. Ang impormasyong ito ay magiging mas kapaki-pakinabang kung kailangan mong gawin ang paghahalo ng iyong sarili sa iyong code. Sabihin halimbawa kung gumagamit ka ng isang Arduino upang mabasa ang walang halong data mula sa isang RC receiver, o nagbabasa ka ng data ng analog mula sa mga kaldero sa isang joystick, o kung binabasa mo ang mga coordinate mula sa isang digital na joystick sa isang mobile app.
Tingnan natin ang ilang iba't ibang mga diskarte sa paghahalo.
Hakbang 1: Paghalo ng Paraan »Wala
Tingnan muna natin kung ano ang mangyayari kung hindi mo talaga ginagamit ang paghahalo. Kung magpapadala ka lamang ng data mula sa isang aksis patungo sa isang gilid ng chassis at ang iba pang axis sa kabilang panig, hindi tutugon ang iyong sasakyan sa gusto mong paraan.
Halimbawa kung itulak mo ang joystick hanggang sa tuwid, ang axis ng Y ay nasa buong throttle at ang X axis ay nasa 0. Kaya't magmamaneho ka sa mga bilog sa halip na dumiretso.
Hakbang 2: Paraan ng Paraan »Paikutin
Isang kasamahan sa trabaho ay minsang itinuro sa akin na, sa isang kurot maaari mong paikutin ang iyong transmiter na 45 degree para sa halo ng isang mahirap na tao. Kung naiisip mo ang mga halagang mula sa dalawang potentiometers sa isang joystick bilang pagiging x an y axis sa isang grid (na may parehong axis na umaabot sa -100 hanggang +100) may katuturan ito dahil pupunta ka sa +100 sa parehong axis habang itinutulak mo ang joystick pataas at sa kanan. Kaya kung direktang mapa ito sa iyong dalawang mga chassis channel (sa kaliwa at kanang bahagi ng iyong robot) gagawin nitong pasulong ang iyong robot.
Kaya ang unang paraan ng paghahalo na sinubukan ko ay upang paikutin ng matematika ang x at y coordinate ng 45 degree tungkol sa gitnang punto ng grid.
Gumagana ito ng ok, subalit hindi ako makakapagpasa sa 100% lakas sapagkat kapag umiikot ka, ang pangkalahatang kilusan ay napipigilan sa isang bilog sa loob ng grid, na nangangahulugang hindi ka talaga makakakuha sa kanang tuktok na sulok.
Nagreresulta rin ito sa mga sulok ng grid na hindi ginagamit. Hindi ito isang problema kung gumagamit ka ng isang joystick / gimple na naglilimita sa iyong paggalaw sa gayon ang mga lugar na iyon ay hindi naabot kahit saan, ngunit kung hindi man gugustuhin mong gawin ang isang bahagi ng grid upang gumawa ng isang ganap na proporsyonal ang iyong mga paggalaw.
Kung ikaw ay isang visual na natututo tulad ng aking sarili ang konsepto na ito ay maaaring mas madaling grok sa pamamagitan ng panonood ng video sa simula ng pagtuturo na ito.
Tingnan natin ang ilang mga halimbawa ng code.
TANDAAN TUNGKOL SA AKING MGA HALIMBAWA NG CODE: Iiwanan ko kung paano mo makukuha ang mga halaga ng joystick_x at joystick_y dahil mababago ito depende sa iyong proyekto. Gayundin ako ay magmamapa / pumipigil sa ± 100 ngunit maaaring kailangan mong mag-map sa 1000 - 2000 para sa PWM o 0 - 255 para sa analog output at lagi kong pinipigilan … kung sakali.
Halimbawa ng Arduino:
// matematika paikutin
dobleng rad = -45 * M_PI / 180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * sin (rad); // constrain leftThrottle = pipilitin (leftThrottle, -100, 100); rightThrottle = pipilitin (rightThrottle, -100, 100);
Halimbawa ng JavaScript:
// matematika rotatevar rad = -45 * Math. PI / 180; leftThrottle = joystick_x * Math.cos (rad) - joystick_y * Math.sin (rad); rightThrottle = joystick_y * Math.cos (rad) + joystick_x * Math.sin (rad); // constrainleftThrottle = pumilit (leftThrottle, -100, 100); rightThrottle = pipilitin (rightThrottle, -100, 100); // helper functionvar constrain = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Hakbang 3: Pamamaraan ng Pamamaraan »Simple
Susunod na mayroon kaming isang napaka-simpleng equation na una kong kinuha mula sa isa sa mga Shawn Hymel's Adventures in Science SparkFun na mga video kung saan nagkataong nagtatrabaho siya ng isang katulad na proyekto sa aking pinagtatrabahuhan.
Hinahayaan ka ng equation na ito na makarating sa buong bilis kapag pasulong ngunit katulad ng paikutin na pamamaraan, hindi pinapansin ang mga sulok na lugar ng grid. Ito ay dahil sa ilang mga kaso ang maximum ay 100 at sa ilang mga kaso ang maximum ay 200. Kaya't gagamitin mo ang isang pagpipilit na pag-andar upang huwag pansinin ang anumang bagay pagkatapos ng 100.
At sa pamamagitan ng ang paraan hindi ko tinawag ang simpleng derogatorily na ito … mayroong isang kagandahan sa pagiging simple.
Halimbawa ng Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // constrain leftThrottle = pipilitin (leftThrottle, -100, 100); rightThrottle = pipilitin (rightThrottle, -100, 100);
Halimbawa ng JavaScript:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // pipilitin leftChannel = pipilitin (leftChannel, -100, 100); rightChannel = pipilitin (rightChannel, -100, 100); // helper functionvar constrain = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Hakbang 4: Pamamaraan ng Pamamaraan »Proportional
Sumakay ako sa simpleng pamamaraan na umaasang makagawa ng pinakamahusay na parehong equation ng mundo. Ang ideya dito ay upang maging ganap na proporsyonal sa lahat ng mga direksyon kahit na pahilis sa kabila ng katotohanang kahit na gumagalaw ka ng isang mas malaking distansya mayroon itong parehong saklaw tulad ng kapag gumalaw ka nang patayo na kung saan ay isang mas maliit na distansya.
Natapos ka sa isang sukat na -200 hanggang +200 sa lahat ng direksyon sa aking mga halimbawa na inilalagay ko iyon sa ± 100 dahil kumakatawan ito sa porsyento ng lakas na pupunta sa bawat channel - subalit gugustuhin mong i-map ito sa anumang gumagana sa iyong paggamit- kaso para sa iyong motor controller. Halimbawa kung nagpapadala ka ng isang senyas ng PWM maaari mo itong mapa sa 1000 hanggang 2000 o kung nagpapadala ka ng isang analog signal maaari mo itong i-map sa 0-255 at itakda ang direksyon bilang boolean atbp.
Halimbawa ng Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // sa ilang mga kaso ang max ay 100, sa ilang mga kaso ito ay 200 // factor tayo sa pagkakaiba kaya ang max ay laging 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Map mula sa ± 200 hanggang ± 100 o kung anong saklaw ang kailangan moTftal = mapa (leftThrottle, 0, 200, -100, 100); rightThrottle = mapa (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
Halimbawa ng JavaScript:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // sa ilang mga kaso ang max ay 100, sa ilang mga kaso 200 ito, // factor tayo sa pagkakaiba kaya ang max ay laging 200var diff = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Mapa mula sa ± 200 pabalik sa ± 100 o anuman ang kailangan mo -100, 100); // constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // some helper functionsvar constrain = function (num, min, max) {return Math.min (Math. max (num, min), max); }; var map = function (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, mapped; inMin = inMin + inMax; num = num + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (num / inSpan) * 100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); mapa = outSpan * (p / 100) - (outMax / 2); bumalik na nai-map;};
Inirerekumendang:
MESOMIX - Machine ng Paghahalo ng Automated Paint: 21 Hakbang (na may Mga Larawan)
MESOMIX - Machine ng Paghahalo ng Automated Paint: Ikaw ba ay isang taga-disenyo, isang artista o isang malikhaing tao na mahilig magtapon ng mga kulay sa iyong canvas, ngunit madalas na isang pakikibaka pagdating sa paggawa ng nais na lilim. Kaya, mawawala ang tagubiling sining-tech na ito pakikibaka sa manipis na hangin. Tulad ng aparatong ito, ikaw
HeadBot - isang Robot na Nagbabago ng Sarili para sa Pag-aaral at Pag-abot sa STEM: 7 Mga Hakbang (na may Mga Larawan)
HeadBot - isang Self-Balancing Robot para sa STEM Learning and Outreach: Headbot - isang dalawang talampakan ang taas, self-balancing robot - ay ang ideya ng South Eugene Robotics Team (SERT, FRC 2521), isang mapagkumpitensyang pangkat ng robotics ng high school sa UNA Kompetisyon ng Robotics, mula sa Eugene, Oregon. Ang sikat na robot sa pag-abot na ito ay ginagawang
Paghahalo ng Kulay ng RGB LED Sa Arduino sa Tinkercad: 5 Hakbang (na may Mga Larawan)
Paghahalo ng Kulay ng RGB LED Sa Arduino sa Tinkercad: Alamin natin kung paano makontrol ang mga multi color LED gamit ang mga analog output ng Arduino. Ikonekta namin ang isang RGB LED sa Arduino Uno at gumawa ng isang simpleng programa upang baguhin ang kulay nito. Maaari mong sundin ang halos paggamit ng Tinkercad Circuits. Maaari mo ring tingnan ito
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino - Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter - Rc Helicopter - Rc Plane Gamit ang Arduino: 5 Hakbang (na may Mga Larawan)
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino | Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter | Rc Helicopter | Rc Plane Gamit ang Arduino: Upang mapatakbo ang isang Rc car | Quadcopter | Drone | RC eroplano | RC boat, palagi kaming nangangailangan ng isang reciever at transmitter, kumbaga para sa RC QUADCOPTER kailangan namin ng isang 6 channel transmitter at receiver at ang uri ng TX at RX ay masyadong magastos, kaya gagawa kami ng isa sa aming
Pag-hack sa TV Tuner upang Basahin ang Mga Larawan sa Daigdig Mula sa Mga Satellite: 7 Mga Hakbang (na may Mga Larawan)
Pag-hack sa TV Tuner upang Basahin ang Mga Larawan sa Daigdig Mula sa Mga Satellite: Mayroong maraming mga satellite sa itaas ng aming mga ulo. Alam mo ba, na ang paggamit lamang ng Iyong computer, TV Tuner at simpleng DIY antena Maaari mong matanggap ang mga pagpapadala mula sa kanila? Halimbawa ng mga real time na larawan ng mundo. Ipapakita ko sa iyo kung paano. Kakailanganin mo ang: - 2 w