Isi kandungan:
- Langkah 1: Kaedah Campuran »Tiada
- Langkah 2: Kaedah Kaedah »Putar
- Langkah 3: Kaedah Kaedah »Mudah
- Langkah 4: Kaedah Kaedah »Berkadar
Video: Memahami Pencampuran Saluran: 4 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Sekiranya anda pernah menggunakan casis alat kawalan jauh, ada kemungkinan anda menggunakan pencampuran, walaupun anda tidak mengetahuinya. Khususnya, jika Anda menggunakan joystick tunggal atau gimble untuk mengendalikan kendaraan yang menggunakan skid steering atau diferensial steering, Anda telah menggunakan mixing.
Mencampurkan adalah bagaimana data dari kayu bedik anda digunakan untuk menentukan berapa banyak kuasa yang harus dibekalkan ke setiap sisi casis.
Sekiranya anda membuka kayu bedik, secara amnya anda akan melihat dua potensiometer di dalamnya. Satu untuk mengukur kedudukan semasa anda di sepanjang paksi Y (atas dan bawah), dan yang lain untuk mengukur di mana anda berada di sepanjang paksi X (sisi ke sisi).
Walaupun saya tidak mempunyai latihan formal mengenai perkara ini, saya terpaksa melakukan percampuran dalam kod sebelum ini dan baru-baru ini saya ingin menyelami topik ini dengan lebih mendalam.
Mula-mula saya ingin perhatikan bahawa kebanyakan pemancar RC mempunyai kemampuan mencampurkan seperti mana banyak pengawal motor. Maklumat ini akan sangat berguna jika anda perlu mencampurkan diri dengan kod anda. Katakan sebagai contoh jika anda menggunakan Arduino untuk membaca data yang tidak dicampur dari penerima RC, atau anda membaca data analog dari periuk di joystick, atau jika anda membaca koordinat dari kayu bedik digital pada aplikasi mudah alih.
Mari kita lihat beberapa pendekatan pencampuran yang berbeza.
Langkah 1: Kaedah Campuran »Tiada
Pertama mari kita lihat apa yang berlaku jika anda sama sekali tidak menggunakan pencampuran. Sekiranya anda hanya menghantar data dari satu paksi ke satu sisi casis dan paksi yang lain ke sisi yang lain, kenderaan anda tidak akan bertindak balas seperti yang anda mahukan.
Contohnya, jika anda menekan kayu bedik terus ke hadapan, paksi Y berada pada pendikit penuh dan paksi X berada pada 0. Oleh itu, anda akan memandu dalam bulatan dan bukannya lurus.
Langkah 2: Kaedah Kaedah »Putar
Seorang rakan sekerja pernah menunjukkan kepada saya bahawa, dalam keadaan darurat anda boleh memutar pemancar anda 45 darjah untuk campuran orang miskin. Sekiranya anda memikirkan nilai dari dua potensiometer dalam kayu bedik sebagai paksi x an y pada grid (dengan kedua paksi merangkumi -100 hingga +100) ini masuk akal kerana anda akan +100 pada kedua paksi semasa anda menekan joystick ke atas dan ke kanan. Oleh itu, jika ini memetakan terus ke dua saluran casis anda (sebelah kiri dan kanan robot anda) ia akan menjadikan robot anda maju.
Jadi kaedah pencampuran pertama yang pernah saya cuba ialah memutar koordinat x dan y secara matematik 45 darjah mengenai titik tengah grid.
Ini berfungsi dengan baik, namun saya tidak dapat maju dengan kekuatan 100% kerana ketika anda berputar, pergerakan keseluruhan dibatasi pada bulatan dalam grid, yang bermaksud anda tidak boleh benar-benar masuk ke sudut kanan atas.
Ini juga mengakibatkan sudut grid tidak digunakan. Ini tidak menjadi masalah jika anda menggunakan joystick / gimple yang membatasi pergerakan anda sehingga kawasan-kawasan tersebut tidak pernah dapat dicapai, tetapi jika tidak, anda mahu bahagian grid itu melakukan sesuatu sehingga pergerakan anda terasa benar-benar berkadar.
Sekiranya anda seorang pelajar visual seperti saya, konsep ini mungkin lebih mudah digunakan dengan menonton video pada awal arahan ini.
Mari lihat beberapa contoh kod.
CATATAN TENTANG CONTOH KOD SAYA: Saya meninggalkan bagaimana anda mendapat nilai joystick_x dan joystick_y kerana ia akan berubah bergantung pada projek anda. Juga saya akan memetakan / mengekang hingga ± 100 tetapi anda mungkin perlu memetakan ke 1000 - 2000 untuk PWM atau 0 - 255 untuk output analog dll. Saya selalu mengekang… sekiranya berlaku.
Arduino Contoh:
// berpusing secara matematik
double 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); // hadkan leftThrottle = hadkan (leftThrottle, -100, 100); rightThrottle = kekangan (rightThrottle, -100, 100);
Contoh JavaScript:
// matematik 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 = function (num, min, max) {return Math.min (Math.max (num, min), maks); };
Langkah 3: Kaedah Kaedah »Mudah
Seterusnya kita mempunyai persamaan yang sangat mudah yang pertama kali saya ambil dari salah satu video Shawn Hymel's Adventures in Science SparkFun di mana dia kebetulan membuat projek yang sangat serupa dengan yang saya sedang kerjakan.
Persamaan ini membolehkan anda mencapai kelajuan penuh ketika melangkah ke hadapan tetapi seperti kaedah putar, ia tidak mengira kawasan sudut grid. Ini kerana dalam beberapa kes maksimum adalah 100 dan dalam beberapa kes maksimum adalah 200. Jadi anda akan menggunakan fungsi batasan untuk mengabaikan apa-apa selepas 100.
Dan omong-omong, saya tidak memanggil ini sebagai penghinaan … ada keindahan dalam kesederhanaan.
Arduino Contoh:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // hadkan leftThrottle = hadkan (leftThrottle, -100, 100); rightThrottle = kekangan (rightThrottle, -100, 100);
Contoh JavaScript:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // hadkan kiriChannel = hadkan (kiriChannel, -100, 100); rightChannel = kekangan (kananChannel, -100, 100); // helper functionvar constrain = function (num, min, max) {return Math.min (Math.max (num, min), maks); };
Langkah 4: Kaedah Kaedah »Berkadar
Saya menggunakan kaedah mudah dengan harapan dapat memanfaatkan persamaan kedua dunia. Ideanya di sini adalah berkadaran sepenuhnya ke semua arah walaupun menyerong walaupun anda bergerak jarak yang lebih jauh ia mempunyai jarak yang sama seperti ketika anda bergerak secara menegak yang jaraknya lebih kecil.
Anda berakhir dengan skala -200 hingga +200 ke semua arah dalam contoh saya, saya memetakannya menjadi ± 100 kerana mewakili peratusan daya yang masuk ke setiap saluran - namun anda ingin memetakannya ke apa sahaja yang sesuai dengan penggunaan anda- sarung untuk pengawal motor anda. Contohnya jika anda menghantar isyarat PWM, anda mungkin memetakannya ke 1000 hingga 2000 atau jika anda menghantar isyarat analog, anda mungkin memetakannya ke 0-255 dan menetapkan arahnya sebagai boolean dll.
Arduino Contoh:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // dalam beberapa kes maksimum adalah 100, dalam beberapa kes adalah 200 // biar faktor perbezaannya sehingga maksimum selalu 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = kananThrottle <0? rightThrottle - diff: rightThrottle + diff; // Peta dari ± 200 hingga ± 100 atau jarak apa pun yang anda perlukan // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = kekangan (rightThrottle, -100, 100);
Contoh JavaScript:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // dalam beberapa kes maks adalah 100, dalam beberapa kes adalah 200, // mari kita faktor perbezaannya sehingga maksimum selalu 200var diff = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = kananThrottle <0? rightThrottle - diff: rightThrottle + diff; // Peta dari ± 200 ke bawah hingga ± 100 atau apa sahaja yang anda perlukan -100, 100); // hadkan leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // beberapa fungsi pembantuvar constrain = function (num, min, max) {return Math.min (Math. maks (bilangan, min), maks); }; var map = fungsi (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, dipetakan; 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); dipetakan = outSpan * (p / 100) - (outMax / 2); pulangan dipetakan;};
Disyorkan:
Kelahiran Papan Pencampuran Manusia: 12 Langkah (dengan Gambar)
Kelahiran Lembaga Pencampuran Manusia: Sejak awal zaman, umat manusia telah mencari dua perkara, yang pertama adalah tempatnya di alam semesta dan yang lain adalah papan pencampuran audio ringkas yang dengan mudah membangkitkan lemak. Birthing Man Mixing Board memenuhi kedua-dua ta
MESOMIX - Mesin Pencampuran Cat Automatik: 21 Langkah (dengan Gambar)
MESOMIX - Mesin Pencampuran Cat Automatik: Adakah anda seorang pereka, seniman atau orang kreatif yang suka melemparkan warna di kanvas anda, tetapi sering menjadi perjuangan ketika membuat warna yang diinginkan. Oleh itu, arahan teknologi seni ini akan hilang yang berjuang ke udara tipis. Sebagai peranti ini, anda
Pencampuran Warna LED RGB Dengan Arduino di Tinkercad: 5 Langkah (dengan Gambar)
Pencampuran Warna LED RGB Dengan Arduino di Tinkercad: Mari belajar bagaimana mengawal LED pelbagai warna menggunakan output analog Arduino. Kami akan menyambungkan LED RGB ke Arduino Uno dan menyusun program mudah untuk menukar warnanya. Anda boleh mengikuti hampir dengan menggunakan Tinkercad Circuits. Anda juga boleh melihat ini
Jauh Tanpa Wayar Menggunakan Modul 2.4Ghz NRF24L01 Bersama Arduino - Nrf24l01 Penerima Pemancar 4 Saluran / 6 Saluran untuk Quadcopter - Helikopter Rc - Rc Plane Menggunakan Arduino: 5 Langkah (dengan Gambar)
Jauh Tanpa Wayar Menggunakan Modul 2.4Ghz NRF24L01 Bersama Arduino | Nrf24l01 Penerima Pemancar 4 Saluran / 6 Saluran untuk Quadcopter | Helikopter Rc | Rc Plane Menggunakan Arduino: Untuk mengendalikan kereta Rc | Quadcopter | Drone | Pesawat RC | Perahu RC, kita selalu memerlukan penerima dan pemancar, misalkan untuk RC QUADCOPTER kita memerlukan pemancar dan penerima 6 saluran dan jenis TX dan RX terlalu mahal, jadi kita akan membuatnya
Antena Dalaman BIQUAD, Terbuat dari Tembaga dan Kayu untuk Penerimaan Saluran HDTV di Jalur UHF (SALURAN 14-51): 7 Langkah
Antena Dalaman BIQUAD, Terbuat dari Tembaga dan Kayu untuk Penerimaan Saluran HDTV di Jalur UHF (SALURAN 14-51): Di pasar terdapat berbagai antena untuk televisyen. Yang paling popular mengikut kriteria saya adalah: UDA-YAGIS, Dipole, Dipole dengan reflektor, Patch dan antena Logaritmik. Bergantung pada keadaan, jarak dari pemancar