Satura rādītājs:
- 1. darbība: sajaukšanas metode »Nav
- 2. darbība. Metodes metode »Pagriezt
- 3. darbība: metodes metode »Vienkārša
- 4. solis: metodes metode »Proporcionāls
Video: Izpratne par kanālu sajaukšanu: 4 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Ja esat kādreiz vadījis tālvadības šasiju, pastāv liela iespēja, ka esat izmantojis sajaukšanu, pat ja to nezinājāt. Konkrēti, ja esat izmantojis vienu kursorsviru vai triecienu, lai kontrolētu transportlīdzekli, kas izmanto bīdāmo stūri vai diferenciālo stūrēšanu, jūs esat izmantojis sajaukšanu.
Sajaukšana ir vienkārši veids, kā jūsu kursorsviras dati tiek izmantoti, lai noteiktu, cik daudz enerģijas jāpiegādā katrai šasijas pusei.
Ja atverat kursorsviru, parasti iekšpusē redzēsit divus potenciometrus. Viens, lai izmērītu jūsu pašreizējo atrašanās vietu gar Y asi (uz augšu un uz leju), un otrs, lai izmērītu jūsu atrašanās vietu gar X asi (no vienas puses uz otru).
Lai gan man nav oficiālas apmācības par šo tēmu, man jau iepriekš bija jāveic koda sajaukšana, un nesen es vēlējos nedaudz ienirt šajā tēmā.
Vispirms es gribu atzīmēt, ka lielākajai daļai RC raidītāju ir sajaukšanas iespēja, tāpat kā daudziem motora kontrolieriem. Šī informācija būs visnoderīgākā, ja kodā būs jāmaisa pašam. Piemēram, ja izmantojat Arduino, lai lasītu nesajauktus datus no RC uztvērēja, vai lasāt analogos datus no podiem kursorsvirā, vai arī lasāt koordinātas no digitālās kursorsviras mobilajā lietotnē.
Apskatīsim dažas dažādas sajaukšanas pieejas.
1. darbība: sajaukšanas metode »Nav
Vispirms apskatīsim, kas notiek, ja miksēšanu neizmantojat vispār. Ja jūs vienkārši nosūtāt datus no vienas ass uz vienu šasijas pusi un otru asi uz otru pusi, jūsu transportlīdzeklis nereaģētu tā, kā vēlaties.
Piemēram, ja jūs virzāt kursorsviru līdz galam uz priekšu, Y ass ir ar pilnu jaudu un X ass ir 0. Tātad jūs brauktu pa apli, nevis taisni.
2. darbība. Metodes metode »Pagriezt
Kāds darbabiedrs man reiz norādīja, ka ar šķipsnu jūs varat pagriezt raidītāju par 45 grādiem, lai iegūtu nabadzīga cilvēka maisījumu. Ja jūs domājat, ka kursorsviras divu potenciometru vērtības ir x x y ass režģī (abām asīm aptverot no -100 līdz +100), tam ir liela nozīme, jo jūs gatavojaties +100 uz abām asīm. virzot kursorsviru uz augšu un pa labi. Tātad, ja tas tiek piesaistīts tieši jūsu diviem šasijas kanāliem (jūsu robota kreisajā un labajā pusē), tas liks jūsu robotam iet uz priekšu.
Tātad pirmā sajaukšanas metode, ko es jebkad izmēģināju, bija matemātiski pagriezt x un y koordinātas par 45 grādiem ap režģa centru.
Tas darbojas labi, tomēr es nevaru iet uz priekšu ar 100% jaudu, jo, rotējot, kopējā kustība ir ierobežota līdz aplim režģī, kas nozīmē, ka jūs nekad nevarat īsti nokļūt augšējā labajā stūrī.
Tas arī noved pie tā, ka režģa stūri netiek izmantoti. Tā nav problēma, ja izmantojat kursorsviru/triecienu, kas ierobežo jūsu kustību, lai šīs zonas nekad netiktu sasniegtas, bet pretējā gadījumā jūs vēlaties, lai šī režģa daļa kaut ko darītu, lai jūsu kustības justos pilnīgi proporcionālas.
Ja jūs esat vizuāli apguvis kā es, šo jēdzienu varētu būt vieglāk uztvert, noskatoties videoklipu šīs pamācības sākumā.
Apskatīsim dažus koda piemērus.
PIEZĪMES PAR MANU KODU PIEMĒRIEM: Es neatstāju informāciju par to, kā iegūt joystick_x un joystick_y vērtības, jo tas mainīsies atkarībā no jūsu projekta. Arī es būšu kartēšana/ierobežošana līdz ± 100, bet jums, iespējams, vajadzēs kartēt līdz 1000 - 2000 PWM vai 0 - 255 analogai izejai utt. Es vienmēr ierobežoju … tikai gadījumā.
Arduino piemērs:
// matemātiski pagriezt
dubultā rad = -45*M_PI/180; int leftThrottle = kursorsviru_x * cos (rad) - kursorsviru_y * sin (rad); int rightThrottle = kursorsviru_y * cos (rad) + kursorsviru_x * sin (rad); // ierobežot leftThrottle = ierobežot (leftThrottle, -100, 100); rightThrottle = ierobežot (rightThrottle, -100, 100);
JavaScript piemērs:
// matemātiski rotatevar rad = -45*Math. PI/180; leftThrottle = kursorsviru_x * Math.cos (rad) - kursorsviru_y * Math.sin (rad); rightThrottle = kursorsvira_y * Math.cos (rad) + kursorsviru_x * Math.sin (rad); // constrainleftThrottle = ierobežot (leftThrottle, -100, 100); rightThrottle = ierobežot (rightThrottle, -100, 100); // palīgs functionvar ierobežot = funkcija (skaits, min, maks.) {atgriezties Matemātiskā min (Matemātiskā maks. (skaitlis, min), maks.); };
3. darbība: metodes metode »Vienkārša
Tālāk mums ir ļoti vienkāršs vienādojums, kuru es vispirms paņēmu no viena no Šona Hīmela piedzīvojumiem Science SparkFun videoklipos, kur viņš nejauši strādāja ļoti līdzīgā projektā, pie kura es strādāju.
Šis vienādojums ļauj sasniegt pilnu ātrumu, virzoties uz priekšu, taču, līdzīgi kā pagriešanas metode, tas neņem vērā režģa stūra laukumus. Tas ir tāpēc, ka dažos gadījumos maksimālais ir 100 un dažos gadījumos maksimālais ir 200. Tātad jūs izmantotu ierobežošanas funkciju, lai neņemtu vērā neko pēc 100.
Un, starp citu, es nesaucu šo vienkāršo nicinoši … vienkāršībā ir skaistums.
Arduino piemērs:
int leftThrottle = kursorsviru_y + kursorsviru_x;
int rightThrottle = kursorsviru_y - kursorsviru_x; // ierobežot leftThrottle = ierobežot (leftThrottle, -100, 100); rightThrottle = ierobežot (rightThrottle, -100, 100);
JavaScript piemērs:
var leftChannel = kursorsvira_y + kursorsvira_x;
var rightChannel = kursorsviru_y - kursorsviru_x; // ierobežot pa kreisiChannel = ierobežot (leftChannel, -100, 100); rightChannel = ierobežot (rightChannel, -100, 100); // palīgs functionvar constrain = funkcija (skaits, min, maks.) {atgriezties Matemātiskā min (Matemātiskā maks. (skaitlis, min), maks.); };
4. solis: metodes metode »Proporcionāls
Es atteicos no vienkāršās metodes, cerot iegūt labāko no abu pasauļu vienādojuma. Ideja šeit ir būt pilnīgi proporcionālai visos virzienos, pat pa diagonāli, neskatoties uz to, ka, pārvietojoties lielāku attālumu, tam ir tāds pats diapazons kā pārvietojoties vertikāli, kas ir mazāks attālums.
Visbeidzot, manos piemēros jūs iegūstat skalu no -200 līdz +200 visos virzienos. Es to uzskatu līdz ± 100, jo tas atspoguļo jaudas procentuālo daudzumu katram kanālam - tomēr jūs vēlaties to kartēt atbilstoši tam, kas jums noder - jūsu motora kontroliera korpuss. Piemēram, ja sūtāt PWM signālu, varat to kartēt līdz 1000 līdz 2000 vai, ja sūtāt analogo signālu, varat to kartēt līdz 0-255 un iestatīt virzienu kā Būla utt.
Arduino piemērs:
int leftThrottle = kursorsviru_y + kursorsviru_x;
int rightThrottle = kursorsviru_y - kursorsviru_x; // dažos gadījumos maksimums ir 100, dažos gadījumos tas ir 200 // ņemsim vērā atšķirību, lai maksimums vienmēr būtu 200int dif = abs (abs (joystick_y) - abs (kursorsviru_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftTrottle + diff; rightThrottle = rightTrottle <0? rightThrottle - diferenciālis: rightThrottle + diff; // Karte no ± 200 līdz ± 100 vai jebkurš diapazons, kurā jūs adatasThrottle = karte (leftThrottle, 0, 200, -100, 100); rightThrottle = karte (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = ierobežot (leftThrottle, -100, 100); rightThrottle = ierobežot (rightThrottle, -100, 100);
JavaScript piemērs:
var leftThrottle = kursorsviru_y + kursorsviru_x; var pa labi Math.abs (kursorsviru_y) - Math.abs (kursorsviru_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftTrottle + diff; rightThrottle = rightTrottle <0? rightThrottle -diff: rightTrottle + diff; // Karte no ± 200 atpakaļ uz leju līdz ± 100 vai jebkurš cits, ko jūs adatā Throttle = karte (leftThrottle, -200, 200, -100, 100); rightThrottle = karte (rightThrottle, -200, 200, -100, 100); // ierobežot leftThrottle = ierobežot (leftThrottle, -100, 100); rightThrottle = ierobežot (rightThrottle, -100, 100); // dažas palīgfunkcijasvar ierobežot = funkcija (num, min, max) {return Math.min (Math. maks (min, min), max); }; var karte = funkcija (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, kartēts; inMin = inMin + inMax; num = numurs + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (num/inSpan)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); kartēts = outSpan*(p/100) - (outMax/2); atgriešanās kartēta;};
Ieteicams:
Bezvadu tālvadība, izmantojot 2,4 GHz NRF24L01 moduli ar Arduino - Nrf24l01 4 kanālu / 6 kanālu raidītāja uztvērējs kvadrakopteram - Rc helikopters - Rc lidmašīna, izmantojot Arduino: 5 soļi (ar attēliem)
Bezvadu tālvadība, izmantojot 2,4 GHz NRF24L01 moduli ar Arduino | Nrf24l01 4 kanālu / 6 kanālu raidītāja uztvērējs kvadrakopteram | Rc helikopters | Rc lidmašīna, izmantojot Arduino: lai vadītu Rc automašīnu | Kvadkopters | Drons | RC plakne | RC laiva, mums vienmēr ir nepieciešams uztvērējs un raidītājs, pieņemsim, ka RC QUADCOPTER mums ir nepieciešams 6 kanālu raidītājs un uztvērējs, un šāda veida TX un RX ir pārāk dārgi, tāpēc mēs to izgatavosim savā
Izpratne par 74LS273 Octal D Flip-Flop IC: 5 soļi
Izpratne par 74LS273 Octal D Flip-Flop IC: es saņēmu rokās 74LS273 IC, kamēr es izglābu dažus komponentus no vecā satelīta uztvērēja, ko es daru starp projektiem un ietaupu naudu…. Šis IC bija vadības panelī un bija savienots ar vadu 4 ciparu 7 segmentu LED displejs ar dažiem pārnesumiem
Kartupeļu akumulators: izpratne par ķīmisko un elektrisko enerģiju: 13 soļi (ar attēliem)
Kartupeļu akumulators: izpratne par ķīmisko un elektrisko enerģiju: Vai zinājāt, ka spuldzi var darbināt tikai ar vienu vai diviem kartupeļiem? Ķīmiskā enerģija starp abiem metāliem tiek pārvērsta elektroenerģijā un ar kartupeļu palīdzību izveido ķēdi! Tas rada nelielu elektrisko lādiņu, kas var būt
Izpratne par ICSP PIC mikrokontrolleriem: 4 soļi (ar attēliem)
Izpratne par ICSP PIC mikrokontrolleriem: mikrokontrolleru programmēšana nav grūta. Programmētāja izveidošana ir lielisks pirmais elektronikas projekts. Šīs pamācības mērķis ir izskaidrot vienkāršo “ķēdes sērijveida programmēšanas” metodi, ko izmanto ar mikroshēmu PIC
Vienkāršas tapetes, izmantojot fotografēšanu un slāņu sajaukšanu - Photoshop apmācība: 5 soļi
Vienkārši fona attēli, izmantojot fotografēšanu un slāņu sajaukšanu - Photoshop apmācība: izveidojiet vizuāli satriecošu fonu, izmantojot vienkāršu tehniku Photoshop iekšpusē. Ikviens var izveidot tik labu fonu, un tas ir daudz vieglāk, nekā jūs varētu domāt! Tātad, vispirms dodieties uz failu > Jauns Iestatiet platumu un augstumu uz pikseļiem un iestatiet uz