DISPLAY 7 SEGMENTOS PARA MONTAJE EN PANEL CON ARDUINO INCORPORADO

Error message

  • Notice: Undefined index: taxonomy_term in similarterms_taxonomy_node_get_terms() (line 518 of /home/venydivi/public_html/automatizanos/sites/all/modules/similarterms/similarterms.module).
  • Notice: Undefined offset: 0 in similarterms_list() (line 221 of /home/venydivi/public_html/automatizanos/sites/all/modules/similarterms/similarterms.module).
  • Notice: Undefined offset: 1 in similarterms_list() (line 222 of /home/venydivi/public_html/automatizanos/sites/all/modules/similarterms/similarterms.module).
administrador's picture
Display 7 segmentos para montaje en panel con arduino incorporado

DISPLAY DE 7 SEGMENTOS PARA MONTAJE EN PANEL

En mas de una oportunidad para la culminacion de un proyecto que involucra uno o mas displays de 7 segmentos, este requiere ser montado en algun panel o caja.

El principal problema para lograr un acabado elegante es que el hueco por donde saldra el display debe estar cortado a la perfeccion con una tolerancia de unas cuantas decimas de milimetro, lo cual solo se logra mediante corte laser o CNC, los cuales no siempre estan a la mano.

* This article is also available in English clicking here

Los medidores baratos para panel han resuelto esto usando una caja de dimensiones ligeramente mas grandes a 1/32 DIN. Dichas cajas poseen dos cualidades: se requiere una perforacion rectangular la cual puede tener ciertas imperfecciones y puede ser realizada mediante herramientas caseras como sierra y taladro, pues estas cajas poseen una especie de bisel que ocultara las imperfecciones una vez instalada. La otra ventaja es que no se requieren perforaciones ni tornillos adicionales para sujetarla.

Agujero rectangular con bordes irregulares cubiertos por el display de montaje en panel

VISUALIZACION INTELIGENTE CON ARDUINO INCORPORADO

Existen en el mercado 2 tipos de dispositivos diferentes: Medidores especifico para montaje en panel ( voltaje, corriente, rpm, etc) y visualizadores "inteligentes", generalmente mediante protocolos seriales como I2C, SPI o registros de desplazamiento, incluso algunos con microcontrolador ATmega incluido y compatible con la plataforma de Arduino, sin embargo estos ultimos usualmente en forma de circuito impreso y no son faciles de montar de manera elegante sin requerir de muchos elementos ni recursos.

Este proyecto nace con la idea de reunir algunas de las mejores caracteristicas de todos los anteriormente planteados:

* Bajo costo
* Montaje en panel con buen aspecto final.
* Requiere herramientas simples para su instalacion.
* Requiere solo 2 pines I/O para su comunicacion.
* Inteligencia incorporada para liberarle carga al procesador principal.
* Programable mediante plataforma Arduino.
* Puede ser tanto como esclavo serial o como controlador independiente mediante algunos I/O disponibles.
* Hardware y Software de codigo abierto (esquematicos y programa descargable)
* Se puede construir construir con componentes comunes (sin usar componentes de montaje superficial)
* Se puede construir en una tarjeta de circuito impreso de una sola capa

CONSTRUCCION DE PROTOTIPO

La base para el inicio del proyecto fue una carcasa de un medidor de panel de muy bajo costo y que generalmente son faciles de conseguir en diversos mercados locales. Puesto que la idea era utilizar componentes componentes "comunes" (los que se usan para montaje en protoboard), no hay demasiado espacio para desperdiciar dentro de la carcasa, por dicha razon se opto por construir una tarjeta similar al Arduino Pro Mini( ATmega168 o ATmega328 ), que al usar el oscilador interno de 8 MHz, los unicos componente externos que se requieren son una resistencia y un condensador al pin del reset.

Para grabar el bootloader de Arduino al microcontrolador, se requerira un programador de chips AVR, tambien puede usarse algunas tarjetas de arduino como programador ISP con el sketch respectivo. para habilitar los fusibles que configuraran el oscilador interno de 8 MHz, probablemente sera necesario usar inicialmente algun circuito oscilador, ya sea mediante cristal de cuarzo y dos condensadores o un generador de reloj, segun como esten configurados inicialmente los fusibles relacionados con el reloj.El bootloader programado fue el ATmegaBOOT_168_pro_8MHz.hex, en la seccion de descarga puede encontrarse el archivo que se debera agregar a boards.txt para poder efectuar dicha maniobra. Finalmente para compilar programas para este dispositivo se usa la configuracion para el Arduino Pro Mini a 8MHz.

El display utilizado es un display de 7 segmentos a 3 digitos multiplexado de dimensiones tales que pueda ser ubicado dentro de la carcasa (puede ser anodo comun o catodo comun) y una resistencia de 330 ohm para cada uno de los segmentos (8 en total contando el punto decimal). Se utilizo una tarjeta de circuito impreso universal cortada de tamaño tal que quepa dentro de la carcasa, se cortaron 2 pestañas laterales que son las encargadas de fijarla y que no se muevan. Tambien se presenta en la zona de descargas un ejemplo de una tarjeta de circuito impreso a una sola cara.

Puesto que el espacio en esta tarjeta es un bien muy preciado, solo fue posible dejar disponibles para el usuario 5 pines de I/O, de los cuales 2 de ellos son la UART (TX/RX), 2 son la interfaz SPI (SDA/SCL) y el pin analogo A3 (que tambien puede ser configurado como pin digital).

El firmware de prueba se basa en la libreria SevenSeg para realizar las tareas de visualizacion, asi como mapeo e interpretacion de caracteres.

Montaje de prototipo del display inteligente usando componentes comunes sobre tarjeta de circuito impreso universal

ESCLAVO SERIAL

Para minimizar el uso de pines de comunicacion con el procesador principal, se utiliza comunicacion serial mediante dos hilos,en este caso I2C, por requerir unicamente dos señales (SDA/SCL) demas por que se pueden conectar multiples dispositivos I2C usando el mismo par de alambres, ademas este protocolo esta disponible mayoria de microcontroladores. En el firmware experimental desarrollado se cada byte enviado por I2C corresponde a un caracter ASCII, por lo tanto no se requiere de una libreria especializada para mostrar caracteres, basicamente es un "terminal serial"

El primer byte transmitido corresponde al "comando", de los cuales se tienen los siguientes:

* 0x27 mostrar cadena de caracteres
* 0x25 cambiar la direccion I2C almacenada en EEPROM
* 0x26 frecuencia de parpadeo del mensaje

Dado que los pines de la UART (TX/RX) estan disponibles, tambien podria implementarse algun tipo de protocolo serial, como
por ejemplo Modbus RTU, agregando chip de interfaz RS-232 o RS-485 segun sea necesario.

Display inteligente usado como esclavo serial I2C para visualizar caracteres

CONTROLADOR INDEPENDIENTE

Debido a que el circuito es basicamente una derivacion de un Arduino Pro Mini, este puede ser programado para cualquier otro proposito usando una interfaz USB a TTL. Con los 5 pines de I/O disponibles (los demas son usados por los displays de 7 segmentos) alguno de los proyectos que se pueden realizar son:

* Voltimetro o Amperimetro, agregando una resistencia de precision y/o divisor de voltaje.
* Medidor de revoluciones o RPM. Usando un pin digital como entrada de conteo
* Visualizador para sensores digitales como I2C o 1-wire
* Indicador universal para instrumentacion industrial, usando señales 4-20 mA o 0-10V
* Analizador de protocolos seriales basados en UART, como por ejemplo Modbus, Mewtocol, DF1, etc.

Display inteligente usado como controlador de temperatura independiente con un sensor ds18b20

CONCLUSIONES Y PRUEBAS

* Si bien el circuito prototipo requiere paciencia para ser montado, este puede ser hechos con componentes facilmente asequibles, como placa de circuito impreso universal
y componentes de montaje de los usados en protoboard (sin usar elementos de montaje superficial)

* El orificio rectangular puede ser realizado con agujeros de taladro y un poco de sierra manual, no es tan importante que queden muy parejos ni precisos pues el bisel del display tapara bastante muchas de las imperfecciones

* No se requieren tornillos para montar ni desmontar el display, este entra y sale haciendo un poco de presion.

* Es posible que si se utiliza un maestro I2C diferente a un Arduino, se requiera escribir el bit de R/W en la direccion I2C, por lo tanto esta puede ser diferente a la programada en EEPROM.

* Es posible realizar el circuito en una tarjeta de circuito impreso de una sola cara, claro que esta requeriria soldar algunos puentes de conexion.

* Al estar el display multiplexado, el consumo de energia es relativamente bajo (alrededor de 25 mA), por lo que se puede alimentar con baterias para tener un dispositivo portatil.

DOCUMENTACION

(Ver en la parte inferior - Archivos adjuntos)

* Articulo en PDF.
* Diagrama esquematico en PDF.
* Circuito impreso en PDF.
* Archivos fuentes de esquematico e impreso para KICAD.
* Programa visualizador esclavo I2C para Arduino.
* Programa ejemplo visualizador y control autonomo con sensor ds18b20 par Arduino.
* Parametros de Board para Arduino para programacion del bootloader

VIDEO

Video demostrativo del ensamblaje de los distintos componentes, ademas de las pruebas realizadas