Simplificate 2.0

Si algo parece muy complicado, es que esta mal explicado.

Control de hasta 8 dígitos de 7 segmentos, con Arduino o como quieras.

with 7 comments


Dígito de 7 segmentos.

Actualización, librería para Arduino aquí.

En el proyecto Veleta con Arduino que estoy haciendo me surgió un problema que era la falta de pines para controlar 4 dígitos.

Si los contamos resulta que para 4 dígitos necesitamos 7 pines por dígito por 4 dígitos = 28 pines

¿¿¿ 28 pines del Arduino ???

¡¡¡ Que locura, me vuelvo locoooo !!!

Pero claro, el Arduino solamente tiene 13 pines digitales y 5 analogicos así que no podemos poner 4 dígitos con un solo Arduino, se me ocurrió montar dos o más Arduinos y que cada uno de ellos controlara un dígito pero hombre… eso es simple y posible y hasta fácil de hacer, pero de eficiente nada, incluso usando 2 Arduinos seria poco eficiente.

Total que buscando por ahí encontré un integrado que fabrica “Intersil” que es capaz de controlar hasta 8 dígitos, el solito.

El chip es el ICM7218DIJI, pero como siempre en este mundo se empeñan en hacer difícil lo fácil, lo juro, que hoja de datos más compleja de entender, me costo toda la tarde comprender como funcionaba, pero al final lo logre con la protoboard al estilo clase de LDM, así que después de jugar  con el chip y la protoboard logre descifrar todo el funcionamiento y es muy simple .

¿ Queréis intentar descifrarlo vosotros mismos ?

Datasheet ICM7218 ( varios modelos )

Una explicación simple, el chip tiene 8 pines de salida, que son 7 que controlaran los segmentos de los diferentes dígitos y uno más para el punto que tienen algunos dígitos, como el de la imagen superior.

  • Seg A.- Pin que se conecta al segmento A de todos los dígitos.
  • Seg B.- Pin que se conecta al segmento B de todos los dígitos.
  • Seg C.- Pin que se conecta al segmento C de todos los dígitos.
  • Continua igual hasta…
  • Seg G.- Pin que se conecta al segmento G de todos los dígitos.
  • D.P.- Pin que se conecta al punto de todos los segmentos.

Después de conectar los segmentos a todos los dígitos, podemos pensar que si el chip pone un “1” se encenderán en todos los dígitos un “1”, pero realmente no es así por que el chip tiene también 8 pines que son la alimentación del pin común del display de 7 segmentos (no creo que haya que explicar que los display de 7 segmentos tienen 7 pines de segmentos y un pin de alimentación común, ver esquema)

Por lo tanto estos pines van de la siguiente manera:

  • D1: Va conectado al pin común del dígito primero.
  • D2: Va conectado al pin común del dígito segundo.
  • D3: Va conectado al pin común del dígito tercero.
  • D4: Va conectado al pin común del dígito cuarto.
  • D5: Va conectado al pin común del dígito quinto.
  • D6: Va conectado al pin común del dígito sexto.
  • D7: Va conectado al pin común del dígito séptimo.
  • D8: Va conectado al pin común del dígito octavo.

Ya con estos pines conectados si alimentamos el chip nos puede dar algún resultado en el display, por lo menos puede mostrar algunos números aleatorios en cada dígito.

Nos quedarían por conectar los pines que usa el chip para leer los números a mostrar.

  • ID0: Bit 0 de los que conforman un numero en binario.
  • ID1: Bit 1 de los que conforman un numero en binario.
  • ID2: Bit 2 de los que conforman un numero en binario.
  • ID3: Bit 3 de los que conforman un numero en binario.
  • ID7/IN: Bit de control sobre el punto.

Con estos bit pues le damos en binario un numero, por ejemplo el numero 3 –> 0011, y una vez ajustado el numero decimal que queremos mostrar le tenemos que decir en que dígito mostrarlo, esto se hace con las entradas que ajustan la dirección del dígito, estos son los que ponen DAX.

  • DA0:Bit 0 de indicación del dígito.
  • DA1: Bit 1 de indicación del dígito.
  • DA2: Bit 2 de indicación del dígito.

Para por ejemplo grabar el numero decimal 3, que es el que hemos ajustado en los pines IDX, pues ponemos los pines estos en el correspondiente binario al dígito que queremos grabar, a ver si me explico, queremos que en el display 3 se vea el 3 pues tendremos que poner en estos pines el valor binario del 3 que es 011, así que quedaria así:

DA0 = Vcc.

DA1 = Vcc.

DA2 = GND.

Una vez que hemos ajustado el numero decimal y el numero del dígito donde mostrar este numero debemos decirle que lo grabe y lo muestre de aquí en adelante, esto se hace con los pines de control.

Estos pines de control son:

  • HEXA,CODEB,SHUTDOWN: es un pin que puede tener tres estados, si lo ponemos a Vcc le estamos indicando al integrado que los datos en binario que le estamos proporcionando los tiene que interpretar como datos en HEXADECIMAL, así que si en binario le damos un “10” en el display veremos una A, si lo dejamos sin conectar, ni a GND ni a Vcc el chip interpreta los datos binarios de IDx como CODIGO-B, pero si lo conectamos a GND, se apagara el chip completamente y quedara apagado en modo SHUTDOWN.
  • WRITE:Este pin es el que debemos usar para que el chip lea los parámetros que le tenemos ajustados en los bit anteriores, para que lea tan solo debemos poner el pin WRITE a GND, y el integrado lee todas las entradas y se ajusta según le hayamos dicho, pero aunque lo dejemos continuamente a GND no actualizara las salidas aunque despues cambiemos alguna entrada, hay que volver siempre a poner el pin a VCC y después pasarlo a GND, por que el chip lee solo en el flanco negativo, esto es cuando pasa de VCC a GND.

Bueno ¿ y cómo funciona este chip?

Esquema electrónico de conexión.

Esquema de OrCAD para descargar.


Pues es realmente muy fácil, usa el mismo método que un televisor, realmente no están todos los dígitos encendidos a la vez, el integrado lo que hace es dividir un segundo entre los 8 dígitos y cada X milésimas de segundo enciende cada uno de ellos, de forma que nunca hay dos encendidos al mismo tiempo, a la vez se encarga de mostrar en cada dígito durante el tiempo X el numero apropiado cuando cambia de dígito primero apaga todas las salidas, cambia la alimentación del dígito y así apaga el antiguo y alimenta el nuevo dígito, una vez alimentado el nuevo dígito activa las salidas pertinentes para ese dígito.

Es realmente el mismo sistema de un televisor que muestra 25 imágenes en un segundo para generar movimiento, este integrado aprovecha un defecto del ojo humano que es la persistencia en la retina del ojo de una luz brillante, yo en las pruebas no he llegado a notar ningun parpadeo en los dígitos.

Probarlo el chip este, sobre todo por que es muy fácil de controlar con un integrado tipo Arduino y gastas comparativamente muy pocos pines.

El pase de diapositivas requiere JavaScript.


Written by cuningan

14 enero, 2011 a 12:02

7 comentarios

Subscribe to comments with RSS.

  1. o bien podrias hacer el codigo del multiplexeo directo del arduino sin usar un circuito mas para ello

    Alberto Luque Chang

    23 agosto, 2012 at 3:55

  2. Solo un pequeño apunte sin importancia:
    Arduino tiene 14 E/S digitales, numeradas de la 0 a la 13, y 6 pines analógicos del A0 al A5. En total 20.
    Mejor aun, los pines analógicos de pueden utilizar de modo digital nombrando los del 14 al 19.
    Sigue sin ser suficiente para controlar los 4 displays directamente, pero conviene tenerlo en cuenta.

    Josemanu

    6 junio, 2012 at 14:31

    • ¿ Lo has leído completamente ?, para controlar los 8 dígitos uso un integrado de Intersil que multiplexa las salidas y hace por mi la tarea.

      cuningan

      6 junio, 2012 at 15:47

  3. Libreria de capture con Arduino y display?

    Jajaj si te puedo ayudar, lo que sea me pegas el toque.

    Ademas tengo que contarte cosillas del OrCAD para las proximas practicas. Ya empezamos con modificacion, y creacion de encapsulados en Layout.

    Nano

    14 enero, 2011 at 21:12

  4. Dani, sos un genio!

    Ahora… pasame ese esquema a Layout!! jajaja!

    Nano

    14 enero, 2011 at 12:16

    • Pues lo tengo que hacer, y la verdad que tengo que hacer uno peor, la semana que viene te lo enseño el capture, son 5 placas, y recuerdame que te pase una libreria de capture con el Arduino y los display.

      Cuningan

      14 enero, 2011 at 15:08


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: