![A csatorna keverés megértése: 4 lépés (képekkel) A csatorna keverés megértése: 4 lépés (képekkel)](https://i.howwhatproduce.com/images/003/image-6912-30-j.webp)
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48
![Image Image](https://i.howwhatproduce.com/images/003/image-6912-32-j.webp)
![](https://i.ytimg.com/vi/t1NSeMTVRH8/hqdefault.jpg)
![Keverési módszer »Nincs Keverési módszer »Nincs](https://i.howwhatproduce.com/images/003/image-6912-33-j.webp)
Ha valaha távirányítós alvázat vezetett, akkor jó eséllyel használta a keverést, még akkor is, ha nem tudta. Pontosabban, ha egyetlen joystickot vagy kardántengelyt használt a csúszó- vagy differenciál -kormányzást használó jármű vezérléséhez, akkor a keverést használta.
A keverés egyszerűen a joystick adatait használja fel annak meghatározására, hogy mennyi áramot kell biztosítani a ház mindkét oldalán.
Ha kinyit egy joystickot, általában két potenciométert fog látni. Az egyik az Y tengely mentén (fel és le), míg a másik az X tengely mentén (oldalról oldalra) mérni.
Bár nincs hivatalos képzésem a témában, korábban kódolást kellett végeznem, és a közelmúltban szerettem volna egy kicsit mélyebbre merülni a témában.
Először is szeretném megjegyezni, hogy a legtöbb RC távadó keverési képességgel rendelkezik, mint sok motorvezérlő. Ez az információ akkor lesz a leghasznosabb, ha magának kell a keverést elvégeznie a kódban. Tegyük fel például, hogy ha egy Arduino -t használ a nem kevert adatok olvasásához egy RC -vevőegységből, vagy analóg adatokat olvas az edényekből egy joystickban, vagy ha a koordinátákat egy digitális joystickról olvassa egy mobilalkalmazásban.
Nézzünk néhány különböző keverési módszert.
1. lépés: Keverési módszer »Nincs
Először nézzük meg, mi történik, ha egyáltalán nem használunk keverést. Ha csak elküldi az adatokat az egyik tengelyről az alváz egyik oldalára, a másik tengelyt pedig a másik oldalra, akkor a jármű nem úgy reagál, ahogy szeretné.
Például, ha teljesen egyenesen előre tolja a joystickot, akkor az Y tengely teljes gázzal, az X tengely pedig 0. Ezzel tehát körökben vezetne, nem pedig egyenesen.
2. lépés: Módszer Módszer »Forgatás
![Módszer Módszer »Forgatás Módszer Módszer »Forgatás](https://i.howwhatproduce.com/images/003/image-6912-34-j.webp)
Egy munkatársam egyszer rámutatott nekem, hogy egy csipetnyi fordulattal 45 fokkal elforgathatja az adót szegény ember keverékéért. Ha úgy gondolja, hogy a joystickban lévő két potenciométer értékei x x y tengelyek a rácson (mindkét tengely -100 és +100 között van), akkor sok értelme van, mert mindkét tengelyen +100 lesz ahogy felfelé és jobbra tolja a joystickot. Tehát ha ez közvetlenül a két alvázcsatornához (a robot bal és jobb oldala) kapcsolódik, akkor a robot előre megy.
Tehát az első keverési módszer, amit valaha is kipróbáltam, az volt, hogy matematikailag elforgattam az x és y koordinátákat 45 fokkal a rács középpontja körül.
Ez rendben működik, azonban nem tudok 100% -os erővel továbblépni, mert amikor forog, a teljes mozgás egy körre korlátozódik a rácson belül, ami azt jelenti, hogy soha nem juthat be a jobb felső sarokba.
Ez azt is eredményezi, hogy a rács sarkait nem használják ki. Ez nem jelent problémát, ha olyan joystickot használ, amely korlátozza a mozgását, így azok a területek soha nem érhetők el, de ellenkező esetben azt akarja, hogy a rács ezen része tegyen valamit, hogy mozdulatai teljesen arányosak legyenek.
Ha Ön olyan vizuális tanuló, mint én, akkor ezt a koncepciót könnyebb lenne felkavarni, ha megnézi az útmutató elején található videót.
Nézzünk néhány példát a kódokra.
MEGJEGYZÉSEK A KÓDPÉLDÁKRÓL: Elhagyom a joystick_x és joystick_y értékek megszerzésének módját, mivel ez a projekttől függően változhat. Szintén leképezés/korlátozás lesz ± 100 -ra, de valószínűleg 1000 - 2000 -re kell leképeznie PWM esetén, vagy 0 - 255 -re analóg kimenetnél stb. Mindig kényszerítem …
Arduino példa:
// matematikai forgatás
kettős 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); // korlátozás leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
JavaScript példa:
// matematikailag 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); // helper functionvar constrain = függvény (szám, min, max) {return Math.min (Math.max (szám, min), max); };
3. lépés: Módszer módszer »Egyszerű
![Módszer Módszer »Egyszerű Módszer Módszer »Egyszerű](https://i.howwhatproduce.com/images/003/image-6912-35-j.webp)
Következzen egy nagyon egyszerű egyenletünk, amelyet először Shawn Hymel kalandjai közül a Science SparkFun videóiból vettem fel, ahol történetesen nagyon hasonló projekten dolgozott, mint amin dolgoztam.
Ez az egyenlet lehetővé teszi a teljes sebesség elérését, ha előre megy, de hasonlóan a forgatási módszerhez, figyelmen kívül hagyja a rács sarokterületeit. Ennek az az oka, hogy bizonyos esetekben a maximum 100, egyes esetekben a maximum 200. Tehát a kényszerítő függvény használatával 100 után bármit figyelmen kívül hagyhat.
És egyébként nem nevezem ezt egyszerűnek lekicsinylően … az egyszerűségben van egy szépség.
Arduino példa:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // korlátozás leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
JavaScript példa:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // constrain leftChannel = korlátozás (leftChannel, -100, 100); rightChannel = korlátozás (rightChannel, -100, 100); // helper functionvar constrain = függvény (szám, min, max) {return Math.min (Math.max (szám, min), max); };
4. lépés: Módszer módszer »Arányos
![Módszer Módszer »Arányos Módszer Módszer »Arányos](https://i.howwhatproduce.com/images/003/image-6912-36-j.webp)
Rájöttem az egyszerű módszerre, remélve, hogy mindkét világ egyenletét a lehető legjobban kihasználom. Az ötlet itt az, hogy teljesen arányos legyen minden irányban, még átlósan is, annak ellenére, hogy nagyobb távolságot mozog, ugyanolyan tartományban van, mint amikor függőlegesen mozog, ami kisebb távolság.
A példáimban minden irányban -200 és +200 közötti skálát kapsz, amelyet ± 100 -ra képezek le, mert ez az egyes csatornákra jutó teljesítmény százalékos arányát jelenti - azonban azt szeretnéd leképezni, amire csak használsz. a motorvezérlő tokja. Például, ha PWM jelet küld, akkor azt 1000-től 2000-ig leképezheti, vagy ha analóg jelet küld, akkor 0-255-re, és az irányt logikai értékre állíthatja be.
Arduino példa:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // bizonyos esetekben a max 100, egyes esetekben 200 // vegyük figyelembe a különbséget, így a max mindig 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Térkép ± 200 -tól ± 100 -ig, vagy bármilyen tartományban, amit tűvelThrottle = map (leftThrottle, 0, 200, -100, 100); rightThrottle = map (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
JavaScript példa:
var leftThrottle = joystick_y + joystick_x; var jobb Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle -diff: rightThrottle + diff; // Térkép ± 200 -tól lefelé ± 100 -ig, vagy bármihez, amit tűz Ttrottle = map (leftThrottle, -200, 200, -100, 100); rightThrottle = map (rightThrottle, -200, 200, -100, 100); // constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // egyes segédfunkciókvar constrain = function (szám, min, max) {return Math.min (Math. max (szám, perc), max); }; var map = function (szám, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, mapped; inMin = inMin + inMax; szám = szám + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (szám/inSpan)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); leképezett = outSpan*(p/100) - (outMax/2); visszatérés feltérképezve;};
Ajánlott:
A légkondicionáló távvezérlőinek IR protokolljának megértése: 9 lépés (képekkel)
![A légkondicionáló távvezérlőinek IR protokolljának megértése: 9 lépés (képekkel) A légkondicionáló távvezérlőinek IR protokolljának megértése: 9 lépés (képekkel)](https://i.howwhatproduce.com/images/006/image-17476-13-j.webp)
A légkondicionáló távvezérlőinek IR protokolljának megértése: Már jó ideje tanulok az IR protokollokról. Infravörös jelek küldése és fogadása. Ezen a ponton már csak az AC távirányítók infravörös protokollja maradt fenn. Ellentétben a szinte minden elektronikai eszköz (mondjuk egy TV) hagyományos távirányítójával, ahol
Az audio keverés módja: 6 lépés
![Az audio keverés módja: 6 lépés Az audio keverés módja: 6 lépés](https://i.howwhatproduce.com/images/002/image-4121-67-j.webp)
Hogyan kell hangkeverést készíteni: Észrevetted már, hogy a zene képes megszólalni valaki mellett, aki beszél, mégis mindkettőt hallod? Akár filmben, akár kedvenc dalban szerepel, a hangkeverés fontos része a hangtervezésnek. Az emberek megbocsáthatnak a vizuális hibáknak, de a rossz hang nehéz
Burgonya akkumulátor: A kémiai és elektromos energia megértése: 13 lépés (képekkel)
![Burgonya akkumulátor: A kémiai és elektromos energia megértése: 13 lépés (képekkel) Burgonya akkumulátor: A kémiai és elektromos energia megértése: 13 lépés (képekkel)](https://i.howwhatproduce.com/images/002/image-4478-97-j.webp)
Burgonya akkumulátor: A kémiai és elektromos energia megértése: Tudta, hogy egy villanykörte csak egy vagy két burgonyával működtethető? A két fém közötti kémiai energia elektromos energiává alakul, és a burgonya segítségével áramkört hoz létre! Ez kis elektromos töltést hoz létre, amely
Az ICSP megértése a PIC mikrokontrollerekhez: 4 lépés (képekkel)
![Az ICSP megértése a PIC mikrokontrollerekhez: 4 lépés (képekkel) Az ICSP megértése a PIC mikrokontrollerekhez: 4 lépés (képekkel)](https://i.howwhatproduce.com/images/002/image-3283-93-j.webp)
Az ICSP megértése a PIC mikrokontrollerekhez: A mikrokontrollerek programozása nem nehéz. Egy programozó építése nagyszerű első elektronikai projekt. Ennek az utasításnak az a célja, hogy elmagyarázza a Microchip PIC -kkel használt egyszerű "áramkörös soros programozási" módszert
Keverés és fejhallgató -tartó: 4 lépés
![Keverés és fejhallgató -tartó: 4 lépés Keverés és fejhallgató -tartó: 4 lépés](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10967223-shuffle-and-headphone-holder-4-steps-j.webp)
Véletlenszerű keverés és fejhallgató -tartó: Több fejhallgatót is eltörtem, amikor a véletlenszerű lejátszásom köré tekertem őket, de utálom, amikor a vezeték összegabalyodik. Több fejhallgató -tartó is van odakint, de szerettem volna őket a keverésemhez rögzíteni. Ez egy egyszerű tartó, amely egy pi -ből készül