Tabla de contenido:

Controlador de tren modelo Arduino 2 en 1: 4 pasos
Controlador de tren modelo Arduino 2 en 1: 4 pasos

Video: Controlador de tren modelo Arduino 2 en 1: 4 pasos

Video: Controlador de tren modelo Arduino 2 en 1: 4 pasos
Video: Arduino desde cero en Español - Capítulo 33 - Paso a paso bipolar y A4988 controlador (driver) 2024, Noviembre
Anonim
Controlador de tren modelo Arduino 2 en 1
Controlador de tren modelo Arduino 2 en 1

Hace cuarenta años diseñé un acelerador de tren modelo basado en amplificador operacional para un par de amigos, y luego, hace unos cuatro años, lo recreé usando un microcontrolador PIC. Este proyecto de Arduino recrea la versión PIC pero también agrega la capacidad de usar una conexión Bluetooth en lugar de los interruptores manuales para el control del acelerador, freno y dirección. Si bien el diseño que presento aquí está destinado a un motor de ferrocarril modelo de 12 voltios, se puede modificar fácilmente para una variedad de otras aplicaciones de control de motores de CC.

Paso 1: Modulación de ancho de pulso (PWM)

Modulación de ancho de pulso (PWM)
Modulación de ancho de pulso (PWM)

Para aquellos de ustedes que no están familiarizados con PWM, no es tan aterrador como parece. Todo lo que realmente significa para nuestra aplicación de control de motor simple es que generamos una onda cuadrada de cierta frecuencia y luego cambiamos el ciclo de trabajo. El ciclo de trabajo se define como la relación de tiempo en que la salida es un máximo lógico en comparación con el período de la forma de onda. Puede ver eso con bastante claridad en el diagrama anterior con la forma de onda superior al ciclo de trabajo del 10%, la forma de onda media al ciclo de trabajo del 50% y la forma de onda inferior al ciclo de trabajo del 90%. La línea punteada superpuesta en cada forma de onda representa el voltaje de CC equivalente visto por el motor. Dado que Arduino tiene una capacidad PWM incorporada, es realmente bastante simple generar este tipo de control de motor de CC. Otra ventaja de usar PWM es que ayuda a evitar que el motor arranque a sacudidas que puede ocurrir cuando se usa CC directa. Una desventaja de PWM es que a veces hay un ruido audible del motor a la frecuencia del PWM.

Paso 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

La primera imagen muestra las conexiones Arduino para los interruptores y el módulo de controlador de motor LM298. Hay resistencias pull-up débiles internas al Arduino, por lo que no se necesitan resistencias pull-up para los interruptores. El interruptor de dirección es un interruptor simple SPST (unipolar de un solo tiro). Los interruptores del acelerador y del freno se muestran como botones pulsadores de contacto momentáneo normalmente abiertos.

La segunda imagen muestra las conexiones Arduino para el módulo Bluetooth y el módulo controlador de motor LM298. La salida Bluetooth TXD se conecta directamente a la entrada serial Arduino RX.

La tercera imagen es un módulo de puente H dual L298N. El módulo LM298 tiene un regulador de 5 voltios integrado que puede activarse mediante un puente. Necesitamos +5 voltios para Arduino y Bluetooth, pero queremos +12 voltios para impulsar el motor. En este caso aplicamos los +12 voltios a la entrada “+ 12V power” del L298N y dejaremos el jumper “5V enable” en su lugar. Esto permite que el regulador de 5 voltios salga a la conexión de “+5 potencia” en el módulo. Conéctalo al Arduino y al Bluetooth. No olvide conectar los cables de tierra para la entrada +12 y la salida +5 al módulo "power GND".

Queremos que el voltaje de salida al motor varíe según el PWM generado por el Arduino en lugar de estar completamente encendido o apagado. Para hacer eso, quitamos los puentes de “ENA” y “ENB” y conectamos nuestra salida Arduino PWM a “ENA” en el módulo. Tenga en cuenta que el pin de habilitación real es el más cercano al borde de la placa (junto a los pines de "entrada"). El pin posterior para cada habilitación es de +5 voltios, por lo que queremos asegurarnos de no conectarnos a eso.

Los pines "IN1" e "IN2" del módulo están conectados a los respectivos pines de Arduino. Esos pines controlan la dirección del motor y, sí, hay una buena razón para dejar que Arduino los controle en lugar de simplemente conectar un interruptor al módulo. Veremos por qué en la discusión del software.

Paso 3: módulo Bluetooth

Módulo bluetooth
Módulo bluetooth

La imagen que se muestra aquí es típica de los módulos Bluetooth disponibles. Cuando busque uno para comprar, puede buscar los términos “HC-05” y HC-06”. Las diferencias entre los dos están en el firmware y, por lo general, en la cantidad de pines de la placa. La imagen de arriba es de un módulo HC-06 y viene con firmware simplificado que solo permite una configuración muy básica. También está configurado como un dispositivo Bluetooth solo "Esclavo". En términos simples, eso significa que solo puede responder a los comandos de un dispositivo "Maestro" y no puede emitir comandos por sí solo. El módulo HC-05 tiene más posibilidades de configuración y se puede configurar como dispositivo "Maestro" o "Esclavo". El HC-05 generalmente tiene seis pines en lugar de los cuatro que se muestran arriba para el HC-06. El pin de estado no es realmente importante, pero el pin de clave (a veces se conoce con otros nombres como "EN") es necesario si desea realizar alguna configuración. Generalmente, los módulos no necesitan ninguna configuración si está de acuerdo con la velocidad en baudios predeterminada de 9600 y no le importa dar un nombre específico al módulo. Tengo varios proyectos en los que los uso, así que me gusta nombrarlos en consecuencia.

La configuración de los módulos Bluetooth requiere que usted compre o cree una interfaz para un puerto serie RS-232 o para un puerto USB. No cubriré cómo crear uno en esta publicación, pero debería poder encontrar información en la Web. O simplemente compre una interfaz. Los comandos de configuración usan comandos AT como los que se usaban en los viejos tiempos con los módems telefónicos. Adjunto aquí un manual de usuario que incluye los comandos AT para cada tipo de módulo. Una cosa a tener en cuenta es que el HC-06 requiere comandos en MAYÚSCULAS y la cadena de comandos debe completarse en 1 segundo. Eso significa que algunas de las cadenas más largas para cosas como cambiar las velocidades en baudios deberán cortarse y pegarse en su programa de terminal o deberá configurar archivos de texto para enviar. El requisito de MAYÚSCULAS es solo si está intentando enviar comandos de configuración. El modo de comunicación regular puede aceptar cualquier dato de 8 bits.

Paso 4: software

El software es bastante simple tanto para la versión manual como para la versión Bluetooth. Para seleccionar la versión de Bluetooth, simplemente descomente la declaración "#define BT_Ctrl".

Cuando escribí el código PIC, experimenté con la frecuencia PWM y finalmente me decidí por 500 Hz. Descubrí que si la frecuencia era demasiado alta, el módulo LM298N no era capaz de reaccionar lo suficientemente rápido a los pulsos. Eso significaba que la salida de voltaje no era lineal y podía dar grandes saltos. El Arduino tiene comandos PWM integrados, pero solo le permiten variar el ciclo de trabajo y no la frecuencia. Afortunadamente, la frecuencia es de aproximadamente 490 Hz, por lo que está lo suficientemente cerca de los 500 Hz que usé en el PIC.

Una de las "características" de los aceleradores de trenes es una sensación de impulso para la aceleración y el frenado para simular cómo funciona un tren real. Para lograrlo, se inserta un retardo de tiempo simple en el bucle para la versión manual del software. Con el valor mostrado, toma aproximadamente 13 segundos pasar de 0 a 12 voltios o de 12 voltios a cero. El retraso se puede modificar fácilmente por tiempos más largos o más cortos. El único caso en el que el impulso no está en efecto es cuando se cambia el interruptor de dirección. Por motivos de protección, el ciclo de trabajo de PWM se establece inmediatamente en 0% cada vez que se cambia este interruptor. Eso, en efecto, hace que el interruptor de dirección también funcione como freno de emergencia.

Para asegurar el manejo inmediato del interruptor de dirección, puse su código en un controlador de interrupciones. Eso también nos permite usar la función "interrumpir al cambiar", por lo que no importa si el cambio es de menor a mayor o de mayor a menor.

La versión Bluetooth del software utiliza comandos de una sola letra para iniciar las funciones de avance, retroceso, freno y aceleración. En efecto, los comandos recibidos reemplazan a los interruptores manuales pero provocan las mismas respuestas. La aplicación que utilizo para el control de Bluetooth se llama "Bluetooth Serial Controller" por Next Prototypes. Le permite configurar un teclado virtual y establecer sus propias cadenas de comandos y nombres para cada tecla. También te permite establecer una tasa de repetición, por lo que configuro los botones Freno y Acelerador en 50 ms para dar unos 14 segundos de impulso. Inhabilité la función de repetición para los botones de avance y retroceso.

Eso es todo por esta publicación. Mira mis otros Instructables. Si está interesado en proyectos de microcontroladores PIC, visite mi sitio web en www.boomerrules.wordpress.com

Recomendado: