TUTORIAL: Programación de Microcontroladores – Parte 10

TUTORIAL: Programación de Microcontroladores – Parte 10

0 Flares Twitter 0 Facebook 0 Google+ 0 Pin It Share 0 Email -- 0 Flares ×

Tal como habíamos prometido, en esta entrega de nuestro tutorial de programación de microcontroladores desarrollaremos paso a paso el circuito electrónico del cartel. Este diseño podrá tomarse como base para un cartel mayor o con otras características.

Nuestro cartel tiene fines meramente educativos, y la intención es gastar poco dinero para construirlo, así que intentaremos realizarlo en base a un microcontrolador pequeño. Si el lector necesita un cartel de mayor tamaño o con capacidad para almacenar textos o imágenes más extensos, deberá utilizar algún micro con mayor capacidad y velocidad. El tamaño de la memoria EEPROM externa es bastante grande, pero también puede ser ampliado con mucha facilidad.

Dividiremos el esquema electrónico del cartel en dos partes: en primer lugar veremos toda la lógica de control, y en segundo, la “pantalla” con el registro de desplazamiento. A la hora de llevarlo a la práctica puede incluso hacer dos circuitos impresos por separado. Esto le permitirá al lector experimentar con otros controladores sin necesidad de volver a montar la placa de los displays.

El circuito controlador:
Este es el cerebro de nuestro cartel. Sera el encargado de gestionar el encendido de cada LED mediante órdenes enviadas a las columnas (mediante el registro de desplazamiento que mencionamos en la nota anterior) y a las filas.

Como una fila tendrá 80 LEDs, que eventualmente pueden estar todos encendidos, no podemos conectarlas directamente a pines de E/S del PIC, por que la corriente que demandarían haría que el puerto del PIC se destruya. Para evitar esto, utilizaremos en medio un transistor capaz de manejar esa corriente.

Analicemos el circuito. El centro de todo es el microcontrolador 16F628A, que tiene su pin de RESET conectado a un pulsador y una resistencia de 10K. Este pulsador permite reiniciar el cartel cuando lo necesitemos. También se ha implementado un circuito de reloj externo, basado en un cristal de 4 MHz y dos condensadores de 22 nanofaradios. Esto le permite al PIC ejecutar un millón de instrucciones por segundo, más que suficientes para este proyecto.

Los pines 1 y 2, correspondientes a los bits A2 y A3 del micro, se han utilizado para acceder a una memoria EEPROM del tipo 24C256. Esta memoria es de acceso serial (por eso necesitamos solo dos pines), mediante el protocolo I2C, y tiene capacidad para almacenar 32768 Bytes. Si nuestro programa hace uso de ella, podemos guardar allí 32768 caracteres (con el display en modo texto) o más de 400 pantallas en modo gráfico. Si resultara insuficiente, puede ponerse una memoria de mayor capacidad, siempre consultando la hoja de datos de la misma para asegurarnos su compatibilidad con la del ejemplo.

Todo el puerto B del PIC está dedicado a controlar las filas del cartel. Como ya habrán notado, tenemos 8 salidas para filas, y nuestro cartel tiene solo 7 filas. Efectivamente, la fila 8 no se utilizara si nuestra “pantalla” está construida con módulos LED de 7×5, pero el circuito de control está preparado para el uso (en caso de que alguien los prefiera) de módulos de 8×8 o bien para crear un cartel de 8 filas mediante el uso de LEDs sueltos. Quienes utilicen módulos de 7×9 pueden ahorrarse el transistor de la fila 8.

Por último, los pines 17 y 18, correspondientes a los bits A0 y A1 del micro se encargan de la gestión del registro de desplazamiento. El programa deberá generar los pulsos de reloj necesarios por el pin 18, y “meter” los datos en el registro por el pin 17.

No hemos incluido una fuente de alimentación. Cualquier fuente comercial que sea capaz de entregar 5V y 2A será suficiente. Esos 5V deben estar bien regulados, y por supuesto, el software deberá estar escrito correctamente, es decir, no encender varias filas al mismo tiempo, ya que el consumo de todo el cartel encendido sería de unos 80 x 70 x 20mA = 11.2 A, destruyendo la fuente.

TUTORIAL: Programación de Microcontroladores – Parte 10

El display
Esta es la parte del proyecto que todo el mundo va a mirar, así que debemos ser prolijos al montarlo. Como puede verse en el esquema eléctrico, hemos utilizado un total de 10 circuitos integrados 74HC164N para construir el registro de desplazamiento de 80 bits de largo, uno para cada columna. Si alguien quiere hacer un cartel más largo o más corto, deberá poner más o menos integrados. Cada uno maneja 8 columnas.

Si miramos el esquema del display, veremos que en la parte superior se muestra como está conectado cada LED dentro de la matriz de 5×7. Esto es importante tenerlo en cuenta a la hora de comprar los módulos, ya que hay una gran cantidad de modelos, y la mitad de ellos tienen los LEDs conectados en el sentido inverso.

Cada display también difiere en la función de cada terminal, por lo que se debe estar a atento a la hoja de datos para diseñar el circuito impreso apropiado, y conectarlos como corresponda.

En el dibujo del circuito no hemos representado los 16 módulos ni los 10 circuitos integrados, por una cuestión de espacio, pero es fácil darse cuenta de qué forma se conectan las filas y columnas de los demás displays a cada 74HC164N.

No utilizaremos el pin de RESET de los 74HC164N. En lugar de ser controlados desde el microcontrolador, cada RESET está puesto a +5V, de forma que el integrado funcione continuamente. Si por algún motivo se desea borrar la pantalla, basta con enviar 80 “0”s al registro de desplazamiento y listo. El tiempo empleado para esa tarea es despreciable, ya que el microcontrolador estará ejecutando 1 millón de instrucciones por segundo. El utilizar una línea de control menos nos permitirá tener un PCB ligeramente más sencillo.

Cada salida de los 74HC164N, como dijimos, se conecta a una columna de la serie de displays . Esta conexión se efectúa mediante un resistor de 1/8 de watt, que en el esquema se ha dibujado con un valor de 330 ohm. Ese fue el valor adecuado para el tipo de módulos que conseguimos para hacer el prototipo, pero su valor variara de un modulo a otro. Se puede montar solo un display con resistores de 330 ohms, y ver como es el brillo de los LEDs. Si es escaso, se puede bajar el valor a 220 o 100 ohms. Con eso debería ser suficiente

En la próxima entrega, la última de este proyecto, veremos cómo utilizar el BASIC del PIC SIMULATOR IDE para programar el cartel.


  • NICK DEL USUARIO REGISTRADO

    Se echaban de menos los tutoriales de microcontroladores, gracias!

  • Leon

    Muy bueno el tutorial, realmente es de gran ayuda, y está muy bien explicado. Sería muy util, si repiten en algún momento un turorial similar, pero con leds RGB. Felicitaciones, y muchas gracias por este gran aporte.

  • Leon

    Tienen idea cuando sale la tercer parte de este tutorial?

  • Oscar Núñez

    La verdad es que entro casi todos los dias a esta pagina buscando el enlace que me lleve a la otra parte del tutorial, la parte del programa, de hecho es tan excelente que estoy ansioso por la siguiente parte, en un tutorial parecido en otra pagina vi un mensaje fijo, lo cree y eso obtuve, pero me gustaría saber como crear el codigo para poner ese mensaje a desplazarse por toda la pantalla de izquierda a derecha o viceversa, por cierto, con mucho gusto pondré en mi pagina su enlace, muchas gracias, siguan así.

    • Luis M

      Oscar he estado viendo vuestros trabajos y necesitamos dos display con ese tamaño al que le programemos 3 mensajes , PASE – ADIOS – ERROR y metiante un relej lepandemos pulso de forma que segun se progame estos saldra un mensaje u otro.

      Es pocible realizarnos este trabajo ?¿ precio y fecha de entrega….

      solinfor@solinfor.net

      Luis M.

  • David

    Exelente tutorial, ya tube experiencia con una pantalla que diseñe y fabrique, pero con 7 filas y 16 columnas, con el 16f84. estoy animado con su proyecto y lo voy armar a ver que tal.

  • FranDeeJay

    Hola a todos, me parecio interezante el diagrama pero lo que estoy buscando y no encuentro es un tacometro con pic 16F84 si alguien tiene un circuito y programa o un enlace desde ya muchas gracias.

  • voltio

    Hola, muy bueno, esta ya la ultima parte ?? gracias

  • voltio

    EXELENTE, PARA CUANDO EL CAPITULO CON EL SOFT ?? SALUDOS

  • NICK DEL USUARIO REGISTRADO

    Un circuito practico con el 16F84

  • julio ferreyra

    me interesa este articulo lo quisiera llevar ha cabo pero me falta algunos concimientos pero me siento que puedo realizarlo quisiera que me dieran mas explicaciones

  • xtreamx_x

    Tecnico Electronico

  • OptimusTronic

    interesante, toda la informacion es muy util. Se les agradece a los miembros de NeoTeo

  • edgarnoel

    hola, he entrado a esta pagina y me encontrado con esto y esta fantastico, actualmente estoy realizando una de estas pantallas pero con un AVR mi idea era muy parecida ha esta, pero solo que yo quiero grabarle estos mensajes con un Software hecho en VB, es decir poner mi mensajes en un texbox y estos enviarseloas por RS232, y todavia se podria hacer la cosa mas compleja como mostrar imagenes, y por eso ahora surge mi duda, existe algun tipo de circuito integrado que decodifique esto como si fueran pixeles, es decir en lugar del 74ls164, o que tengo que hacer un Software muy complejo para poder mostrar imagenes o es que las pantallas esas que venden que pueden hacer esto tienen ese tipo Soft o utilizan algun tipo de Circuito integrado comercial para lograr mostrar estas imagenes, si pudieras contestar algunas de mis dudas seria genial, de antemano te lo agradesco.

    • Ariel Palazzesi

      Hola Edgarnoel!
      Hasta donde yo sé, la unica forma es multiplexando como se explica en el articulo. No conozco integrados que manejen pixel por pixel. Me parece que vas a tener que resolverlo por software nomas! :)

      Saludos!

  • tony granados

    Saludos

  • torrealva

    esta muy interesante tus tutorias, pero quiero la 11, 12, 13, 14 y todas entregas de Microcontroladores

  • luis

    discupa te tengo una consulta yo ahora estoy haciendo una matris con el 16f84a ,y no tengo idea como funciona el regustro de desplazamiento o la memoria me podrias ayudar por favor , gracias