Sisukord:
- Samm: segamismeetod »Puudub
- 2. samm: meetod Meetod »Pööra
- 3. samm: meetodimeetod »Lihtne
- Samm 4: Meetod Meetod »Proportsionaalne
Video: Kanalite segamine: 4 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Kui olete kunagi juhtinud kaugjuhtimispuldi šassii, on hea võimalus, et olete kasutanud segamist, isegi kui te seda ei teadnud. Täpsemalt, kui olete kasutanud ühe juhtkangi või kangi, et juhtida sõidukit, mis kasutab libisemisjuhtimist või diferentsiaaljuhtimist, olete kasutanud segamist.
Segamine on lihtsalt see, kuidas teie juhtkangi andmeid kasutatakse selleks, et määrata kindlaks, kui palju voolu tuleks šassii mõlemale küljele tarnida.
Kui avate juhtkangi, näete tavaliselt sees kahte potentsiomeetrit. Üks, et mõõta oma praegust positsiooni mööda Y -telge (üles ja alla), ja teine, et mõõta X -telje asukohta (küljelt küljele).
Kuigi mul pole sellel teemal ametlikku koolitust, olen varem pidanud koodi segamist tegema ja hiljuti tahtsin sellesse teemasse veidi sügavamale sukelduda.
Kõigepealt tahan märkida, et enamikul RC -saatjatel on segamisvõime, nagu paljudel mootorikontrolleritel. See teave on kõige kasulikum, kui peate koodi ise segama. Ütle näiteks, kui kasutate Arduinot RC -vastuvõtja segamata andmete lugemiseks või loete juhtkangi pottidest analoogandmeid või kui loete koordinaate mobiilirakenduse digitaalsest juhtkangist.
Vaatame mõningaid erinevaid segamismeetodeid.
Samm: segamismeetod »Puudub
Kõigepealt vaatame, mis juhtub, kui te segamist üldse ei kasuta. Kui saadate andmed ühelt teljelt šassii ühele küljele ja teise telje teisele küljele, ei vasta teie sõiduk soovitud viisil.
Näiteks kui lükkate juhtkangi lõpuni otse edasi, on Y -telg täisgaasil ja X -telg 0. Seega sõidaksite otse ringide asemel ringides.
2. samm: meetod Meetod »Pööra
Töökaaslane juhtis mulle kord tähelepanu, et näpuotsaga saate oma saatjat vaese mehe jaoks 45 kraadi pöörata. Kui arvate, et juhtkangi kahe potentsiomeetri väärtused on ruudustiku x ja y telg (mõlemad teljed ulatuvad -100 kuni +100), on see palju mõttekas, kuna te lähete +100 -le mõlemal teljel juhtkangi üles ja paremale lükates. Nii et kui see kaardistatakse otse teie kahele šassiikanalile (teie roboti vasak ja parem külg), paneb see teie roboti edasi liikuma.
Nii et esimene segamismeetod, mida ma kunagi proovisin, oli x ja y koordinaatide matemaatiline pööramine ruudustiku keskpunkti ümber 45 kraadi.
See töötab hästi, kuid ma ei saa 100% võimsusega edasi minna, sest pöörlemise ajal on üldine liikumine piiratud ruudustiku ringiga, mis tähendab, et te ei pääse kunagi sellesse paremasse ülanurka.
Selle tulemusel ei kasutata ka võre nurki. See ei ole probleem, kui kasutate juhtnuppu/trikki, mis piiravad teie liikumist, nii et nendesse piirkondadesse ei jõutaks kunagi, kuid muidu soovite, et see ruudustiku osa teeks midagi, nii et teie liigutused tunduksid täiesti proportsionaalsed.
Kui olete visuaalne õppija nagu mina, võib seda kontseptsiooni hõlpsam teha, vaadates selle juhendi alguses olevat videot.
Vaatame mõningaid koodinäiteid.
MÄRKUSED KOODINÄITTE KOHTA Samuti kaardistan/piiranguga ± 100, kuid tõenäoliselt peate kaardistama 1000–2000 PWM jaoks või 0–255 analoogväljundi jaoks jne. Ma piiran alati … igaks juhuks.
Arduino näide:
// matemaatiliselt pöörata
kahekordne rad = -45*M_PI/180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = juhtnupp_y * cos (rad) + joystick_x * sin (rad); // piirata leftThrottle = piirata (leftThrottle, -100, 100); rightThrottle = piirata (rightThrottle, -100, 100);
JavaScripti näide:
// matemaatiliselt 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 = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // abistajafunktsioonvariant constrain = funktsioon (arv, min, max) {return Math.min (Math.max (arv, min), max); };
3. samm: meetodimeetod »Lihtne
Järgmisena on meil väga lihtne võrrand, mille võtsin esmalt ühest Shawn Hymeli seiklustest Science SparkFuni videos, kus ta juhtus töötama väga sarnase projektiga, millega ma tegelesin.
See võrrand võimaldab teil edasi liikudes täiskiirusele jõuda, kuid sarnaselt pööramismeetodiga eirab see ruudustiku nurga alasid. Selle põhjuseks on asjaolu, et mõnel juhul on maksimum 100 ja mõnel juhul 200. Seega kasutaksite piirangufunktsiooni, et midagi pärast 100 eirata.
Ja muide, ma ei nimeta seda lihtsaks halvustavalt … lihtsuses peitub ilu.
Arduino näide:
int leftThrottle = juhtnupp_y + juhtnupp_x;
int rightThrottle = joystick_y - joystick_x; // piirata leftThrottle = piirata (leftThrottle, -100, 100); rightThrottle = piirata (rightThrottle, -100, 100);
JavaScripti näide:
var leftChannel = juhtnupp_y + juhtnupp_x;
var rightChannel = joystick_y - joystick_x; // piirata leftChannel = piirata (leftChannel, -100, 100); rightChannel = piirata (rightChannel, -100, 100); // abistajafunktsioonvariant constrain = funktsioon (arv, min, max) {return Math.min (Math.max (arv, min), max); };
Samm 4: Meetod Meetod »Proportsionaalne
Ma loobusin lihtsast meetodist, lootes mõlema maailma võrrandist parima. Idee on olla täielikult proportsionaalne kõigis suundades, isegi diagonaalselt, hoolimata asjaolust, et kui liigute suuremat vahemaad, on selle ulatus sama, kui vertikaalselt liikudes, mis on väiksem vahemaa.
Lõppkokkuvõttes leiate minu näidetes skaala vahemikus -200 kuni +200 igas suunas. Ma kaardistan selle väärtuseks ± 100, kuna see tähistab igale kanalile kuluva võimsuse protsenti, kuid soovite selle kaardistada vastavalt sellele, mis teie jaoks sobib. juht oma mootorikontrollerile. Näiteks kui saadate PWM-signaali, võite kaardistada selle väärtuseks 1000–2000 või kui saadate analoogsignaali, võite selle kaardistada väärtuseks 0–255 ja määrata suuna loogiliseks jne.
Arduino näide:
int leftThrottle = juhtnupp_y + juhtnupp_x;
int rightThrottle = joystick_y - joystick_x; // mõnel juhul on max 100, mõnel juhul 200 // arvestame erinevusega, nii et max on alati 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightTrolle <0? rightThrottle - diff: rightThrottle + diff; // Kaart vahemikus ± 200 kuni ± 100 või mis iganes vahemikus te nõelateThrottle = map (leftThrottle, 0, 200, -100, 100); rightThrottle = map (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = piirata (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
JavaScripti näide:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // mõnel juhul on max 100, mõnel juhul 200, // võtame erinevuse arvesse, nii et max on alati 200var diff = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightTrolle <0? rightThrottle -diff: rightThrottle + diff; // Kaart vahemikus ± 200 tagasi alla kuni ± 100 või mis iganes näpistad Throlle = kaart (leftThrottle, -200, 200, -100, 100); rightThrottle = map (rightThrottle, -200, 200, -100, 100); // piirata leftThrottle = piirata (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // mõned abifunktsioonidvari piirang = funktsioon (arv, min, max) {return Math.min (Matemaatika max (arv, min), max); }; var map = funktsioon (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, kaardistatud; inMin = inMin + inMax; num = num + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (arv/inSpan)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); kaardistatud = outSpan*(p/100) - (outMax/2); tagastamine kaardistatud;};
Soovitan:
Kuidas: Raspberry PI 4 peata (VNC) installimine RPI-pildistaja ja piltidega: 7 sammu (koos piltidega)
Kuidas: Raspberry PI 4 peata (VNC) installimine Rpi-pildistaja ja piltidega: kavatsen seda Rapsberry PI-d kasutada oma blogis hunniku lõbusate projektide jaoks. Vaadake seda julgelt. Tahtsin uuesti oma Raspberry PI kasutamist alustada, kuid mul polnud uues asukohas klaviatuuri ega hiirt. Vaarika seadistamisest oli tükk aega möödas
RGB LED -värvide segamine Arduinoga Tinkercadis: 5 sammu (piltidega)
RGB LED -värvide segamine Arduinoga Tinkercadis: õpime, kuidas juhtida mitmevärvilisi LED -e, kasutades Arduino analoogväljundeid. Ühendame Arduino Unoga RGB LED -i ja koostame lihtsa programmi selle värvi muutmiseks. Saate seda virtuaalselt jälgida, kasutades Tinkercadi ahelaid. Saate seda isegi vaadata
BIQUAD siseantenn, valmistatud vasest ja puidust HDTV-kanalite vastuvõtmiseks UHF-sagedusalas (KANALID 14-51): 7 sammu
BIQUAD siseantenn, mis on valmistatud vasest ja puidust HDTV-kanalite vastuvõtmiseks UHF-sagedusalas (KANALID 14–51): Turul on erinevaid televisiooni antenne. Minu kriteeriumide järgi on kõige populaarsemad: UDA-YAGIS, Dipole, Dipole helkuritega, Patch ja logaritmilised antennid. Sõltuvalt tingimustest on kaugus edastatavast
Arvuti demonteerimine lihtsate sammude ja piltidega: 13 sammu (piltidega)
Arvuti demonteerimine lihtsate sammude ja piltidega: see on juhis arvuti demonteerimiseks. Enamik põhikomponente on modulaarsed ja kergesti eemaldatavad. Siiski on oluline, et oleksite selles osas organiseeritud. See aitab vältida osade kaotamist ja ka kokkupanekut
WiFi segamine ESP8266 abil: 3 sammu (piltidega)
WiFi segamine ESP8266 abil: Hola amigos hoy les voy a mostrar como crear un " WiFi Jammer " con el ESP8266 (NodeMcu 1.0) pero ¿ qu é Kas teil on WiFi Jammer? Un jammer es cualquier dispositivo que deliberadamente bloquea comunicaciones inalambricas, WiFi Jamme