Tabla de contenido:

UChip - ¡Boceto simple para controlar motores y / o servos a distancia a través de radio Tx-Rx de 2.4GHz !: 3 pasos
UChip - ¡Boceto simple para controlar motores y / o servos a distancia a través de radio Tx-Rx de 2.4GHz !: 3 pasos

Video: UChip - ¡Boceto simple para controlar motores y / o servos a distancia a través de radio Tx-Rx de 2.4GHz !: 3 pasos

Video: UChip - ¡Boceto simple para controlar motores y / o servos a distancia a través de radio Tx-Rx de 2.4GHz !: 3 pasos
Video: Aula Aberta - Luz e Sombra 2024, Mes de julio
Anonim
Image
Image
UChip - ¡Boceto simple para controlar motores y / o servos a través de radio Tx-Rx de 2.4GHz!
UChip - ¡Boceto simple para controlar motores y / o servos a través de radio Tx-Rx de 2.4GHz!
UChip - ¡Boceto simple para controlar motores y / o servos a través de radio Tx-Rx de 2.4GHz!
UChip - ¡Boceto simple para controlar motores y / o servos a través de radio Tx-Rx de 2.4GHz!

Realmente me gusta el mundo de RC. Usar un juguete RC te da la sensación de que tienes el control de algo extraordinario, ¡a pesar de que sea un bote pequeño, un automóvil o un dron!

Sin embargo, no es fácil personalizar tus juguetes y hacer que hagan lo que tú quieras que hagan. Por lo general, está obligado a utilizar la configuración predeterminada del transmisor o las combinaciones de interruptores y perillas diseñadas específicamente.

Llegar a controlar todo como realmente desea es bastante difícil, principalmente porque el mundo de RC requiere un conocimiento bastante profundo de la programación a nivel de hardware para obtener lo mejor de él.

Probé muchas plataformas y configuraciones, pero siempre me costó un gran esfuerzo para sentirme lo suficientemente cómodo con el código antes de hacer una personalización real de mi juguete RC.

Lo que me faltaba es un boceto simple que podría cargar usando el IDE de Arduino y que fácilmente me permitiría traducir los valores que salen del Radio RX (receptor) al control de Motor / Servo deseado.

Por lo tanto, aquí está lo que creé después de jugar un poco con uChip y el IDE de Arduino: ¡Un boceto simple para controlar motores y / o servos de manera remota a través de Radio Tx-Rx de 2.4GHz!

Lista de materiales

1 x uChip: placa compatible con Arduino IDE

1 sistema de radio xTx-Rx: cualquier sistema de radio con receptor cPPM es bueno (mi combo es un antiguo Spectrum DX7 Tx + Orange R614XN cPPM Rx), asegúrese de seguir el procedimiento de vinculación correcto para vincular el Tx y Rx.

1 x batería: las baterías de alta corriente de descarga son necesarias cuando se trata de motores y servos.

Motores / Servos: según sus necesidades

Componentes electrónicos para impulsar los motores / servos: resistencias simples, MOSFET y diodos le permiten lograr el propósito de conducción.

Paso 1: cableado

Alambrado
Alambrado
Alambrado
Alambrado
Alambrado
Alambrado
Alambrado
Alambrado

Conecte los componentes juntos como se describe en los esquemas.

El Rx está conectado directamente a uChipa y no requiere ningún componente externo. En caso de que esté utilizando un receptor diferente, verifique si necesita un cambiador de nivel o no. Asegúrese de conectar la señal cPPM a uChip PIN_9 (que es PORTA19 en caso de que quiera adaptar el código a otra placa SAMD21).

El cableado restante es necesario para accionar el motor y / o el servo. El esquema adjunto representa el circuito básico para proteger uChip de picos / sobreimpulsos que suelen ocurrir cuando se manejan cargas inductivas. El componente clave para preservar la seguridad de uChip es el diodo Zener de potencia de 5.1V (D1 en el esquema) que debe poner en paralelo al VEXT (uChip pin 16) y GND (uChip pin 8). Alternativamente, en lugar de usar el diodo Zener, puede optar por el circuito opcional representado por D2, C1 y C2, que evita que los picos inversos dañen los componentes del uChip.

Puede conducir tantos motores / servos como necesite simplemente replicando el esquema y cambiando los pines de control (puede usar cualquier pin excepto los pines de alimentación (PIN_8 y PIN_16) y el pin cPPM (PIN_9)). Tenga en cuenta que, si bien solo necesita un circuito de protección que está representado por el diodo Zener (o los componentes para el circuito opcional), los componentes eléctricos relacionados con la conducción del motor / servo deben replicarse tantas veces como el número de motores / servos que pretendes conducir.

Como quería conducir al menos 2 motores y 2 servos, hice un pequeño PCB que implementó el circuito descrito y que se puede ver en la imagen. Sin embargo, el primer prototipo se hizo en un protoboard utilizando cables voladores.

Por lo tanto, no necesita ninguna habilidad de soldadura / diseño de PCB para implementar este simple proyecto:)

Paso 2: programación

Programación
Programación

¡Aquí está la magia! Aquí es donde las cosas se ponen interesantes.

En caso de que haya construido el circuito descrito en el esquema anterior, simplemente puede cargar el boceto “DriveMotorAndServo.ino” y todo debería funcionar.

Eche un vistazo al código y compruebe cómo funciona.

Al principio hay pocos #define usados para definir:

- el número de canales del Rx (6Ch con el Orange 614XN)

- los pines donde están conectados los motores / servos

- Máximo y mínimo utilizado para los servomotores y motores.

- Máximo y mínimo utilizado para el rango de canales de radio

Luego, está la sección de declaración de variables donde se declaran las variables de motores / servos.

En caso de que maneje más de un motor y un servo conectado como se describe en el esquema anterior, debe modificar el boceto y agregar el código que maneja los motores / servos adicionales que adjuntó. Debe agregar tantos Servo, servo_value y motor_value como tantos servos / motores que esté utilizando.

Dentro de la sección de declaración de variables también hay algunas variables volátiles utilizadas para la comparación de captura de la señal cPPM. ¡NO CAMBIE ESTAS VARIABLES!

Lo que debe hacer a continuación es en la función loop (). Aquí, puede decidir qué uso hacer del valor de los canales entrantes.

En mi caso, conecté el valor entrante directamente al motor y al servo, ¡pero puedes cambiarlo de acuerdo a tus necesidades! En el video y las imágenes vinculadas en este tutorial conecté 2 motores y 2 servos, pero podría haber 3, 4, 5,… hasta el máximo de pines libres disponibles (13 en el caso de uChip).

Puede encontrar el valor del canal capturado dentro de la matriz ch [index], cuyo "índice" va de 0 a NUM_CH - 1. Cada canal corresponde a una palanca / interruptor / perilla en su radio. Depende de usted entender qué es qué:)

Finalmente, implementé algunas funciones de depuración para facilitar la comprensión de lo que está sucediendo. Comente / descomente el #define DEBUG para imprimir en el SerialUSB nativo el valor de los canales.

SUGERENCIA: Hay más código debajo de la función loop (). Esta parte del código es necesaria para configurar los pines de alimentación de uChip, manejar las interrupciones generadas por la función de comparación de captura, configurar los temporizadores y el propósito de depuración. En caso de que se sienta lo suficientemente valiente como para jugar con los registros, ¡siéntase libre de modificarlo!

Editar: boceto actualizado, se corrigió un error en la función de mapeo.

Paso 3: ¡Juega, conduce, corre, vuela

Image
Image

Asegúrese de unir correctamente el sistema Tx y Rx. Enciéndelo conectando la batería. Verifica que todo funcione. Puedes ampliar las funcionalidades o cambiar la función de cada canal a tu gusto, porque ahora tienes el control total de tu futuro modelo RC.

¡Ahora, construya su modelo RC personalizado!

PD: dado que la encuadernación puede ser bastante aburrida, planeo lanzar pronto un boceto que permita encuadernar su sistema Tx-Rx sin tener que hacerlo manualmente. ¡Estén atentos a las actualizaciones!

Recomendado: