¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Arduino
  3. Los otros circuitos
Extrait - Arduino Hágalo jugar a los trenes
Extractos del libro
Arduino Hágalo jugar a los trenes Volver a la página de compra del libro

Los otros circuitos

Las alimentaciones

1. La alimentación principal

Los circuitos electrónicos de una central DCC requieren dos tensiones de alimentación muy diferentes: 

  • 5 V (e incluso 3,3 V) para los microcontroladores y circuitos lógicos

  • 14 a 20 V para los circuitos de potencia

Una sola fuente de alimentación puede ser adecuada para suministrar todas las tensiones de alimentación. Una solución especialmente práctica y económica consiste en recuperar una fuente de alimentación para ordenadores portátiles. Compacta y segura, puede suministrar entre 15 y 20 V a una corriente que va de 4 a 8 A. Eso es suficiente para hacer funcionar unas cuantas locomotoras. Un voltaje de 14 V es un mínimo, teniendo en cuenta que hay alguna caída de voltaje en el amplificador de potencia, el circuito de protección y las vías. Lo ideal es alrededor de 16 V, pero se puede ir un poco más allá, ya que la mayoría de las fuentes de alimentación de los portátiles ofrecen 19 V. Algunas de estas fuentes de alimentación tienen un conector de salida no estándar, por lo que puede ser necesario cortar el cable para soldar un nuevo conector.

Hay que tener cuidado si se quiere recuperar otros tipos de fuentes de alimentación, como las de las impresoras o los escáneres. Es posible que estos suministren corriente alterna. No los utilice, ya que ¡pueden destruir todos los circuitos electrónicos!

En cualquier caso, las especificaciones de la fuente de alimentación principal son las siguientes:

  • Salida de corriente continua (CC)

  • Voltaje de salida entre 14 y 20 V

  • Al menos 4 A disponibles

Si no tiene una fuente de alimentación de este tipo, queda la posibilidad de encontrar una en los anuncios clasificados o en una tienda de reciclaje. Si no, también se encuentran fuentes de alimentación de repuesto para ordenadores portátiles que pueden hacer el trabajo perfectamente....

Los amplificadores

1. La teoría

La señal DCC enviada a los raíles es una señal alternativa en pulsos: alternativa porque varía entre +18 V y -18 V, en pulsos porque la señal no tiene la apariencia de una sinusoidal; se trata de una señal cuadrada.

La señal entregada por el Arduino no puede enviarse directamente a los raíles. Los niveles eléctricos no son los adecuados y la corriente suministrada no es suficiente. Por lo tanto, es necesario cambiar los niveles eléctricos y proporcionar energía. Un amplificador se encarga de esa tarea. En la jerga del estándar DCC, se suele hablar de un booster.

No se trata solo de una simple amplificación, ya que también hay que suministrar tensiones negativas cuando no hay alimentación negativa. En la práctica, es bastante sencillo porque solo hay que intercambiar los raíles.

  • Si el Arduino entrega 5 V, se envían 18 V a la vía derecha y 0 V a la izquierda.

  • Si el Arduino entrega 0 V, se envían 0 V a la vía derecha y 18 V a la izquierda.

Gracias a esta operación, no es necesario disponer de una alimentación de -18 V para generar la señal DCC. En lugar de enviar la señal a un solo carril y dejar el otro a tierra, enviamos la señal alternativamente a un carril y luego al otro, y obtenemos el mismo resultado.

Ahora tenemos que generar esta señal. Esto se hace mediante un puente en H. Dicho circuito se muestra en el siguiente diagrama.

images/cap03_img_05.png

Aquí se supone que todo funciona a 15 V. Los niveles de la entrada son 0/15 V y el inversor lógico también funciona con este voltaje (74HCT04). Los transistores son MOSFET de potencia del tipo IRF520/IRF9520 o similares.

  • Cuando la entrada es alta (15 V), el transistor T1 se bloquea, mientras T3 conduce. Por tanto, el voltaje es de 0 V del lado izquierdo. En el otro lado del puente, a consecuencia del inversor lógico que aplica 0 V a la puerta de los transistores, T2 es conductor y T4 está bloqueado. Por lo tanto, el voltaje es de 15 V en el lado derecho.

  • Cuando la entrada pasa a nivel bajo (0 V), los transistores también cambian de estado. Tenemos entonces 15 V en el lado izquierdo y 0 V...

El teclado y la pantalla

1. Un circuito prefabricado

Para fabricar una pequeña central fácilmente transportable, un programador de CV o un comprobador de dispositivos I²C no es forzosamente necesario disponer de una gran pantalla y un teclado. Se encuentran módulos en el comercio que se enchufan en el Arduino (a los que se les llama shields) que integran directamente una pantalla LCD de 2 líneas y 16 caracteres y unas cuantas teclas de comandos. Este tipo de circuito puede hacer perfectamente el trabajo y requiere poco cableado adicional. Para encontrarlo en las tiendas en línea, escriba «lcd keypad shield».

Las teclas de control no forman realmente un teclado completo, pero permiten un mínimo de interactividad: hay un teclado direccional, un botón de selección y un botón RESET. Los cinco primeros se conectan directamente a la entrada analógica A0 mediante un puente de resistencias, de modo que la lectura del voltaje corresponde al botón pulsado. El último botón está conectado directamente a la señal RESET del microprocesador.

En esta imagen, el pequeño módulo de interfaz, que se presenta más adelante en este capítulo, ya está soldado sobre el shield.

images/03A04-P1030411.png

2. Una pequeña modificación

El botón RESET no es realmente necesario: el interruptor de encendido/apagado tiene la misma función. Además, el botón RESET está mal colocado: el usuario puede pulsarlo fácilmente por descuido. Puede ser mucho más interesante utilizarlo como un sexto botón. La operación es muy sencilla (pero se pierde la garantía del módulo, si la hubiera): solo hay que cortar dos pistas y añadir una resistencia. La imagen a continuación muestra el procedimiento que hay que realizar, pero es importante asegurarse de que el módulo es el mismo modelo que se muestra en la foto, ya que algunas variantes tienen conexiones adicionales en el lado de la entrada analógica (abajo a la derecha en la imagen superior, y abajo a la izquierda en el esquema inferior).

images/03A05-MODIF.png

Las dos pistas que hay que cortar están marcadas con una cruz. Conectan el botón RESET, por un lado, a la señal RESET en el conector de Arduino y, por el otro, al conector ISP (el pequeño conector de 2 x 3 pines). Si se quiere seguir...

El programa de control

1. Presentación

Este conjunto Arduino, pantalla y teclado, está ahora listo para ser utilizado en varios proyectos que se presentarán en los próximos capítulos de este libro:

  • Control de una locomotora

  • Programación de variables de configuración

  • Probador de bus I²C

  • Configuración de periféricos I²C

  • Configuración de cambios de agujas

  • Configuración de detectores

La asignación de entradas-salidas es la siguiente:

  • A0: teclado

  • A1: velocidad

  • A4: I²C SDA (System Data)

  • A5: I²C SCL (System Clock)

  • D4 a D9: interfaz pantalla LCD

  • D10: retroiluminación pantalla LCD

  • D11: PWM (habilita DCC)

  • D12: DIR (señal DCC)

  • D13: BRAKE (corte DCC)

El siguiente programa permite gestionar la interacción del usuario por medio de un teclado y el control de velocidad. De momento no hace mucho, pero servirá de base para todas las opciones que se añadirán más adelante.

Se puede descargar desde la página Información: at-prueba-multi.ino.

La base de este programa es la misma que la del anterior, con algunas funciones adicionales. Comienza con las nuevas definiciones y en él encontramos el número de la entrada analógica utilizada para el control de la velocidad; luego está la lista de páginas que se pueden seleccionar en función de la elección del usuario y, por último, el número de páginas accesibles desde el menú principal (esta no se toma en cuenta en el número total, por lo que solo hay tres páginas en total).

#define SPEED_ANALOG_INPUT 1 
 
#define UI_PAGE_MAIN 1 
#define UI_PAGE_PILOT_MAIN 11 
#define UI_PAGE_PILOT 12 
#define UI_PAGE_I2C_TEST 31 
 
#define UI_NUM_MENU_OPTIONS 3 

La versión completa de este programa permite acceder a muchas más páginas; no se detalla aquí, pero el principio sigue siendo el mismo.

Las siguientes definiciones corresponden a los parámetros que pueden suministrarse a las funciones encargadas de mostrar las páginas. Permiten definir el modo de visualización que debe gestionar la función.

#define UI_MODE_DRAW_ALL 1 
#define UI_MODE_SET_CURSOR 2 
#define UI_MODE_LOOP 4 
  • UI_MODE_DRAW_ALL: rediseñar todo.

  • UI_MODE_SET_CURSOR: mostrar el cursor.

  • UI_MODE_LOOP: llamar cada 100 milisegundos....