Parametrización, cableado, y programación de relay kingbright sa40-19srwa con Arduino.

Hola a todos.
Esta vez os traigo algo bonito, agradable, elegante , y un proyecto que podríamos catalogar con muchos más adjetivos positivos; se trata, como bien dice el título, de proyectar a nuestro gusto caracteres mediante un display óptico.

Preparación.

  • En primer lugar requeriremos, como era de esperar, una placa Arduino UNO ( con su correspondiente cable USB).

  • También dispondremos de un display modelo kingbright sa40-19srwa.

  • Un módulo de relé compatible con Arduino y de alimentación 5V:


Nota: Tenemos que utilizar este dispositivo porque el display funciona a partir de 8V, alcanzando su luminosidad óptima en 12V, si le alimentamos únicamente con nuestra placa, se encenderá el indicador de error (la esfera de display en la parte inferior derecha).
Nota: Necesitaremos 8 contactos, en mi caso he elegido un módulo de 8 bobinas integradas, pero no tiene que ser a la fuerza así.

  • Varios cables estándar capacitados para 5V con pines y ranura del diámetro de las placas a utilizar ( el módulo de relé y la placa de control.


Nota: Deberemos disponer de varios «macho-macho» y algunos más «hembra-macho».

  • Un transformador/adaptador estándar de 9-12V de continua, en mi caso elijo uno (el de la foto) que tenía por mi taller dando vueltas desde tiempos inmemoriales.

  • Yo, por si os lo preguntáis al ver las fotografías, utilizo una fuente de alimentación de laboratorio para alimentar la placa Arduino, este aparato no es necesario teniendo el cable USB , pero, si disponemos de una, y de un adaptador para la toma de alimentación de la placa, no dependeremos de la alimentación del puerto USB de nuesto PC, además que tendremos visualización en todo momento de la intensidad aplicada a la placa, la diferencia de potencial exacta y seguridad adicionales que no dispone un puerto USB.


Nota importantísima: No confundir , bajo ningún concepto el ánodo y el cátodo del adaptador, si dudamos , no nos arriesgaremos, una conexión invertida provocará la destrucción inmediata de nuestra placa.
Nota: Si empleamos el adaptador estándar para pilas tipo C (es el más común) nos aseguraremos de que el cable de alimentación positivo vaya al conector ancho con lados rectos, mientras que el negativo irá al esférico.En mi caso utilizo el protocolo estandarizado de colores , utilizando negro para la toma de 0V y el rojo para la toma de 12V.

El display.

Como dije anteriormente el display funciona por encima del umbral de 8V, así que, queramos o no, emplearemos una fuente de continua externa para alimentarlo.

Combinaciones.

Unos de los retos principales al enfrentarme a este display fue su combinación de pineado para encender diferentes sectores, ya que su datasheet no lo especifica claramente.
Se puede deducir que los dos pines centrales de la hilera superior e inferior están cortocircuitados para así ofrecer un reparto equitativo de las cargas de entrada, conectando a estos dos el positivo, lo que quiere decir que este es el ánodo del dispositivo , a continuación, mediante un esquema básico especifico hacia qué negativo debemos cerrar el circuito y qué sector se iluminará ( el del rectángulo rojo será el iluminado, y el punto con el símbolo «-» sera el cierre del circuito).
 

Nota: Estos esquemas han sido realizados teniendo en cuenta los pines tal y como se muestran en la fotografía, osea, que mirándolos de frente, no es la forma correcta de hacerlo, pero si la más clara.

El programa.

void setup() {
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}
void loop() {
  //I//
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
delay(2000);
digitalWrite(2, LOW);
digitalWrite(5, LOW);
delay(100);
//S//
digitalWrite(3, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
delay(2000);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(2, LOW);
digitalWrite(1, LOW);
delay(100);
//O//
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
delay(2000);
digitalWrite(2,LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
delay(100);
}

El programa es muy simple, estoy seguro de que habrá una forma más práctica de hacerlo, pero mi fuerte no es la programación, por ende, lo único que he hecho, ha sido:

  1. Declaro las salidas.
  2. Activo los sectores del dispositivo adecuado , activando esas salidas declaradas en el paso anterior para formular una letra.
  3. Le pongo un «delay» con un tiempo para que permanezcan activas esa salida, y así poder ver el carácter deseado.
  4. Pongo en nivel bajo las salidas que activé en el paso 2.
  5. Repito el paso 2, 3 y 4 con otras combinaciones de sectores, siempre apagando en el paso 4 las que encendí en el paso 2; aunque vayamos a encender ese sector a continuación es más práctico, para evitar errores futuros, que cada carácter active y desactive sus salidas oportunas.

Conexionado.

El conexionado puede parecer un tanto complejo para si no se tienen mínimos conocimientos de electrónica, pero en realidad es muy muy pero que muy simple, lo único que hay que hacer es alimentar con una fuente de continua de 8-12 V la entrada de cada relé y conectando a su contacto la salida NO( normalmente abierta) el negativo para que al estimular esa bobina con los 5V del Arduino este se cierre y complete el circuito para iluminar los diferentes sectores; vallamos por parte:
 
En primer lugar habría que limpiar el taller de trabajo y no escribir en las maderas , pero eso es algo que nos saltaremos esta vez, así que conectamos en una protoboard el positivo y el negativo del transformador de 12V de tal forma que tengamos una hilera de contactos con una diferencia de potencial entre ellos deseada a nuestra disposición.

Teniendo esto conectaremos, atendiendo a la declaración del programa, las salidas de nuestra placa a las entradas de nuestro módulo de relé, así como la alimentación y la masa.

Seguidamente procederemos a conectar los cátodos de nuestro display a un contacto N.O de nuestro módulo , en los ánodos del dispositivo ( los pines centrales de ambas filas) sacaremos dos bornes o cables directamente de la parte positiva de la protoboard.
 


Por último , conectaremos desde la protoboard , un cable negativo al otro contacto normalmente abierto de las bobinas del cada relé, de tal forma, como expliqué antes, al activar una entrada del módulo, se cerrará el contacto y cerrará el circuito de 12V.
Cabe destacar, y es muy importante, que el circuito de alimentación del Arduino y del módulo de relés es completamente independiente con el del display que pasa por la parte de fuerza de cada relé, si estos dos circuitos de alimentación llegaran en algún momento a relacionarse, las consecuencias serían nefastas para nuestros componentes.
 

Con CADe-simu versión 1.0 he realizado un pequeño plano de las conexiones y la alimentación tanto de fuerza como de mando.

 

Resultado.

El resultado de este largo y tedioso testamento es escribir la palabra «ISO» en el display, a continuación pongo dos vídeos uno alimentando el Arduino con la fuente de alimentación de laboratorio, y otra alimentado con el USB de un ordenador, podemos apreciar como el resultado es casi el mismo, porque si nos fijamos bien con una alimentación dedicada ( fuente de alimentación) el cambio de relé es más rápido y efectivo, debido a una intensidad mucho mayor que no está limitada por la placa base del ordenador, si no que emplea la que el la bobina del relé demanda; y esto a la larga aumenta mucho la vida de estos componentes mecánicos.


Despedida.

Espero que este pequeño proyecto sea de vuestro agrado e insto a los que lean esta entrada que copien el código , y aplicando las combinaciones que he detallado, se animen a escribir mensajes , pues las bases ya están asentadas , sólo queda coger el código y modificar para que ponga lo que deseemos .
Un cordial saludo a todos.