1

DCC++: Sensores

 

Arduino Uno con Motor Shield para central DCC++

Buenas a todos!!! Otra de las opciones que incorpora la central DCC++ es la opción de conectar sensores que informen de ciertos eventos ocurridos en la maqueta.

 

Los pines que se pueden usar en la placa UNO son:

  • Pin digital 2.
  • Pin digital 4.
  • Pin digital 6.
  • Pin digital 7.
  • Pin Analógico A2.
  • Pin Analógico A3.
  • Pin Analógico A4.
  • Pin Analógico A5.

En la placa Arduino Mega 2560 disponemos de bastantes más:

  • Pin digital 5.
  • Pin digital 6.
  • Pin digital 7.
  • Pin Analógico A2.
  • Pin Analógico A3.
  • Pin Analógico A4.
  • Pin Analógico A5.

Estos son los pines que “sobran” en la Shield Ardumoto, los demás pines sobrantes de la placa se pueden usar para añadir sensores solo en digital ya tenemos posibilidad de añadir hasta 31 sensores extras.

Tipos de sensores:

Existen multitud de sensores para arduino, y casi en general podemos hacer un sensor con casi cualquier cosa que se nos ocurra, siempre que respetemos ciertos aspectos. Para no liarnos estos son los detectores más comunes que se utilizan con Arduino y que podemos añadir sin ningún problema a nuestra maqueta. Ahora mismo no voy a detallar como funcionan uno a uno, aunque posiblemente haré algo con cada uno de ellos.

Estos son los sensores más comunes:

El único requerimiento es que cuando el sensor este “activado” el pin de Arduino tiene que estar forzosamente en LOW (ejem. a GND)y cuando este desactivado tiene que estar en HIGH (ejem. 5V) o se le permitirá un float HIGH si se esta usando resistencias pull-up internas especificadas. Es decir tiene una lógica inversa, 1 = LOW y 0 = HIGH

Para garantizar los niveles de tensión adecuados, parte de la circuitería del sensor DEBE estar conectada a la misma tierra que la utilizada por el Arduino. Es decir las GND del sensor y la de Arduino tienen que estar compartidas. por ejemplo si tenemos muchos sensores, al final tendremos que poner una fuente de alimentación solo para los sensores, para que todo funcione correctamente, GND de Arduino tiene que estar conectado a GND de esa fuente de alimentación.

 

Identificando sensores:

Como vimos anteriormente en DCC++ Accesorios y desvíos para poder usar los desvíos desde la memoria EEPROM necesitábamos primero identificarlos. Con los sensores ocurre lo mismo, tenemos que tener memorizada su identificación en la central para que funcionen correctamente.

El comando para el uso de sensores es <S>, y esta es su variante para almacenar un sensor en la memoria:

< S ID PIN PULLUP >

  • ID: Sera única para cada sensor.
  • PIN: Pin donde este conectado el sensor.
  • PULLUP: Pondremos un 1 para usar la resistencia interna del pin o un 0 en el caso de no usarla.

Tomando la placa MEGA como referencia vamos a asociar la ID número 1 en el PIN 22 usando la resistencia interna PULLUP:

<S 1 22 1>

Ahora la ID 2 con el PIN 23 sin resistencia PULLUP:

<S 2 23 0>

En ambos casos en el monitor serial nos tiene que devolver <0> si es correcto y <X> si hubiera algún problema como que el número ID este fuera de rango.

Igual que con los desvíos una vez tengamos definidos los sensores, los almacenaremos en la memoria EEPROM con el comando <E>.

 

Eliminar la ID de un sensor:

A diferencia de los desvíos con los sensores SI nos permite eliminarlos si tener que sobreescribir el dato ( que también se puede)

Para eliminar una ID de la memoria usaremos el comando:

<S ID>

Si el borrado es efectuado con éxito, el monitor serial nos tiene que devolver <0> si es correcto y <X> si hubiera algún problema. De igual manera tendremos que guardar las operaciones realizadas con el comando <E>.

 

Lista de sensores:

Una vez almacenados los sensores podemos consultar la lista de los sensores definidos con el comando <S>.  La salida en el monitor serial para los sensores definidos anteriormente sería la siguiente:

<Q 1 22 1><Q 2 23 0><ETC>

 

¿Como funciona el sensor?

Ya tenemos definido el sensor en la ID que elegida, ¿que pasa ahora?

Los sensores que ya están definidos se verifican en el bucle LOOP desde el encendido de la central DCC++ de una manera secuencial registrando el cambio de estado de cada pin definido.

Mensajes que recibimos en el monitor serial cuando se activa un sensor:

  • <Q ID>  Cuando el sensor para de un estado HIGH a uno LOW
  • <q ID>  Cuando el sensor pasa de un estado LOW a uno HIGH

Con estos datos ya podemos saber en cada momento que es lo que esta pasando en nuestra maqueta ya que podemos usar la salida en programas como Rocrail

Bueno y hasta aquí lo que puedo explicar de sensores hasta ahora, quiero preparar un vídeo donde se vea más claramente su uso.

Por supuesto la información completa al manual, la tenéis en DCC++ Comandos y su estructura y la entrada dedicada al uso de accesorios y desvíos.

(Visitado 28 veces, 1 visitas hoy)

Un comentario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *