Obsah:
- Krok 1: Metóda mixovania »Žiadna
- Krok 2: Metóda Metóda »Otočiť
- Krok 3: Metóda Metóda »Jednoduchá
- Krok 4: Metóda Metóda »Proporcionálne
Video: Pochopenie miešania kanálov: 4 kroky (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Ak ste niekedy jazdili na podvozku s diaľkovým ovládaním, je veľká šanca, že ste použili mixovanie, aj keď ste to nevedeli. Konkrétne, ak ste na ovládanie vozidla, ktoré používa šmykové alebo diferenciálne riadenie, použili jediný joystick alebo ovládač, použili ste mixovanie.
Miešanie je jednoducho to, ako sa údaje z vášho joysticku používajú na určenie toho, koľko energie by malo byť dodávané na každú stranu podvozku.
Ak otvoríte joystick, vo vnútri uvidíte spravidla dva potenciometre. Jeden na meranie vašej aktuálnej polohy pozdĺž osi Y (hore a dole) a druhý na meranie toho, kde sa nachádzate, pozdĺž osi X (zo strany na stranu).
Napriek tomu, že nemám žiadne formálne školenie na túto tému, musel som sa predtým venovať miešaniu kódu a nedávno som sa chcel ponoriť trochu hlbšie do predmetu.
Najprv chcem poznamenať, že väčšina RC vysielačov má schopnosť miešania, rovnako ako mnoho motorových ovládačov. Tieto informácie budú najužitočnejšie, ak sa vo svojom kóde musíte mixovať sami. Povedzme napríklad, že používate Arduino na čítanie nezmiešaných údajov z RC prijímača, alebo čítate analógové údaje z hrncov na joysticku, alebo ak čítate súradnice z digitálneho joysticku v mobilnej aplikácii.
Pozrime sa na niekoľko rôznych prístupov k mixovaniu.
Krok 1: Metóda mixovania »Žiadna
Najprv sa pozrime na to, čo sa stane, ak miešanie vôbec nepoužívate. Ak by ste len odoslali údaje z jednej osi na jednu stranu podvozku a druhú os na druhú stranu, vaše vozidlo by nereagovalo tak, ako by ste chceli.
Ak napríklad zatlačíte joystick úplne dopredu, os Y bude na plný plyn a os X na 0. Takže by ste namiesto rovnej jazdy jazdili v kruhoch.
Krok 2: Metóda Metóda »Otočiť
Jeden spolupracovník ma raz upozornil, že v núdzi môžete otočiť vysielač o 45 stupňov, aby ste získali mix chudobných. Ak uvažujete o hodnotách z dvoch potenciometrov na joysticku ako o x x osi y na mriežke (s oboma osami v rozpätí -100 až +100), dáva to veľký zmysel, pretože idete na +100 na oboch osiach keď tlačíte joystick nahor a doprava. Ak by sa to teda mapovalo priamo na vaše dva kanály podvozku (ľavá a pravá strana robota), váš robot by sa vydal dopredu.
Prvý spôsob miešania, ktorý som kedy vyskúšal, bolo matematicky otočiť súradnicu x a y o 45 stupňov okolo stredového bodu mriežky.
To funguje dobre, ale nemôžem ísť dopredu so 100% výkonom, pretože keď sa otáčate, celkový pohyb je obmedzený na kruh v mriežke, čo znamená, že sa nikdy nemôžete dostať do pravého horného rohu.
Výsledkom je tiež to, že rohy mriežky sa nevyužívajú. To nie je problém, ak používate joystick/záves, ktorý obmedzuje váš pohyb, takže sa do týchto oblastí nikdy nedostanete, ale inak budete chcieť, aby táto časť mriežky urobila niečo, aby sa vaše pohyby cítili úplne proporcionálne.
Ak ste vizuálny študent ako ja, tento koncept by bolo možno jednoduchšie pochopiť, keby ste si pozreli video na začiatku tohto návodu.
Pozrime sa na niekoľko príkladov kódu.
POZNÁMKY K PRÍKLADOM MÉHO KÓDU: Vynechávam, ako získate hodnoty joystick_x a joystick_y, pretože by sa menili v závislosti od vášho projektu. Tiež budem mapovať/obmedzovať na ± 100, ale pravdepodobne budete musieť namapovať na 1 000 - 2 000 pre PWM alebo 0 - 255 pre analógový výstup atď. Vždy obmedzujem … len pre prípad.
Príklad Arduina:
// matematicky otočiť
dvojitý 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); // obmedzenie leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
Príklad JavaScriptu:
// matematicky 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); // pomocná funkcia varvar obmedzenie = funkcia (počet, min, max) {návrat Math.min (Math.max (počet, min), max); };
Krok 3: Metóda Metóda »Jednoduchá
Ďalej tu máme veľmi jednoduchú rovnicu, ktorú som najskôr zachytil z jedného z videí Shawn Hymel’s Adventures in Science SparkFun, kde náhodou pracoval na veľmi podobnom projekte, na akom som pracoval ja.
Táto rovnica vám umožní dosiahnuť plnú rýchlosť pri jazde vpred, ale podobne ako metóda otáčania ignoruje rohové oblasti mriežky. Dôvodom je, že v niektorých prípadoch je maximum 100 a v niektorých prípadoch maximum 200. Takže by ste použili funkciu obmedzenia, aby ste ignorovali čokoľvek po 100.
A mimochodom, nenazývam to jednoducho hanlivo … v jednoduchosti je krása.
Príklad Arduina:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // obmedzenie leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
Príklad JavaScriptu:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // obmedzenie leftChannel = constrain (leftChannel, -100, 100); rightChannel = obmedzenie (rightChannel, -100, 100); // pomocná funkcia varvar obmedzenie = funkcia (počet, min, max) {návrat Math.min (Math.max (počet, min), max); };
Krok 4: Metóda Metóda »Proporcionálne
Začal som jednoduchou metódou dúfať, že urobím to najlepšie z rovnice oboch svetov. Ide o to, byť úplne proporcionálny vo všetkých smeroch aj diagonálne, napriek tomu, že sa pohybujete na väčšiu vzdialenosť, má rovnaký rozsah, ako keď sa pohybujete vertikálne, čo je menšia vzdialenosť.
V mojich príkladoch skončíte so stupnicou od -200 do +200 vo všetkých smeroch. Mapujem to na ± 100, pretože to predstavuje percento energie prechádzajúcej do každého kanála - budete ho však chcieť mapovať na čokoľvek, čo funguje pri vašom použití - puzdro pre váš regulátor motora. Napríklad, ak odosielate signál PWM, môžete ho namapovať na 1 000 až 2 000 alebo ak odosielate analógový signál, môžete ho namapovať na 0-255 a smer nastaviť ako booleovský atď.
Príklad Arduina:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // v niektorých prípadoch je maximum 100, v niektorých prípadoch je 200 // zohľadnime rozdiel, takže maximum je vždy 200int rozdiel = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - rozdiel: rightThrottle + diff; // Mapa od ± 200 do ± 100 alebo v ľubovoľnom rozsahu, ktorý použijete // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);
Príklad JavaScriptu:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // v niektorých prípadoch je maximum 100, v niektorých prípadoch je 200, // zohľadníme rozdiel, takže maximum je vždy 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 od ± 200 späť nadol na ± 100 alebo čokoľvek, čo ste vyftovaliThrottle = mapa (leftThrottle, -200, 200, -100, 100); rightThrottle = mapa (rightThrottle, -200, 200, -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 (počet, min), max); }; var mapa = funkcia (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); mapované = outSpan*(p/100) - (outMax/2); návrat zmapovaný;};
Odporúča:
Pochopenie protokolu IR diaľkových ovládačov klimatizácie: 9 krokov (s obrázkami)
Pochopenie IR protokolu diaľkových ovládačov Air Conditoner: O IR protokoloch sa učím už nejaký čas. Ako odosielať a prijímať IR signály. V tomto mieste zostáva už len IR protokol diaľkových ovládačov AC. Na rozdiel od tradičných diaľkových ovládačov takmer všetkých elektronických zariadení (povedzme televízora), kde
Zemiaková batéria: Pochopenie chemickej a elektrickej energie: 13 krokov (s obrázkami)
Zemiaková batéria: Porozumenie chemickej a elektrickej energii: Vedeli ste, že žiarovku môžete napájať iba jedným alebo dvoma zemiakmi? Chemická energia medzi týmito dvoma kovmi sa premieňa na elektrickú energiu a pomocou zemiakov vytvára obvod! To vytvára malý elektrický náboj, ktorý možno
Pochopenie a údržba pevného disku: 3 kroky
Ako porozumieť a udržiavať pevný disk: Dobrý deň! Moje meno je Jason a dnes vás naučím všetko o tom, čo je pevný disk, ako funguje a ako udržať pevný disk funkčný čo najdlhšie
Pochopenie ICSP pre mikrokontroléry PIC: 4 kroky (s obrázkami)
Pochopenie ICSP pre mikrokontroléry PIC: Programovanie mikrokontrolérov nie je ťažké. Zostavenie programátora je prvým veľkým projektom elektroniky. Cieľom tohto návodu je vysvetliť jednoduchú metódu „v obvodovom sériovom programovaní“, ktorá sa používa s PIC Microchip
Hacknutie programu Microsoft Office Excel na čítanie živých kanálov RSS Stock News: 3 kroky
Hackovanie balíka Microsoft Office Excel na čítanie živých informačných kanálov RSS o novinkách: Program Excel môžete ľahko získať tak, že bude fungovať ako bezplatná čítačka správ RSS aktívnych akcií. Čo je na tom skvelé, na rozdiel od používania bežnej čítačky správ, je to, že si môžete nechať aktualizovať správy v závislosti od symbolu akcií, ktorý vás zaujíma. Navyše,