simple web builder

Trampa de velocidad con Arduino

Una guía para construir un práctico medidor de velocidad para trenes a escala N o H0. Nos permitirá ajustar los decodificadores de los trenes digitales a su velocidad real, o simplemente ampliar las posibilidades de juego en una maqueta analógica.

Objetivos

Muchas veces observamos que los trenes circulan por las maquetas a velocidades excesivas. Otras simplemente tenemos curiosidad por saber a qué velocidad a escala circulan, es decir, cómo los veríamos pasar si fuéramos 87 o 160 veces más pequeños. ¡Incluso habrá alguien que quiera respetar las señales de su trazado! Y los aficionados con sistema digital querrán ajustar las velocidades en sus decodificadores para que sean lo más realistas posibles... En cualquiera de los casos, nos vendrá muy bien un dispositivo que nos permita medir la velocidad de un tren a escala.

Lo que haremos para ello será muy sencillo: medir la velocidad media entre dos puntos situados a una distancia fija conocida. Necesitaremos que el tren, al pasar, active dos sensores situados a esa distancia. Un sistema automático medirá el tiempo que le lleva al tren pasar entre ambos, y calculará la velocidad como el espacio recorrido dividido por el tiempo. La ajustará a la escala correspondiente, y nos la presentará en una pantalla. Algo muy vistoso por una pequeña inversión (unos 15-20 euros o menos, ya que muchos componentes los podremos aprovechar de nuestro cajón de sastre).

El aparato funcionará en cualquier tipo de maqueta, ya sea analógica o digital. Este diseño está pensado para las dos escalas más populares (N y H0), pero si alguien quiere puede adaptar el código de forma sencilla para contemplar otras escalas sin más que modificar los factores de conversión.

Tanto el proyecto como el código que utiliza los otorgo bajo la licencia Creative Commons CC BY-NC-SA 4.0 Así que puedes usarlo, modificarlo y distribuirlo libremente bajo la misma licencia, siempre que sea con propósitos no comerciales y citando la autoría original.

¿Qué materiales necesitamos?

Sensores podemos usar de muchos tipos (de efecto Hall, células fotoeléctricas, etc.) pero por simplicidad y precio utilizaremos ampollas reed. Consisten en dos finas láminas de metal superpuestas dentro de una ampolla de vídrio. Ante un campo magnético, las láminas entran en contacto y dejan pasar la corriente. Nosotros las activaremos por medio unos pequeños imanes colocados bajo la locomotora o uno de los vagones. Tanto las ampollas como los imanes se pueden adquirir en tiendas de modelismo.

Imanes de neodimio y ampollas reed

Para medir el tiempo y calcular la velocidad se pueden utilizar muchos métodos más o menos complejos, pero uno barato y fiable es utilizar un Arduino Nano.

Un Arduino es un microcontrolador/microordenador de arquitectura y código abiertos, nacido con propósitos educativos, que está muy de moda para aprendizaje de programación, domótica, control de impresoras 3D y otros proyectos caseros. Conectado a un ordenador por un puerto USB, se programa de manera muy sencilla introduciéndole un sketch o código con instrucciones. Este código manejará las entradas y salidas del Arduino para hacer lo que deseemos: la placa tiene conexiones tanto analógicas como digitales, pudiendo por ejemplo presentar información o controlar motores u otros dispositivos. Se puede programar cuantas veces se quiera, así que podremos reutilizarlo en otro proyecto si nos cansamos de nuestro velocímetro.

Hay varios modelos de placas Arduino, de distintas potencias y tamaños, llamados Uno, Nano, Mega, etc. Con el Nano, que es el más pequeño y suele ser el más barato, nos sobrará para hacer un cálculo tan sencillo. Será además una buena y fácil introducción al mundo de la programación y de la electrónica.

Un microcontrolador Arduino Nano. A la izquierda está el puerto USB para programarlo, y por todo el contorno están repartidas las patillas o pines que actúan como entradas y salidas (las "D" son digitales y las "A" analógicas). El pequeño pulsador central permite reiniciar el sistema.

Ahora bien, como el Arduino es de código abierto, lo podremos encontrar de muy distintos fabricantes, acabados y precios. Podemos encontrarlo a la venta tanto en su página oficial como en cualquier tienda de electrónica o gran almacén de Internet, y los precios variarán mucho. Eso sí, será muy recomendable que el que compremos tenga las siguientes características:

- Que tenga las patillas de conexión ya soldadas
- Que incluya el cable de conexión USB

Los hay incluso que traen un pequeño zócalo de conexión para atornillar cables con entradas y salidas, lo cual es muy práctico si no tenemos experiencia soldando. En cualquier caso, un Arduino Nano con las patillas ya soldadas y el cable USB incluido debería costarnos en torno a los 10 euros, probablemente menos si compramos varios.

Llegados a este punto, el principal problema del Arduino es que no tiene pantalla. Así que si queremos que nos muestre la velocidad, necesitaremos una. Nosotros le conectaremos un clásico display LED de cuatro dígitos y siete segmentos. El programa que he creado en Arduino utiliza una librería para un display de tipo TM1637, así que ese será el tipo que necesitaremos. Es importante fijarse bien en el modelo, porque el tipo de conexiones y los comandos para su programación pueden variar aunque aparentemente el display sea igual o muy parecido. Se puede encontrar en tiendas de electrónica o en cualquier gran almacén de Internet a muy bajo precio (menos de 5 euros, normalmente unos 3).

Reverso del display TM1637 (observad las conexiones a la izquierda y la librería requerida en la parte superior)

Anverso del display TM1637

Todo el conjunto se puede montar fácilmente sobre una placa de pistas convencional, de las utilizadas en montajes electrónicos. Pero si no nos gusta o no sabemos soldar, es muy recomendable hacerse con los siguientes productos, que encontraremos en tiendas de electrónica:

- Latiguillos de conexión para prototipado (un juego de varios colores, con machos, hembras y mixtos)
- Una placa de prototipado rápido de 2,54 mm de paso, también llamada breadboard

Las placas de prototipado están conectadas eléctricamente en líneas perpendiculares a su eje, de forma que si pinchamos un conector en un agujero, todos los agujeros de esa mitad de la placa en una línea perpendicular al eje longitudinal quedarán unidos eléctricamente a nuestro conector. Así podremos realizar el montaje de forma rápida y sin riesgo, pinchando el Arduino directamente a lo largo de la placa de prototipado, y conectando los cables en las líneas de la placa de prototipado que salen perpendicularmente a cada patilla del Arduino. En Internet podéis encontrar cientos de ejemplos de montajes sencillos con estas placas y tutoriales para su uso.

Otra mejora interesante será comprar uno o dos pequeños pulsadores, para poder tener la placa de Arduino oculta o alejada de donde estemos y reinicarla o cambiar la escala con comodidad. Los pulsadores también se pueden encontrar fácilmente en tiendas de electrónica.

Placas de prototipado rápido (breadboards)

Latiguillos de conexión

Preparando el Arduino

Hay en Internet una gran cantidad de páginas con tutoriales muy sencillos que os enseñarán paso a paso cómo instalar programas en Arduino. Es muy fácil, porque está pensado para gente sin experiencia. En nuestro caso, tendréis que hacer lo siguiente:

1) Descargad aquí el software IDE de Arduino e instaladlo en vuestro ordenador, para poder comunicarlo con la placa de Arduino a través del puerto USB.

2) Descargad de este sitio web la librería creada por Bram Harmsen necesaria para controlar el display TM1637, pinchando en el botón desplegable "Code" y seleccionando "Download ZIP". Como ya he comentado, hay otras librerías para controlar displays similares, pero el programa está pensado para utilizar esta.

3) Descargad de aquí (o de mi GitHub si estáis acostumbrados a manejarlo) mi sketch o programa para usar el Arduino como trampa de velocidad. Dentro del archivo ZIP hay dos archivos, uno para escala N y otro para H0. Elegid la que necesitéis o la que uséis más habitualmente (como veremos, es posible cambiarla)

4) Conectad la placa de Arduino al puerto USB del ordenador. Abrid el IDE de Arduino que instalásteis en el paso 1), cargad el programa de control que acabais de descargar en el paso 3) (menú Archivo - Abrir), e instalad la librería que habeis descargado en el paso 2) (menú Programa - Incluir librería - Añadir librería .ZIP)

5) Subid el programa al Arduino (menú Programa - Subir, o haciendo clic en el icono de la flecha a la derecha)

6) Cerrad el IDE y desconectad el Arduino del ordenador.

Ante cualquier dificultad, una rápida consulta en Google o una llamada a un amigo os dará la respuesta.

Instalación y conexiones

El primer paso será instalar las ampollas reed en la vía. Para instalarlas elegiremos un tramo de vía recto y llano, siempre que sea posible. El programa está pensado para una distancia de 25 cm entre ampollas. Si es necesario, esta distancia se puede modificar, pero habrá que cambiar el valor de la variable "distancia_cm" en la línea 20 del programa, introduciendo el nuevo valor en centímetros como un número real (es decir añadiendo un punto decimal y al menos un cero, para que el programa no lo interprete como un número entero):

Mobirise

No es recomendable poner distancias muy cortas pero tampoco muy largas (el entorno de los 25-35 cm es una distancia razonable). Las razones son que el reloj interno del Arduino no es una maravilla de precisión, y además que las ampollas reed pueden activarse antes o después según la fuerza del imán y otros factores, perdiendo exactitud en la medida. Por otra parte, una distancia demasiado larga haría que la medida tardara mucho en tomarse, y pudiera no ser realista.

Colocaremos las ampollas reed de forma longitudinal o transversal, lo que nos sea más cómodo, y bajo las traviesas de esta (las vías con imitación de balasto de plástico, como las de Kato, Fleischmann o Roco, son ideales para esto). Si por la razón que sea las situamos longitudinalmente encima de las traviesas (bien sea porque no es posible instalarlas debajo, bien porque los imanes no tengan fuerza suficiente para accionarlas) rebajaremos estas para asegurar que ningún detalle o enganche de nuestros modelos pueda golpear con las ampollas. Habrá que colocar las ampollas orientadas correctamente, con las pequeñas plaquitas metálicas que tienen dentro paralelas a la superficie de la vía, de forma que al pasar un imán por encima escuchemos un leve "clic" (si no escuchamos nada, podemos conectar la ampolla entre el polo de una pila y una bombilla, y pasar el imán orientando la ampolla hasta que veamos que la bombilla se enciende).

Seguidamente, necesitaremos alimentar con corriente la placa de Arduino. Hay muchas formas de alimentarlo (podéis consultar en Internet), pero la más práctica y segura, a mi juicio, es hacerlo a través de las patillas "Vin" y "GND". Tendremos que cumplir las siguientes condiciones:

- Corriente contínua únicamente
- Entre 6 y 12 V
- Polo positivo a la patilla "Vin"

Cualquier transformador o alimentador viejo podrá servirnos para este fin, y le estaremos dando uso antes que tirarlo a la basura. En caso necesario, si no tenéis un alimentador a mano, también podría alimentarse la placa por su puerto USB en lugar de por estas patillas, utilizando el cargador viejo de algún móvil. ¡Incluso podeis ponerle unas pilas!

Una vez instaladas las ampollas en la vía y con la fuente de alimentación ya preparada, procederemos a realizar las conexiones según el esquema siguiente:

El pulsador de cambio de escala es opcional: normalmente sólo tendremos una escala, y nos habremos descargado la versión del programa específica para la nuestra. Pero si tenemos maquetas tanto en H0 como en N y conectamos el medidor indistintamente en unas o en otras, podremos cambiarla mediante este pulsador. Esto puede ser útil en clubes o asociaciones.

En mi caso, monté el Arduino sobre una vieja placa de pistas reutilizada de otro proyecto, como podéis ver en la foto (donde por cierto no están conectadas las ampollas reed). En vez de soldar el Arduino directamente a la placa, he puesto un zócalo hecho con tira de pines de 2,54 mm de paso, para permitir desmontarlo con facilidad. Además, he colocado un conector estándar para la alimentación eléctrica y, como podéis ver, hay tres pulsadores: el de cambio de escala y otros dos adicionales (que están conectados en paralelo a las dos ampollas reed para hacer pruebas durante la instalación). La idea será instalar el conjunto bajo el panel de control de la maqueta.

La trampa de velocidad terminada y lista para instalar, a falta de conectar las ampollas reed

El compañero Jesús Parra "Gepaon" (¡gracias por la aportación!) ha instalado la suya en una caja de montajes electrónicos de 100x60x25 mm, alimentando el Arduino con una pila de 9 voltios para así poder llevarla a cualquier lado y ponerla en distintas maquetas. El acabado es estupendo, como podéis ver:

La trampa instalada

Montaje en la caja, con pila de 9 V

Instrucciones de funcionamiento

El Arduino no tiene botón de encendido y apagado: se encenderá y cargará el programa automáticamente en cuanto le demos corriente, y se apagará en cuanto se la retiremos (podemos poner un interruptor si queremos). En caso de ser necesario, se puede reiniciar pulsando en su botón de "reset".

Al encenderlo, el display parpadeará con el valor "0000" y seguidamente mostrará la escala que está utilizando ("E160" para N o "E 87" para H0). A continuación entrará en modo de espera con la pantalla apagada hasta que reciba alguna señal de las ampollas reed. Si deseamos cambiar de escala, podremos hacerlo mientras esté en reposo pulsando en el botón opcional que habremos instalado.

La medida de velocidad comenzará en cuanto el programa reciba una señal de una cualquiera (el orden no importa) de las ampollas reed, esto es, cuando un tren dotado de imán pase por encima de alguna de las dos. El LED "RX" del Arduino parpadeará muy brevemente indicando la recepción de la señal. El programa comenzará entonces a contar el tiempo que pase hasta que reciba la señal de la otra ampolla (ignorará las señales procedentes de la primera para evitar posibles errores, ya que el campo magnético del motor de una locomotora podría volverla a activar).

Cuando detecte el contacto en la otra ampolla (momento en el cual de nuevo parpadeará brevemente el LED "RX") calculará la velocidad media de paso entre las dos, dividiendo la distancia entre ampollas por el tiempo transcurrido y aplicando un factor corrector para obtener la velocidad a la escala elegida. Mostrará la velocidad a escala en km/h en el display durante 2 segundos (tiempo durante el cual no hará caso a ningún contacto en las ampollas y por lo tanto no podrá medir velocidad). Finalmente, el display se apagará y el Arduino se volverá a poner en espera para la siguiente medida.

Y ya estaría todo listo, podéis ver el resultado en el vídeo más abajo. Ahora como diría aquel... ¡A jugar!