Tabla de contenido:
Video: Garden Train - Arduino Wireless NMRA DCC: 4 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Además del instructable anterior con DCC en sistema de carril muerto, he desarrollado la idea aún más con una estación de comando DCC portátil con teclado y pantalla LCD. La estación de comando contiene toda la codificación requerida para las instrucciones NMRA DCC; sin embargo, en lugar de conectarse a los rieles, los datos se transfieren mediante el módulo de radio RF24L01 + a un receptor montado en un camión o debajo de la locomotora, siempre que el espacio lo permita.
Por supuesto, sus locomotoras deben estar equipadas con un decodificador de capacidad de carga adecuado a los motores del motor.
Paso 1: Diseño del sistema
El Arduino Pro Mini está en el corazón del diseño. Utilizando Fritzing para desarrollar el circuito y producir PCB.
Pude usar la misma PCB tanto para el transmisor como para el receptor, lo que me permitió ahorrar algunos costos.
El transmisor tiene conexiones para teclado y LCD mientras que el receptor no las requiere y usa el puente H para suministrar la salida DCC para la locomotora.
Un desarrollo adicional incluye conexiones para un puente en H más grande si es necesario para locomotoras más potentes.
El PCF8574 se puede eliminar si usa una pantalla LCD que viene con la mochila que permite que las conexiones SCA / SCL en el Arduino alimenten la pantalla usando solo 2 cables Lista de partes: Total = aproximadamente £ 60 para DCC Command Station + 1 receptor Costo de receptores adicionales = £ 10.00 aprox cada uno. + baterías
Arduino Pro Mini. x 2 = £ 4.00
Teclado de membrana 4x3 = £ 3.00
Pantalla LCD de 20 x 4 = £ 7.00
PCF5874 = £ 1.80
NRF24L01 +. módulos de radio x 2 = £ 5.80
Fabricación de PCB por 10 de descuento (o se puede usar placa Vero) = £ 24 o £ 4,80 por 2 de descuento
Regulador de 3.3 v = £ 0.17 (paquete de 25 de RS Comp)
Regulador 5v LM7805 = 0,30 €
Puente en H SN754410ne = £ 3.00
Pilas recargables Lloytron de 2700 maH AA x 12 = £ 22.00. (las baterías con clasificación de maH más baja son más baratas)
Condensadores, ollas, pines, conectores, etc. = £ 2.00 aprox.
Caja 190x110x60 mm = £ 8,00
Transmisor - cargador de teléfono / batería = £ 2.00
Paso 2: transmisor
El diagrama del circuito se muestra donde los pines D2 a D8 en el Arduino Pro Mini están conectados al teclado. Un potenciómetro de 100k ohmios está conectado al pin analógico A0 para ajustar la velocidad. Los pines SDA y SCL del chip PCF8574 están conectados a los pines A4 y A5 en el Arduino Pro Mini por medio de cables soldados a los pines en la capa superior del Pro Mini.
El boceto de Arduino se adjunta para su descarga.
He utilizado una pantalla LCD de 20 x 4 que permite 4 líneas de información con 20 caracteres por línea. El teclado proporciona el siguiente menú:
1 a 9 = dirección de la locomotora * = dirección 0 = luces # = Menú de funciones para las teclas 1 a 8
Descripción básica del boceto de Arduino Pro Mini: esta línea del código organiza el mensaje DCC en formato HEX. struct Mensaje de mensaje [MAXMSG] = {
{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // mensaje inactivo
{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // dirección de 3 bytes
};
Para almacenar la configuración de cada locomotora, se configura una serie de matrices de la siguiente manera:
int la [20]; // matriz para contener los números de locomotoras
int sa [20]; // matriz para contener valores de velocidad
int fda [20]; // matriz para contener dir
int fla [20]; // matriz para contener luces
int f1a [20]; // matriz para contener fun1…..
int f8a [20]; // matriz para contener fun8
Para permitir que las instrucciones de DCC se modifiquen a medida que avanzamos:
Para obtener instrucciones de velocidad: void correct_speed (struct Message & x) {
x.data [0] = locoAdr;
x.data [1] = 0x40; // locoMsg con 28 pasos de velocidad}
Para instrucciones de función:
void modificar_grupo1 (estructura Mensaje & x) {
x.data [0] = locoAdr;
x.data [1] = 0x80; // locoMsg con instrucción de grupo uno 0x80}
El bucle principal del boceto:
bucle vacío (vacío) {if (read_locoSpeed ()) {ensamblar_dcc_msg_speed ();
send_data_1 (); // enviar datos de forma inalámbrica
retraso (10);
send_data_3 (); // mostrar datos en la pantalla LCD
send_data_4 (); // mostrar datos en el monitor de serie}
if (read_function ()) {
ensamblar_dcc_msg_group1 ();
send_data_1 ();
retraso (10);
send_data_3 (); }}
Actualice los datos cuando cambie la velocidad:
booleano read_locoSpeed () Esto detecta una nueva configuración de dirección, velocidad o dirección de la locomotora y modifica los 'datos' HEX en consecuencia. Aquí he especificado 28 pasos de velocidad y para cumplir con la norma NMRA S 9.2, los datos de velocidad deben encontrarse en una tabla de consulta en 'paso_velocidad ()'
void speed_step () {switch (locoSpeed) {
caso 1: datos | = 0x02; rotura;
caso 2: datos | = 0x12; rotura;
caso 3: datos | = 0x03; rotura;
………
caso 28: datos | = 0x1F; rotura; }}
Actualice los datos cuando cambien las funciones:
función_de_lectura booleana ()
if (fla [locoAdr] == 0) {datos = 0x80;
} // luces delanteras apagadas
if (fla [locoAdr] == 1) {
datos = 0x90;
} // faros encendidos
Para cada función:
if (f2a [locoAdr] == 0) {datos | = 0; }. // Función 2 desactivada
if (f2a [locoAdr] == 1) {
datos | = 0x02; // La función 2 en} 'datos' se construye combinando ['| =' compuestos bit a bit o] los códigos HEX para cada función.
Paso 3: receptor
El diagrama del circuito se muestra donde se utilizan los pines 5 y 6 del Arduino Pro Mini para proporcionar la señal DCC suministrada al puente H. Los pares de puentes H se conectan en paralelo para aumentar la capacidad de corriente. Dependiendo de la corriente consumida por la locomotora, se puede requerir que se conecte un disipador de calor al dispositivo DIP de 16 pines, o se puede conectar un puente en H de alta resistencia externamente.
El boceto de Arduino se adjunta para descargar. La señal DCC se compone de un reloj que funciona a 2MHZ
void SetupTimer2 () hace este trabajo.
El reloj incluye 'pulsos cortos' (58us) para '1' en datos DCC y 'pulsos largos' (116us) para '0' en datos DCC.
El bucle vacío, obtiene datos de la radio y, si se encuentra una cadena válida, los datos se convierten en datos DCC.
bucle vacío (vacío) {if (radio.available ()) {bool hecho = falso; hecho = radio.read (inmsg, 1); // lee los datos recibidos
char rc = inmsg [0]; // poner el carácter leído en esta matriz
si (rc! = 0) {. // si el carácter no es igual a cero
inString.concat (rc); // construye el mensaje}
if (rc == '\ 0') {// si el carácter es '/ 0' final del mensaje
Serial.println (inString); // imprime el mensaje ensamblado
cuerda(); // de-construye el mensaje de cadena para obtener instrucciones DCC
} } }
Paso 4: Ejecuta los Locos
Para evitar la interrupción de los datos por el funcionamiento de varios trenes en la misma vía, debe desconectar los contactos entre las ruedas y la vía para cada locomotora y camión empleado.
Disfrute de los trenes que circulan libremente independientemente de las condiciones de la vía, ¡qué diferencia! Sin complicaciones, sin arranque y parada y sin necesidad de limpieza.
Las baterías que utilicé son recargables LLoytron AA x 12. He construido un cargador especialmente para ellas que carga 6 a la vez. (ver instructable)
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Cómo: Instalación de Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: 7 pasos (con imágenes)
Cómo: Instalar Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: planeo usar este Rapsberry PI en un montón de proyectos divertidos en mi blog. No dudes en comprobarlo. Quería volver a usar mi Raspberry PI, pero no tenía un teclado ni un mouse en mi nueva ubicación. Ha pasado un tiempo desde que configuré una Raspberry
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: 6 pasos (con imágenes)
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: ¡Hola, chicos! Akarsh aquí de CETech. En este proyecto, vamos a echar un vistazo a HuskyLens de DFRobot. Es un módulo de cámara impulsado por inteligencia artificial que es capaz de realizar varias operaciones de inteligencia artificial como el reconocimiento facial
Smart IoT Garden: 10 pasos (con imágenes)
Smart IoT Garden: si eres como yo, te gustan las frutas y verduras frescas en tu plato, pero no tienes tiempo suficiente para mantener un jardín decente. Este instructivo le mostrará cómo construir un jardín inteligente de IoT (lo llamo: Green Guard) que riega su pl
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil