Përmbajtje:
- Hapi 1: Metoda e përzierjes »Asnjë
- Hapi 2: Metoda e Metodës »Rrotulloni
- Hapi 3: Metoda e Metodës »E thjeshtë
- Hapi 4: Metoda e Metodës »Proporcionale
Video: Kuptimi i përzierjes së kanaleve: 4 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Nëse keni drejtuar ndonjëherë një shasi të telekomandës, ka një shans të mirë që keni përdorur përzierjen, edhe nëse nuk e keni ditur. Në mënyrë të veçantë, nëse keni përdorur një levë ose gimble të vetme për të kontrolluar një automjet i cili përdor drejtimin me rrëshqitje ose drejtimin diferencial, keni përdorur përzierjen.
Përzierja është thjesht se si të dhënat nga levë juaj përdoren për të përcaktuar se sa energji duhet të furnizohet në secilën anë të shasisë.
Nëse hapni një levë, në përgjithësi do të shihni dy potenciometra brenda. Njëra për të matur pozicionin tuaj aktual përgjatë boshtit Y (lart e poshtë), dhe tjetra për të matur vendin ku jeni përgjatë boshtit X (nga njëra anë në tjetrën).
Edhe pse nuk kam ndonjë trajnim zyrtar mbi këtë temë, më është dashur të bëj përzierje në kod më parë dhe kohët e fundit kam dashur të zhyten pak më thellë në këtë temë.
Së pari dua të vërej se shumica e transmetuesve RC kanë aftësi përzierjeje siç bëjnë shumë kontrollues motorikë. Ky informacion do të jetë më i dobishëm nëse duhet të bëni përzierjen vetë në kodin tuaj. Thuaj për shembull nëse jeni duke përdorur një Arduino për të lexuar të dhëna të përziera nga një marrës RC, ose po lexoni të dhëna analoge nga tenxheret në një levë, ose nëse po lexoni koordinatat nga një levë dixhitale në një aplikacion celular.
Le të hedhim një vështrim në disa qasje të ndryshme të përzierjes.
Hapi 1: Metoda e përzierjes »Asnjë
Së pari le të hedhim një vështrim në atë që ndodh nëse nuk përdorni përzierje fare. Nëse thjesht i dërgoni të dhënat nga një aks në njërën anë të shasisë dhe boshtin tjetër në anën tjetër, automjeti juaj nuk do të përgjigjet ashtu siç dëshironi.
Për shembull, nëse e shtyni levën drejtpërsëdrejti përpara, boshti Y është në gaz të plotë dhe boshti X është në 0. Kështu që ju do të vozitni në rrathë në vend që të shkoni drejt.
Hapi 2: Metoda e Metodës »Rrotulloni
Një bashkëpunëtor një herë më tha se, në një çikë ju mund ta rrotulloni transmetuesin tuaj 45 gradë për përzierjen e një njeriu të varfër. Nëse mendoni për vlerat nga dy potenciometrat në një levë si boshti x an y në një rrjet (me të dy boshtet që shtrihen nga -100 në +100) kjo ka shumë kuptim sepse do të shkoni në +100 në të dy boshtet ndërsa e shtyni levën lart dhe djathtas. Pra, nëse kjo përputhet drejtpërdrejt në dy kanalet tuaja të shasisë (anët e majta dhe të djathta të robotit tuaj) do të bëjë që roboti juaj të shkojë përpara.
Pra, metoda e parë e përzierjes që kam provuar ndonjëherë ishte rrotullimi matematikor i koordinatave x dhe y 45 gradë rreth pikës qendrore të rrjetit.
Kjo funksionon mirë, megjithatë nuk mund të eci përpara me fuqi 100% sepse kur jeni duke rrotulluar, lëvizja e përgjithshme kufizohet në një rreth brenda rrjetit, që do të thotë që ju kurrë nuk mund të hyni vërtet në atë këndin e sipërm të djathtë.
Kjo gjithashtu rezulton që qoshet e rrjetit të mos shfrytëzohen. Ky nuk është problem nëse përdorni një levë/gimple që kufizon lëvizjen tuaj kështu që ato zona nuk arrihen kurrë, por përndryshe ju do të dëshironi që ajo pjesë e rrjetit të bëjë diçka në mënyrë që lëvizjet tuaja të ndjehen plotësisht proporcionale.
Nëse jeni një nxënës vizual si unë, ky koncept mund të jetë më i lehtë të shikoni duke parë videon në fillim të këtij udhëzuesi.
Le të shikojmë disa shembuj të kodit.
SH NOTNIME P EXR SHEMBULLAT E MI KODI: Unë po lë mënjanë se si i merrni vlerat e joystick_x dhe joystick_y pasi do të ndryshonte në varësi të projektit tuaj. Gjithashtu unë do të bëj hartë/kufizim në 100, por ka të ngjarë që ju të keni nevojë të hartoni në 1000 - 2000 për PWM ose 0 - 255 për dalje analoge etj. Unë gjithmonë e kufizoj … vetëm në rast.
Shembull Arduino:
// rrotullohet matematikisht
rad e dyfishtë = -45*M_PI/180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * sin (rad); // kufizoj leftThrottle = kufizoj (majtas throttle, -100, 100); rightThrottle = kufizoj (rightThrottle, -100, 100);
Shembull JavaScript:
// matematikisht 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 = kufizoj (majtas throttle, -100, 100); rightThrottle = kufizoj (rightThrottle, -100, 100); // helper functionvar constrain = funksion (num, min, max) {return Math.min (Math.max (num, min), max); };
Hapi 3: Metoda e Metodës »E thjeshtë
Më tej ne kemi një ekuacion shumë të thjeshtë të cilin e mora për herë të parë nga një nga videot e Shawn Hymel's Adventures in Science SparkFun ku ai ndodhi të punonte një projekt shumë të ngjashëm me atë në të cilin po punoja.
Ky ekuacion ju lejon të arrini shpejtësinë e plotë kur shkoni përpara, por ashtu si metoda e rrotullimit, ajo nuk merr parasysh zonat qoshe të rrjetit. Kjo ndodh sepse në disa raste maksimumi është 100 dhe në disa raste maksimumi është 200. Pra, ju do të përdorni një funksion kufizues për të shpërfillur asgjë pas 100.
Dhe meqë ra fjala, unë nuk e quaj këtë të thjeshtë në mënyrë poshtëruese … ka një bukuri në thjeshtësi.
Shembull Arduino:
int leftThrottle = levë_y + levë_xh;
int rightThrottle = joystick_y - joystick_x; // kufizoj leftThrottle = kufizoj (majtas throttle, -100, 100); rightThrottle = kufizoj (rightThrottle, -100, 100);
Shembull JavaScript:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // kufizo leftChannel = kufizo (leftChannel, -100, 100); rightChannel = kufizoj (rightChannel, -100, 100); // helper functionvar constrain = funksion (num, min, max) {return Math.min (Math.max (num, min), max); };
Hapi 4: Metoda e Metodës »Proporcionale
Hipa në këmbë nga metoda e thjeshtë duke shpresuar të bëj më të mirën nga ekuacioni i të dy botëve. Ideja këtu është që të jeni plotësisht proporcional në të gjitha drejtimet edhe diagonalisht pavarësisht faktit që edhe pse jeni duke lëvizur në një distancë më të madhe ajo ka të njëjtën gamë si kur lëvizni vertikalisht që është një distancë më e vogël.
Përfundoni me një shkallë prej -200 në +200 në të gjitha drejtimet në shembujt e mi, unë e shënoj atë në 100 because sepse përfaqëson përqindjen e fuqisë që shkon në çdo kanal - megjithatë ju do të dëshironi ta hartoni atë në çfarëdo që funksionon në përdorimin tuaj- rast për kontrolluesin tuaj motorik. Për shembull, nëse jeni duke dërguar një sinjal PWM, mund ta vendosni atë në 1000 deri në 2000 ose nëse po dërgoni një sinjal analog, mund ta hartoni në 0-255 dhe të vendosni drejtimin si boolean, etj.
Shembull Arduino:
int leftThrottle = levë_y + levë_xh;
int rightThrottle = joystick_y - joystick_x; // në disa raste max është 100, në disa raste është 200 // le të faktojmë ndryshimin kështu që maksimumi është gjithmonë 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = majtëTrottle <0? leftThrottle - ndrysh: leftThrottle + ndrysh; rightThrottle = rightThrottle <0? rightThrottle - ndrysh: rightThrottle + ndrysh; // Harta nga to 200 në 100 or ose çfarëdo diapazoni që ju nevojitetleftThrottle = hartë (majtas Throttle, 0, 200, -100, 100); rightThrottle = hartë (rightThrottle, 0, 200, -100, 100); // constrainleftThrottle = kufizoj (majtas Throttle, -100, 100); rightThrottle = kufizoj (rightThrottle, -100, 100);
Shembull JavaScript:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // në disa raste max është 100, në disa raste është 200, // le të faktorizojmë diferencën kështu që maksimumi është gjithmonë 200var ndrysh = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = majtas Thottottle <0? leftThrottle - ndrysh: leftThrottle + ndrysh; rightThrottle = rightThrottle <0? djathtas -100, 100); // kufizoj leftThrottle = kufizoj (leftThrottle, -100, 100); rightThrottle = kufizoj (rightThrottle, -100, 100); // disa funksione ndihmëse varg = funksion (numër, min, max) {kthim Math.min (Matematikë max (num, min), max); }; var map = funksioni (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, i hartuar; 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); e hartuar = jashtëSpan*(p/100) - (jashtëMaks/2); kthimi i hartuar;};
Recommended:
Antena e brendshme BIQUAD, e bërë prej bakri dhe druri për pritjen e kanaleve HDTV në brezin UHF (KANALET 14-51): 7 hapa
Antena e brendshme BIQUAD, e bërë prej bakri dhe druri për pritjen e kanaleve HDTV në brezin UHF (KANALET 14-51): Në treg ka një larmi antenash për televizionin. Më të njohurat sipas kritereve të mia janë: UDA-YAGIS, Dipole, Dipole me reflektorë, antena Patch dhe Logaritmike. Në varësi të kushteve, distanca nga transmetuesi i një
Kuptimi i Protokollit IR të telekomandave të Air Conditoner: 9 hapa (me fotografi)
Kuptimi i Protokollit IR të telekomandave të Air Conditoner: Unë kam mësuar rreth protokolleve IR për mjaft kohë tani. Si të dërgoni dhe merrni sinjale IR. Në këtë pikë, e vetmja gjë që mbetet është protokolli IR i telekomandave AC. Ndryshe nga telekomandat tradicionale të pothuajse të gjitha pajisjeve elektronike (thonë një TV) ku
Bateria e patates: Kuptimi i energjisë kimike dhe elektrike: 13 hapa (me fotografi)
Bateria e patates: Kuptimi i energjisë kimike dhe elektrike: A e dini se mund të ndizni një llambë me vetëm një ose dy patate? Energjia kimike midis dy metaleve shndërrohet në energji elektrike dhe krijon një qark me ndihmën e patates! Kjo krijon një ngarkesë të vogël elektrike që mund të jetë
Ndërtoni një kompjuter W/ Kuptimi bazë i elektronikës: 9 hapa (me fotografi)
Ndërtoni një kompjuter W/ Kuptimi themelor i elektronikës: A keni dashur ndonjëherë të pretendoni se jeni vërtet i zgjuar dhe të ndërtoni kompjuterin tuaj nga e para? A nuk dini asgjë për atë që duhet për të bërë një kompjuter minimal? Epo, është e lehtë nëse dini mjaftueshëm për elektronikën për të bashkuar disa IC së bashku
Kuptimi i ICSP për mikrokontrolluesit PIC: 4 hapa (me fotografi)
Kuptimi i ICSP për Mikrokontrolluesit PIC: Programimi i mikrokontrolluesve nuk është i vështirë. Ndërtimi i një programuesi bën një projekt të madh të parë elektronik. Qëllimi i këtij udhëzuesi është të shpjegojë metodën e thjeshtë "programimi serik në qark" e përdorur me PIC të Mikroçipit