Proyecto POV : Mensaje led con PIC16F628 y sensor de efecto HALL

POV PROPELLER PROJECT

Saludos amigos, en esta ocasión les traemos el post llamado : “Proyecto POV Mensaje led con PIC16F628 y sensor de efecto HALL”.

Se trata de mostrar un mensaje ESTATICO sobre un único arreglo vertical de leds que gira a una determinada velocidad por medio de un motor de corriente continua.

El principio de funcionamiento de este proyecto y de todos los otros que encuentres en internet se basan en el efecto POV o persistent of vision.

Que consiste en que la vista genera imágenes continuas a partir de imágenes estáticas siempre y cuando estas se muestren a mas de 10 fotogramas por segundo.

veamos a continuación como lo podemos lograr.

Haciendo los cálculos para el proyecto POV

Para llevar a cabo este proyecto necesitamos en primer lugar conocer, determinar o calcular a cuantas RPM o vueltas por minuto girara nuestro panel.

Este dato dependerá del tipo de motor que estemos utilizando y para nuestro proyecto hemos utilizado un motor reciclado de una lectora de CD por que son muy fáciles de conseguir.

Realizando un procedimiento previo hemos determinado que nuestro motor cargado con todo nuestro circuito incluida la pequeña batería es capaz de girar a una velocidad aproximada de 730 RPM.

Ahora con 730 RPM tendríamos que :

  • Una vuelta completa del circuito se realizara en 0.082 Segundos u 82 milisegundos.
  • En un segundo se mostrara aproximadamente 12 veces el mensaje deseado.

Ahora es necesario establecer y esto es de forma arbitraria cuantas columnas deseamos que tenga nuestro panel circular.

En nuestro caso hemos decidido que nuestro panel visual tendrá 96 columnas. Esto es debido a que cada letra ocupa 6 columnas (incluida la separación entre cada letra) y 96 entre 6 nos da un total de 16 caracteres que se podrán mostrar en nuestro panel y que consideramos suficiente.

Y ahora que ya sabemos cuanto tarda en realizarse una vuelta (82 ms) y hemos determinado que tendremos un total de 96 columnas vamos a calcular entonces cuanto debe durar encendía cada columna.

Seria 82ms dividido entre 96 = 0.000854 segundos o 854 Microsegundos.

Ese el numero clave para nuestro proyecto, cada patrón de columnas que conforma cada letra del mensaje que queramos mostrar tendrá una duración (un delay) de 854 Microsegundos.

El circuito del proyecto POV.

Para nuestro proyecto vamos a utilizar a nuestro viejo amigo el PIC16f628 corriendo con su reloj interno a 4MHZ y los siguientes componentes adicionales:

  • 9 leds rojos de 5 mm.
  • 1 pequeña batería de litio de 3.7 voltios.
  • Un jumper para encender y apagar el circuito.
  • 1 zócalo de 18 pines para nuestro pic.
  • opcional pero recomendado un sensor de efecto HALL cualquiera que funcione.
  • 1 resistencia de 1k para el sensor.
  • un pequeño imán para activar el sensor HALL.

Este seria el circuito básico de nuestro proyecto:

Circuito POV con PIC16f628

Montando este circuito seria suficiente para lograr ver el mensaje programado en nuestra circunferencia. Sin embargo tendríamos el problema de que este mensaje iniciaría de forma aleatoria desde cualquier punto de la circunferencia.

Esto seria muy incomodo en términos visuales. Para solucionar este problema recurrimos a un componente electrónico muy útil denominado sensor de efecto HALL.

Ahora incluido el sensor nuestro circuito tendría esta forma

Circuito POV con PIC16f628

¿ Como funcionara el sensor de efecto HALL en nuestro circuito ?

Muy sencillo, este sensor, al pasar cerca de un imán, enviara una señal al PIC indicándole que es en ese punto donde debe iniciar el mensaje.

De esta manera el mensaje siempre iniciara en un punto FIJO y no de forma aleatoria.

Una vez montado el circuito tenemos estos resultados:

Vista superior:

Circuito POV con PIC16f628

La vista superior con el sensor HALL INSTALADO:

Circuito POV con PIC16f628

Las conexiones:

Estructura de soporte del proyecto POV

Para que el motor que hará girar nuestro proyecto se sostenga, improvisamos una estructura muy simple con un par de listones de madera que teníamos a la mano.

En esta estructura se sostendrán:

  • la batería de 3.7 voltios que alimenta nuestro motor.
  • Un switch de encendido del motor.
  • El motor.
  • Un pequeño imán que activara el sensor.

El resultado de esta estructura es esta :

Para realizar el acoplamiento del circuito con la estructura del motor usaremos el terminal plástico del mismo motor el cual es removible:

El montaje final seria este:

POV con MICROCONTROLADOR PIC 16f628

Código C del proyecto POV

El programa de nuestro proyecto esta escrito en lenguaje C utilizando el compilador CCS C compiler:

#include <16f628POV.h>  // Define el PIC16f628
#fuses INTRC_IO       // DEFINE EL OSCILADOR INTERNO
#fuses NOMCLR         // DESABILITADO EL PIN DE RESET HABILITADO COMO INPUT
#fuses NOWDT          // DESABILITA EL AUTO RESET DEL PIC CUANDO SE CUELGA
#fuses NOPROTECT      // ENABLE O DISABLE LA LECTURA DEL CODIGO DEL PROGRAMA
#fuses NOLVP          // DESABILITA QUE EL PIN RB4 SE CONVIERTA EN TERMINAL DE PROGRAMACION.
#fuses NOBROWNOUT     // EL MAS IMPORTANTE HABILITA AL PIC PARA TRABAJAR EN BAJO VOLTAGE CON LA PILA DE 3.7 VOLTIOS FUNCIONA GENIAL.
#use delay (clock=4000000,INTERNAL)     // DEFINE EL RELOJ DEL OSCILADOR INTERNO


// definimos las variables del programa
char msg [12]= "TECNOCIENCIA";
char pf[72];
int jota=0;
int id=0;
int k;
INT FLANCO;

// incluimos la libreria que contiene los patrones de columnas de todos los caracteres 
#include "letras.h"


// programa principal
void main (void)                        // DECLARACION DEL PROGRAMA PRINCIPAL
{
set_tris_b(0x00);                       // SE INICIALIZA EL PUERTO B EN VALOR BAKO 0
SET_TRIS_A(0B00100000);
output_b(0x00);                         // SE DECLARA TODO EL PUERTO B COMO SALIDA
output_a(0x00); 

for (k=0;k<12;k++) // 6 letras de 6 columnas hacen 36 columnas de las 40 que tiene nuestro circulo
{
swatch(msg[k]);
}

while (1)                                     // RUTINA MIENTRAS
{
IF (RA5==0)                // CUANDO EL SENSOR HALL PASE POR EL IMAN EN PIN RA5 SE PONE A 0
{FLANCO=1;                 // VARIABLE QUE INICIA EL PROGRAMA E IGNORA CUANDO CUANDO RA5 VUELVE A 1
IF (FLANCO==1)
{
// UNA VUELTA CON ESTE CD MOTOR DURA 82 MS, Y NUESTRA CIRCUNFERENCIA HEMOS DEFINIDO QUE SERA DE 96 COLUMNAS.
// ENTONCES CADA PATRON COLUMNA QUE SE MUESTRE DURARA:  82 MS / 96 COL = "854 US"
// PARA CALCULAR EL DELAY RESIDUAL APLICAR : ( 82 MS - (NRO DE PATRONES DE COLUMNAS DEL MENSAJE X 854 US)) RECUERDA CNVERTIR LAS UNIDADES.

delay_ms(15);
for (id=0;id<72;id++)                              
{
// MUESTRA PATRON DE COLUMNAS
portb=pf[id];
// LEDS MARCO ENCENDIDOS
ra1=1;
ra2=1;
// DELAY DE PATRON DE COLUMNAS
DELAY_US(854);                 // EL GROSOR DE DURACION DE CADA COLUMNA QUE HEMOS CALCULADO PARA NUESTRO CIRCUITO
}
// APAGAR PUERTO B LUEGO DE MOSTRADOS TODOS LOS PATRONES DE COLUMNAS
portb=0b00000000;
// DELAY RESIDUAL MANTIENE APAGADO EL RESTO DE LA CIRCUNFERENCIA
delay_ms(5);
FLANCO=0;                 // TERMINA EL PROGRAMA HASTA QUE EL SENSOR HALL VUELVE A ACTIVARSE PONIENDO A RA5 A 0
}
}
}
}

La librería letras.h contiene la rutina que ordena en un buffer los patrones de columnas que corresponden a cada letra del mensaje almacenado en el arreglo msg.

Esta librería se incluirá en el link de descarga al final del POST.

El resultado de nuestro proyecto una vez grabado el programa sera este:

POV persisten of vision con PIC16f628

A continuación el link de descarga de los archivos del proyecto

DESCARGA LOS ARCHIVOS DEL PROYECTO.

Eso ha sido todo amigos en este post “Proyecto POV : Mensaje led con PIC16F628 y sensor de efecto HALL ” esperamos que esta info en algún momento te se a de utilidad.

Recuerda que una manera de ayudarnos o agradecer nuestro trabajo es visitando los anuncios que aparecen a lo largo del post. Gracias!
Recuerda tambien que puedes visitar todo el contenido de nuestro blog en :

BLOG DE TECNOCIENCIA.

Tambien puedes visitar nuestro canal de youtube en :

CANAL DE YOUTUBE TECNOCIENCIA

Agregue un comentario

Su dirección de correo no se hará público.