Mục lục:
- Bước 1: Phương pháp kết hợp »Không có
- Bước 2: Phương pháp Phương pháp »Xoay
- Bước 3: Phương pháp Phương pháp »Đơn giản
- Bước 4: Phương pháp Phương pháp »Tỷ lệ
Video: Hiểu cách trộn kênh: 4 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Nếu bạn đã từng lái khung điều khiển từ xa, rất có thể bạn đã sử dụng cách trộn, ngay cả khi bạn không biết điều đó. Cụ thể, nếu bạn đã sử dụng một cần điều khiển hoặc cần điều khiển để điều khiển một chiếc xe sử dụng hệ thống lái trượt hoặc lái vi sai, thì bạn đã sử dụng kết hợp.
Kết hợp chỉ đơn giản là cách dữ liệu từ cần điều khiển của bạn được sử dụng để xác định lượng điện năng nên được cung cấp cho mỗi bên của khung máy.
Nếu bạn mở cần điều khiển, nhìn chung bạn sẽ thấy hai chiết áp bên trong. Một để đo vị trí hiện tại của bạn dọc theo trục Y (lên và xuống) và một để đo vị trí của bạn dọc theo trục X (từ bên này sang bên kia).
Mặc dù tôi không được đào tạo chính thức về chủ đề này, tôi đã phải làm công việc trộn mã trước đây và gần đây tôi muốn tìm hiểu sâu hơn một chút về chủ đề này.
Đầu tiên, tôi muốn lưu ý rằng hầu hết các máy phát RC đều có khả năng trộn giống như nhiều bộ điều khiển động cơ. Thông tin này sẽ hữu ích nhất nếu bạn phải tự trộn mã trong mã của mình. Ví dụ: giả sử bạn đang sử dụng Arduino để đọc dữ liệu không trộn lẫn từ bộ thu RC hoặc bạn đang đọc dữ liệu tương tự từ các bình trong một cần điều khiển hoặc nếu bạn đang đọc tọa độ từ một cần điều khiển kỹ thuật số trên ứng dụng dành cho thiết bị di động.
Chúng ta hãy xem xét một số cách tiếp cận trộn khác nhau.
Bước 1: Phương pháp kết hợp »Không có
Trước tiên, hãy xem điều gì sẽ xảy ra nếu bạn không sử dụng cách trộn. Nếu bạn chỉ gửi dữ liệu từ một trục đến một bên của khung xe và trục kia sang phía bên kia, xe của bạn sẽ không phản hồi theo cách bạn muốn.
Ví dụ: nếu bạn đẩy hết cần điều khiển về phía trước, trục Y ở mức hết ga và trục X ở mức 0. Vì vậy, bạn sẽ lái xe theo vòng tròn thay vì đi thẳng.
Bước 2: Phương pháp Phương pháp »Xoay
Một đồng nghiệp đã từng chỉ ra với tôi rằng, bạn có thể xoay máy phát của mình 45 độ để phù hợp với một người đàn ông nghèo. Nếu bạn nghĩ các giá trị từ hai chiết áp trong một cần điều khiển là trục x một y trên lưới (với cả hai trục kéo dài từ -100 đến +100), điều này rất có ý nghĩa vì bạn sẽ +100 trên cả hai trục khi bạn đẩy cần điều khiển lên và sang phải. Vì vậy, nếu điều này ánh xạ trực tiếp đến hai kênh khung gầm của bạn (bên trái và bên phải của rô bốt), nó sẽ làm cho rô bốt của bạn tiến về phía trước.
Vì vậy, phương pháp trộn đầu tiên mà tôi từng thử là xoay tọa độ x và y một cách toán học 45 độ về điểm trung tâm của lưới.
Điều này hoạt động tốt, tuy nhiên tôi không thể tiếp tục với 100% sức mạnh vì khi bạn đang xoay, chuyển động tổng thể bị giới hạn trong một vòng tròn trong lưới, có nghĩa là bạn không bao giờ thực sự có thể vào được góc trên cùng bên phải.
Điều này cũng dẫn đến các góc của lưới không được sử dụng. Đây không phải là vấn đề nếu bạn đang sử dụng cần điều khiển / gimple giới hạn chuyển động của bạn để những khu vực đó không bao giờ đạt được, nhưng nếu không, bạn sẽ muốn phần đó của lưới làm điều gì đó để các chuyển động của bạn cảm thấy hoàn toàn tương xứng.
Nếu bạn là một người học trực quan như tôi, khái niệm này có thể dễ dàng tìm hiểu hơn bằng cách xem video ở đầu phần hướng dẫn này.
Hãy xem xét một số ví dụ mã.
LƯU Ý VỀ CÁC VÍ DỤ MÃ CỦA TÔI: Tôi đang bỏ qua cách bạn lấy các giá trị cần điều khiển_x và cần điều khiển_y vì nó sẽ thay đổi tùy thuộc vào dự án của bạn. Ngoài ra, tôi sẽ ánh xạ / giới hạn đến ± 100 nhưng bạn có thể cần ánh xạ đến 1000 - 2000 cho PWM hoặc 0 - 255 cho đầu ra tương tự, v.v. Tôi luôn hạn chế… đề phòng.
Ví dụ về Arduino:
// xoay theo toán học
đôi rad = -45 * M_PI / 180; int leftThrottle = cần điều khiển_x * cos (rad) - cần điều khiển_y * sin (rad); int rightThrottle = cần điều khiển_y * cos (rad) + cần điều khiển_x * sin (rad); // ràng buộc leftThrottle = constraintin (leftThrottle, -100, 100); rightThrottle = ràng buộc (rightThrottle, -100, 100);
Ví dụ JavaScript:
// về mặt toán học xoayvar rad = -45 * Math. PI / 180; leftThrottle = phím điều khiển_x * Math.cos (rad) - phím điều khiển_y * Math.sin (rad); rightThrottle = cần điều khiển_y * Math.cos (rad) + cần điều khiển_x * Math.sin (rad); // bindinleftThrottle = constraintin (leftThrottle, -100, 100); rightThrottle = constraintin (rightThrottle, -100, 100); // helper functionvar constraintin = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Bước 3: Phương pháp Phương pháp »Đơn giản
Tiếp theo, chúng ta có một phương trình rất đơn giản mà tôi chọn lần đầu tiên từ một trong những video của Shawn Hymel’s Adventures in Science SparkFun, nơi anh ấy tình cờ thực hiện một dự án rất giống với dự án mà tôi đang làm.
Phương trình này cho phép bạn đạt được tốc độ tối đa khi đi về phía trước nhưng giống như phương pháp xoay, nó không tính đến các khu vực góc của lưới. Điều này là do trong một số trường hợp, giá trị tối đa là 100 và trong một số trường hợp, giá trị tối đa là 200. Vì vậy, bạn sẽ sử dụng một hàm ràng buộc để bỏ qua bất kỳ thứ gì sau 100.
Và nhân tiện, tôi không gọi điều này là đơn giản… đơn giản có một vẻ đẹp.
Ví dụ về Arduino:
int leftThrottle = cần điều khiển_y + cần điều khiển_x;
int rightThrottle = cần điều khiển_y - cần điều khiển_x; // ràng buộc leftThrottle = constraintin (leftThrottle, -100, 100); rightThrottle = bindin (rightThrottle, -100, 100);
Ví dụ JavaScript:
var leftChannel = cần điều khiển_y + phím điều khiển_x;
var rightChannel = joystick_y - cần điều khiển_x; // ràng buộc leftChannel = constraintin (leftChannel, -100, 100); rightChannel = constraintin (rightChannel, -100, 100); // helper functionvar constraintin = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Bước 4: Phương pháp Phương pháp »Tỷ lệ
Tôi bắt đầu từ phương pháp đơn giản với hy vọng tạo ra một phương trình tốt nhất của cả hai thế giới. Ý tưởng ở đây là hoàn toàn tỷ lệ thuận theo tất cả các hướng thậm chí theo đường chéo mặc dù thực tế là mặc dù bạn đang di chuyển một khoảng cách lớn hơn, nó có cùng phạm vi như khi bạn di chuyển theo phương thẳng đứng, tức là một khoảng cách nhỏ hơn.
Bạn kết thúc với tỷ lệ -200 đến +200 ở mọi hướng trong ví dụ của tôi, tôi ánh xạ tỷ lệ đó là ± 100 vì nó thể hiện phần trăm công suất đi đến mỗi kênh - tuy nhiên bạn sẽ muốn ánh xạ nó với bất kỳ thứ gì hoạt động trong mục đích sử dụng của bạn- trường hợp cho bộ điều khiển động cơ của bạn. Ví dụ: nếu bạn đang gửi một tín hiệu PWM, bạn có thể ánh xạ nó thành 1000 đến 2000 hoặc nếu bạn đang gửi một tín hiệu tương tự, bạn có thể ánh xạ nó thành 0-255 và đặt hướng là boolean, v.v.
Ví dụ về Arduino:
int leftThrottle = cần điều khiển_y + cần điều khiển_x;
int rightThrottle = Joystick_y - Joystick_x; // trong một số trường hợp, giá trị tối đa là 100, trong một số trường hợp là 200 // hãy tính theo sự khác biệt để giá trị tối đa luôn là 200int diff = abs (abs (phím điều khiển_y) - abs (phím điều khiển_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Bản đồ từ ± 200 đến ± 100 hoặc bất kỳ phạm vi nào bạn kimftThrottle = map (leftThrottle, 0, 200, -100, 100); rightThrottle = map (rightThrottle, 0, 200, -100, 100); // constraintinleftThrottle = bindin (leftThrottle, -100, 100); rightThrottle = bindin (rightThrottle, -100, 100);
Ví dụ về JavaScript:
var leftThrottle = Joystick_y + Joystick_x; var rightThrottle = Joystick_y - Joystick_x; // trong một số trường hợp, giá trị tối đa là 100, trong một số trường hợp là 200, // hãy tính theo sự khác biệt để giá trị tối đa luôn là 200var diff = Math.abs (Math.abs (cần điều khiển_y) - Math.abs (cần điều khiển_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Bản đồ từ ± 200 trở xuống ± 100 hoặc bất cứ thứ gì bạn kimftThrottle = map (leftThrottle, -200, 200, -100, 100); rightThrottle = map (rightThrottle, -200, 200, -100, 100); // ràng buộc leftThrottle = bindin (leftThrottle, -100, 100); rightThrottle = bindin (rightThrottle, -100, 100); // một số hàm trợ giúpvar bindin = function (num, min, max) {return Math.min (Toán học. max (num, min), max); }; var map = function (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, ánh xạ; 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); ánh xạ = outSpan * (p / 100) - (outMax / 2); trả về ánh xạ;};
Đề xuất:
3 KÊNH TRỘN ÂM THANH Tích hợp với Bộ phát Radio FM: 19 bước (có Hình ảnh)
BỘ TRỘN ÂM THANH 3 KÊNH Tích hợp với Bộ phát Radio FM: Xin chào các bạn, trong bài viết này, tôi sẽ hướng dẫn các bạn xây dựng bộ TRỘN ÂM THANH 3 KÊNH của riêng bạn tích hợp với một bộ phát radio FM
Robot SCARA: Tìm hiểu về Foward và Chuyển động học nghịch đảo !!! (Plot Twist Tìm hiểu cách tạo giao diện thời gian thực trong ARDUINO bằng PROCESSING !!!!): 5 bước (có hình ảnh)
Robot SCARA: Tìm hiểu về Foward và Chuyển động học nghịch đảo !!! (Plot Twist Tìm hiểu cách tạo giao diện thời gian thực trong ARDUINO bằng cách sử dụng PROCESSING !!!!): Robot SCARA là một cỗ máy rất phổ biến trong thế giới công nghiệp. Tên này là viết tắt của cả Cánh tay robot lắp ráp tuân thủ có chọn lọc hoặc Cánh tay robot có khớp nối tuân thủ có chọn lọc. Về cơ bản nó là một rô bốt ba bậc tự do, là rô bốt hai cấp đầu tiên
Bộ khuếch đại kênh 5.1 kênh DIY 300 Watt: 12 bước (có hình ảnh)
Bộ khuếch đại 5.1 kênh DIY 300 Watt: Này! Mọi người Tên tôi là Steve. Hôm nay tôi sẽ hướng dẫn các bạn Cách tạo Bộ khuếch đại kênh 5.1. Nhấp vào đây để xem video Hãy bắt đầu
Điều khiển từ xa không dây sử dụng mô-đun NRF24L01 2.4Ghz với Arduino - Nrf24l01 Bộ thu phát 4 kênh / 6 kênh cho Quadcopter - Máy bay trực thăng Rc - Rc Plane sử dụng Arduino: 5 bước (có hình ảnh)
Điều khiển từ xa không dây sử dụng mô-đun NRF24L01 2.4Ghz với Arduino | Nrf24l01 Bộ thu phát 4 kênh / 6 kênh cho Quadcopter | Máy bay trực thăng Rc | Rc Plane Sử dụng Arduino: Để vận hành một chiếc xe Rc | Quadcopter | Máy bay không người lái | Máy bay RC | Thuyền RC, chúng tôi luôn cần bộ thu và bộ phát, giả sử đối với RC QUADCOPTOR, chúng tôi cần bộ phát và bộ thu 6 kênh và loại TX và RX đó quá đắt, vì vậy chúng tôi sẽ làm một bộ trên
Cách chuyển đổi đồng hồ G-Shock DW-5600 trơn thành màn hình âm bản: 8 bước (có hình ảnh)
Cách chuyển đổi đồng hồ G-Shock DW-5600 trơn thành màn hình âm bản: Dự án này đối với tôi hơi phiêu lưu hơn một chút và bạn sẽ thấy hơi phức tạp hơn một số dự án khác mà tôi đã thực hiện với G-Shocks của mình . Nó liên quan đến việc thực hiện một số điều khá khó chịu với màn hình của G-Shock, vì vậy nếu bạn mờ nhạt