Tabla de contenido:
- Paso 1: Método de mezcla »Ninguno
- Paso 2: Método Método »Rotar
- Paso 3: Método Método »Simple
- Paso 4: Método Método »Proporcional
Video: Comprensión de la mezcla de canales: 4 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Si alguna vez ha conducido un chasis de control remoto, es muy probable que haya utilizado la mezcla, incluso si no lo sabía. Específicamente, si ha usado un solo joystick o gimble para controlar un vehículo que usa dirección deslizante o dirección diferencial, ha usado la mezcla.
La mezcla es simplemente cómo se utilizan los datos de su joystick para determinar cuánta energía se debe suministrar a cada lado del chasis.
Si abre un joystick, generalmente verá dos potenciómetros adentro. Uno para medir su posición actual a lo largo del eje Y (arriba y abajo), y el otro para medir dónde se encuentra a lo largo del eje X (de lado a lado).
Aunque no tengo una formación formal sobre el tema, he tenido que mezclar código antes y recientemente quería profundizar un poco más en el tema.
Primero, quiero señalar que la mayoría de los transmisores RC tienen capacidad de mezcla, al igual que muchos controladores de motor. Esta información será muy útil si tiene que hacer la mezcla usted mismo en su código. Digamos, por ejemplo, si está utilizando un Arduino para leer datos sin mezclar de un receptor RC, o está leyendo datos analógicos de las ollas en un joystick, o si está leyendo las coordenadas de un joystick digital en una aplicación móvil.
Echemos un vistazo a algunos enfoques de mezcla diferentes.
Paso 1: Método de mezcla »Ninguno
Primero, echemos un vistazo a lo que sucede si no usa la mezcla en absoluto. Si simplemente envía los datos de un eje a un lado del chasis y el otro eje al otro lado, su vehículo no respondería de la manera que desea.
Por ejemplo, si empuja el joystick completamente hacia adelante, el eje Y está a toda velocidad y el eje X está en 0. Por lo tanto, estaría conduciendo en círculos en lugar de ir en línea recta.
Paso 2: Método Método »Rotar
Un compañero de trabajo me señaló una vez que, en caso de apuro, puede girar el transmisor 45 grados para obtener una mezcla de pobre. Si piensa que los valores de los dos potenciómetros en un joystick son el eje xy y en una cuadrícula (con ambos ejes que abarcan -100 a +100), esto tiene mucho sentido porque va a +100 en ambos ejes mientras empuja el joystick hacia arriba y hacia la derecha. Entonces, si esto se asigna directamente a los dos canales de su chasis (los lados izquierdo y derecho de su robot), haría que su robot avanzara.
Entonces, el primer método de mezcla que probé fue rotar matemáticamente las coordenadas xey 45 grados alrededor del punto central de la cuadrícula.
Esto funciona bien, sin embargo, no puedo avanzar con el 100% de potencia porque cuando estás girando, el movimiento general está restringido a un círculo dentro de la cuadrícula, lo que significa que nunca puedes entrar realmente en la esquina superior derecha.
Esto también da como resultado que las esquinas de la cuadrícula no se utilicen. Esto no es un problema si está usando un joystick / gimple que limita su movimiento para que esas áreas nunca se alcancen de todos modos, pero de lo contrario, querrá que esa parte de la cuadrícula haga algo para que sus movimientos se sientan completamente proporcionales.
Si eres un aprendiz visual como yo, este concepto podría ser más fácil de asimilar viendo el video al comienzo de este instructivo.
Veamos algunos ejemplos de código.
NOTAS SOBRE LOS EJEMPLOS DE MIS CÓDIGOS: Dejo de lado cómo obtiene los valores de joystick_x y joystick_y, ya que cambiarían dependiendo de su proyecto. También estaré mapeando / restringiendo a ± 100 pero es posible que necesite mapear a 1000 - 2000 para PWM o 0 - 255 para salida analógica, etc. Siempre restrinjo… por si acaso.
Ejemplo de Arduino:
// rotar matemáticamente
doble 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); // restringir el acelerador izquierdo = restringir (el acelerador izquierdo, -100, 100); rightThrottle = restringir (rightThrottle, -100, 100);
Ejemplo de JavaScript:
// matemáticamente 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); // restringirleftThrottle = restringir (leftThrottle, -100, 100); rightThrottle = restringir (rightThrottle, -100, 100); // ayudante functionvar restricin = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Paso 3: Método Método »Simple
A continuación, tenemos una ecuación muy simple que recogí por primera vez de uno de los videos de Shawn Hymel's Adventures in Science SparkFun, donde resultó que estaba trabajando en un proyecto muy similar al que yo estaba trabajando.
Esta ecuación le permite alcanzar la máxima velocidad cuando avanza, pero al igual que el método de rotación, ignora las áreas de las esquinas de la cuadrícula. Esto se debe a que, en algunos casos, el máximo es 100 y, en algunos casos, el máximo es 200. Por lo tanto, usaría una función de restricción para ignorar cualquier cosa después de 100.
Y, por cierto, no llamo a esto simple de manera despectiva … hay una belleza en la simplicidad.
Ejemplo de Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // restringir el acelerador izquierdo = restringir (el acelerador izquierdo, -100, 100); rightThrottle = restringir (rightThrottle, -100, 100);
Ejemplo de JavaScript:
var leftChannel = joystick_y + joystick_x;
var rightChannel = joystick_y - joystick_x; // restringir leftChannel = restringir (leftChannel, -100, 100); rightChannel = restringir (rightChannel, -100, 100); // ayudante functionvar restricin = function (num, min, max) {return Math.min (Math.max (num, min), max); };
Paso 4: Método Método »Proporcional
Salí del método simple con la esperanza de sacar lo mejor de la ecuación de ambos mundos. La idea aquí es ser completamente proporcional en todas las direcciones, incluso en diagonal, a pesar de que, aunque se está moviendo una distancia mayor, tiene el mismo rango que cuando se mueve verticalmente, que es una distancia menor.
Termina con una escala de -200 a +200 en todas las direcciones en mis ejemplos, lo mapeo a ± 100 porque representa el porcentaje de potencia que va a cada canal; sin embargo, querrá asignarlo a lo que sea que funcione en su uso. estuche para su controlador de motor. Por ejemplo, si está enviando una señal PWM, puede asignarla de 1000 a 2000 o si está enviando una señal analógica, puede asignarla a 0-255 y establecer la dirección como booleana, etc.
Ejemplo de Arduino:
int leftThrottle = joystick_y + joystick_x;
int rightThrottle = joystick_y - joystick_x; // en algunos casos el máximo es 100, en algunos casos es 200 // factoricemos la diferencia para que el máximo sea siempre 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Mapa de ± 200 a ± 100 o cualquier rango que se ajuste. // Restringir Acelerador izquierdo = Restringir (Acelerador izquierdo, -100, 100); Acelerador derecho = Restringir (Acelerador derecho, -100, 100);
Ejemplo de JavaScript:
var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // en algunos casos el máximo es 100, en algunos casos es 200, // vamos a factorizar la diferencia para que el máximo sea siempre 200 var 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; // Mapa desde ± 200 hacia abajo a ± 100 o lo que sea que se te pida. -100, 100); // Restringir el acelerador izquierdo = restringir (el acelerador izquierdo, -100, 100); el acelerador derecho = restringir (el acelerador derecho, -100, 100); // algunas funciones auxiliares var restricción = función (num, min, max) {return Math.min (Math. max (num, min), max); }; var map = function (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, mapeado; 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); mapeado = outSpan * (p / 100) - (outMax / 2); retorno mapeado;};
Recomendado:
Mezcla de colores LED RGB con Arduino en Tinkercad: 5 pasos (con imágenes)
Mezcla de colores de LED RGB con Arduino en Tinkercad: aprendamos a controlar los LED de varios colores utilizando las salidas analógicas de Arduino. Conectaremos un LED RGB al Arduino Uno y crearemos un programa simple para cambiar su color. Puedes seguirlo virtualmente usando Tinkercad Circuits. Incluso puedes ver esto
Control remoto inalámbrico con módulo NRF24L01 de 2.4Ghz con Arduino - Receptor transmisor de 4 canales / 6 canales Nrf24l01 para Quadcopter - Helicóptero Rc - Avión Rc usando Arduino: 5 pasos (con imágenes)
Control remoto inalámbrico con módulo NRF24L01 de 2,4 Ghz con Arduino | Receptor transmisor de 4 canales / 6 canales Nrf24l01 para Quadcopter | Helicóptero Rc | Avión Rc usando Arduino: Para operar un coche Rc | Quadcopter | Drone | Avión RC | Barco RC, siempre necesitamos un receptor y transmisor, supongamos que para RC QUADCOPTER necesitamos un transmisor y receptor de 6 canales y ese tipo de TX y RX es demasiado costoso, así que haremos uno en nuestro
Antena interior BIQUAD, fabricada en cobre y madera para recepción de canales HDTV en la banda UHF (CANALES 14-51): 7 pasos
Antena Interior BIQUAD, Fabricada en Cobre y Madera para Recepción de Canales HDTV en la Banda UHF (CANALES 14-51): En el mercado existen una variedad de antenas para televisión. Los más populares según mi criterio son: UDA-YAGIS, Dipole, Dipole con reflectores, Patch y antenas logarítmicas. Dependiendo de las condiciones, la distancia desde la transmisión a
Comprensión del protocolo IR de los controles remotos del acondicionador de aire: 9 pasos (con imágenes)
Comprensión del protocolo de infrarrojos de los controles remotos del acondicionador de aire: he estado aprendiendo sobre los protocolos de infrarrojos durante bastante tiempo. Cómo enviar y recibir señales de infrarrojos. En este punto, lo único que queda es el protocolo IR de los controles remotos de CA. A diferencia de los controles remotos tradicionales de casi todos los dispositivos electrónicos (por ejemplo, un televisor) donde
Batería de papa: comprensión de la energía química y eléctrica: 13 pasos (con imágenes)
Batería de papa: comprensión de la energía química y eléctrica: ¿Sabías que puedes encender una bombilla con solo una papa o dos? ¡La energía química entre los dos metales se convierte en energía eléctrica y crea un circuito con la ayuda de la papa! Esto crea una pequeña carga eléctrica que puede ser