Daftar Isi:
- Langkah 1: Metode Campuran » Tidak Ada
- Langkah 2: Metode Metode » Putar
- Langkah 3: Metode Metode » Sederhana
- Langkah 4: Metode Metode » Proporsional
Video: Memahami Channel Mixing: 4 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Jika Anda pernah mengendarai sasis kendali jarak jauh, kemungkinan besar Anda telah menggunakan pencampuran, bahkan jika Anda tidak mengetahuinya. Khususnya, jika Anda menggunakan satu joystick atau gimble untuk mengontrol kendaraan yang menggunakan kemudi selip atau kemudi diferensial, Anda telah menggunakan pencampuran.
Pencampuran hanyalah bagaimana data dari joystick Anda digunakan untuk menentukan berapa banyak daya yang harus disuplai ke setiap sisi sasis.
Jika Anda membuka joystick, umumnya Anda akan melihat dua potensiometer di dalamnya. Satu untuk mengukur posisi Anda saat ini di sepanjang sumbu Y (atas dan bawah), dan yang lainnya untuk mengukur di mana Anda berada di sepanjang sumbu X (sisi ke sisi).
Meskipun saya tidak memiliki pelatihan formal tentang subjek, saya harus melakukan pencampuran kode sebelumnya dan baru-baru ini saya ingin menyelam lebih dalam ke subjek tersebut.
Pertama saya ingin mencatat bahwa sebagian besar pemancar RC memiliki kemampuan pencampuran seperti halnya banyak pengontrol motor. Informasi ini akan sangat berguna jika Anda harus melakukan pencampuran sendiri dalam kode Anda. Katakanlah misalnya jika Anda menggunakan Arduino untuk membaca data yang tidak tercampur dari penerima RC, atau Anda sedang membaca data analog dari pot di joystick, atau jika Anda membaca koordinat dari joystick digital di aplikasi seluler.
Mari kita lihat beberapa pendekatan pencampuran yang berbeda.
Langkah 1: Metode Campuran » Tidak Ada
Pertama mari kita lihat apa yang terjadi jika Anda tidak menggunakan pencampuran sama sekali. Jika Anda hanya mengirim data dari satu sumbu ke satu sisi sasis dan sumbu lainnya ke sisi lain, kendaraan Anda tidak akan merespons seperti yang Anda inginkan.
Misalnya jika Anda mendorong joystick lurus ke depan, sumbu Y berada pada kecepatan penuh dan sumbu X berada pada 0. Jadi, Anda akan mengemudi dalam lingkaran alih-alih lurus.
Langkah 2: Metode Metode » Putar
Seorang rekan kerja pernah menunjukkan kepada saya bahwa, dalam keadaan darurat Anda dapat memutar pemancar Anda 45 derajat untuk campuran orang miskin. Jika Anda menganggap nilai dari dua potensiometer dalam joystick sebagai sumbu x dan y pada kisi (dengan kedua sumbu terentang -100 hingga +100), ini sangat masuk akal karena Anda akan mencapai +100 pada kedua sumbu saat Anda mendorong joystick ke atas dan ke kanan. Jadi jika ini memetakan langsung ke dua saluran sasis Anda (sisi kiri dan kanan robot Anda) itu akan membuat robot Anda maju.
Jadi metode pencampuran pertama yang pernah saya coba adalah memutar koordinat x dan y secara matematis 45 derajat terhadap titik pusat kisi.
Ini bekerja dengan baik, namun saya tidak bisa maju dengan kekuatan 100% karena ketika Anda berputar, gerakan keseluruhan dibatasi ke lingkaran di dalam kotak, yang berarti Anda tidak akan pernah bisa benar-benar masuk ke sudut kanan atas itu.
Hal ini juga mengakibatkan sudut-sudut grid tidak dimanfaatkan. Ini bukan masalah jika Anda menggunakan joystick/gimple yang membatasi gerakan Anda sehingga area tersebut tidak pernah tercapai, tetapi jika tidak, Anda ingin bagian grid itu melakukan sesuatu sehingga gerakan Anda terasa sepenuhnya proporsional.
Jika Anda seorang pembelajar visual seperti saya, konsep ini mungkin lebih mudah dipahami dengan menonton video di awal instruksi ini.
Mari kita lihat beberapa contoh kode.
CATATAN TENTANG CONTOH KODE SAYA: Saya mengabaikan bagaimana Anda mendapatkan nilai joystick_x dan joystick_y karena akan berubah tergantung pada proyek Anda. Saya juga akan memetakan/membatasi ke ±100 tetapi Anda mungkin perlu memetakan ke 1000 - 2000 untuk PWM atau 0 - 255 untuk output analog dll. Saya selalu membatasi… untuk berjaga-jaga.
Contoh Arduino:
//putar secara matematis
rad ganda = -45*M_PI/180; int leftThrottle = joystick_x * cos(rad) - joystick_y * sin(rad); int rightThrottle = joystick_y * cos(rad) + joystick_x * sin(rad); //constrain leftThrottle = kendala(leftThrottle, -100, 100); rightThrottle = kendala (rightThrottle, -100, 100);
Contoh JavaScript:
//mathematically 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), max); };
Langkah 3: Metode Metode » Sederhana
Selanjutnya kita memiliki persamaan yang sangat sederhana yang pertama kali saya ambil dari salah satu video Shawn Hymel's Adventures in Science SparkFun di mana ia kebetulan sedang mengerjakan proyek yang sangat mirip dengan yang sedang saya kerjakan.
Persamaan ini memungkinkan Anda mencapai kecepatan penuh saat maju, tetapi sama seperti metode rotasi, persamaan ini mengabaikan area sudut kisi. Ini karena dalam beberapa kasus maksimum adalah 100 dan dalam beberapa kasus maksimum adalah 200. Jadi, Anda akan menggunakan fungsi kendala untuk mengabaikan apa pun setelah 100.
Dan omong-omong, saya tidak menyebut ini sederhana dengan merendahkan… ada keindahan dalam kesederhanaan.
Contoh Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; //constrain leftThrottle = kendala(leftThrottle, -100, 100); rightThrottle = kendala (rightThrottle, -100, 100);
Contoh JavaScript:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x;//constrain leftChannel = constrain(Saluran kiri, -100, 100); rightChannel = kendala (kananChannel, -100, 100); //helper functionvar constrain = function(num, min, max){ return Math.min(Math.max(num, min), max); };
Langkah 4: Metode Metode » Proporsional
Saya melompat dari metode sederhana berharap membuat yang terbaik dari kedua persamaan dunia. Idenya di sini adalah untuk sepenuhnya proporsional ke segala arah bahkan secara diagonal meskipun faktanya meskipun Anda bergerak lebih jauh jaraknya memiliki jangkauan yang sama seperti ketika Anda bergerak secara vertikal yang jaraknya lebih kecil.
Anda berakhir dengan skala -200 hingga +200 ke segala arah dalam contoh saya, saya memetakannya ke ±100 karena ini mewakili persentase daya yang mengalir ke setiap saluran - namun Anda ingin memetakannya ke apa pun yang berfungsi dalam penggunaan Anda- kasus untuk pengontrol motor Anda. Misalnya jika Anda mengirim sinyal PWM, Anda dapat memetakannya ke 1000 hingga 2000 atau jika Anda mengirim sinyal analog, Anda dapat memetakannya ke 0-255 dan mengatur arahnya sebagai boolean, dll.
Contoh Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x;// dalam beberapa kasus maksimal adalah 100, dalam beberapa kasus 200// mari kita faktorkan selisihnya sehingga maksimal selalu 200int diff = abs(abs(joystick_y) - abs(joystick_x));kiriThrottle = kiriThrottle < 0 ? leftThrottle - diff: leftThrottle + diff;rightThrottle = rightThrottle < 0 ? rightThrottle - diff: rightThrottle + diff; //Peta dari ±200 hingga ± 100 atau rentang apa pun yang Anda butuhkanleftThrottle = map(leftThrottle, 0, 200, -100, 100);rightThrottle = map(rightThrottle, 0, 200, -100, 100); //constrainleftThrottle = kendala(leftThrottle, -100, 100);rightThrottle = kendala(rightThrottle, -100, 100);
Contoh JavaScript:
var leftThrottle = joystick_y + joystick_x;var rightThrottle = joystick_y - joystick_x;// dalam beberapa kasus maksimal adalah 100, dalam beberapa kasus 200, // mari kita faktorkan selisihnya sehingga maksimal selalu 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;//Peta dari ±200 kembali ke ±100 atau apa pun yang Anda butuhkanleftThrottle = map(leftThrottle, -200, 200, -100, 100);rightThrottle = peta(rightThrottle, -200, 200, -100, 100); //constrain leftThrottle = constrain(leftThrottle, -100, 100);rightThrottle = constrain(rightThrottle, -100, 100);//beberapa fungsi pembantuvar constrain = function(num, min, max){ return Math.min(Math. maks(angka, menit), maks); }; var map = function(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 = (angka/dalamSpan)*100; keluarMin = keluarMin + keluarMaks; outMax = keluarMaks + keluarMaks; outSpan = Math.abs(outMax - outMin); dipetakan = outSpan*(p/100) - (outMax/2); kembali dipetakan;};
Direkomendasikan:
Cara Menghubungkan Aplikasi Android Dengan AWS IOT dan Memahami API Pengenalan Suara: 3 Langkah
Cara Menghubungkan Aplikasi Android Dengan AWS IOT dan Memahami API Pengenalan Suara: Tutorial ini mengajarkan pengguna cara menghubungkan Aplikasi Android ke server AWS IOT dan memahami API pengenalan suara yang mengontrol Mesin Kopi. Aplikasi mengontrol Mesin Kopi melalui Alexa Layanan Suara, setiap aplikasi
Memahami Elektronik 0 hingga 1 Dengan TinkerCAD: 5 Langkah
Memahami Elektronik 0 hingga 1 Dengan TinkerCAD: Memahami Elektronik dari nol tidak mudah, apa pun untuk Anak-anak atau orang dewasa. Sebagai Teknik Elektro profesional, saya dapat memahami betapa sulitnya Membuat Aturan Abstrak Realistis, sebelum Dapat Dimengerti. Saya akan menyarankan TinkerCAD terintegrasi MENYENANGKAN
Memahami Protokol IR Remote AC: 9 Langkah (dengan Gambar)
Memahami Protokol IR dari Remote AC: Saya telah belajar tentang protokol IR untuk beberapa waktu sekarang. Cara mengirim dan menerima sinyal IR. Pada titik ini, satu-satunya yang tersisa adalah protokol IR dari remote AC. Tidak seperti remote tradisional dari hampir semua perangkat elektronik (misalnya TV) di mana
Baterai Kentang: Memahami Energi Kimia dan Listrik: 13 Langkah (dengan Gambar)
Baterai Kentang: Memahami Energi Kimia dan Listrik: Tahukah Anda bahwa Anda dapat menyalakan bola lampu hanya dengan satu atau dua kentang? Energi kimia antara dua logam diubah menjadi energi listrik dan menciptakan sirkuit dengan bantuan kentang! Ini menciptakan muatan listrik kecil yang dapat
Memahami ICSP untuk Mikrokontroler PIC: 4 Langkah (dengan Gambar)
Memahami ICSP untuk Mikrokontroler PIC: Memprogram mikrokontroler tidaklah sulit. Membangun programmer membuat proyek elektronik pertama yang hebat. Tujuan dari instruksi ini adalah untuk menjelaskan metode 'pemrograman serial dalam rangkaian' sederhana yang digunakan dengan PIC Microchip