Reloj POV

Como proyecto final de mis primeros estudios técnicos realicé un reloj en el aire gracias a la persistencia de la visión (Persistance Of Vision)

Mediante un medio móvil se generan ráfagas que configuran un dibujo, si el movimiento de este medio es lo suficientemente rápido, para nuestra visión parece estático.

Se basaba en un Pic 16f84. Un ventilador para el movimiento. Dos bobinas, una en el rotor(sin aspas) y otro fijo en el chasis del ventilador. Un sensor de efecto hall para detectar paso por vuelta. Comunicación mediante dos canales de IR(rf en primeras versiones) para la puesta en hora y 8 leds. Hoy en dia solo pondría como medio un motor, un par de imanes y una sola bobina en la parte móvil. Incluso quizás jugando con bobinas y el propio motor sería suficiente.

Reloj digital 1

El cristal de cuarzo teniendo en cuenta las instrucciones necesarias para un segundo exacto era de 4.096Mhz.

A principio de curso se nos pidió una simulación de nuestro proyecto. Dado que el efecto del movimiento mecánico no se podía simular me presenté directamente con un prototipo funcional.

Montaje del medio. Basado en la inducción electromagnética. Consiste en la producción de corrientes eléctricas por campos magnéticos variables en el tiempo. El descubrimiento por Faraday y Henry de este fenómeno introdujo una cierta simetría en el mundo del electromagnetismo. Maxwell consiguió reunir en una sola teoría los conocimientos básicos sobre la electricidad y el magnetismo. Su teoría electromagnética predijo, antes de ser observadas experimentalmente, la existencia de ondas electromagnéticas. Hertz comprobó su existencia e inició para la humanidad la era de las telecomunicaciones.

BF2-A002BF2-A002Rotor del ventilador

BF2-A002

BF2-A002 PIC_0117a

Reloj digital 2

A continuación se muestra el software desarrollado y funcional de este proyecto de reloj giratorio. Realizado en c, y compilado con Picclite. Se ha grabado con el programa ICPROG y un programador TE-20 SC

/*******************************************************************/

/* Proyecto Reloj Giratorio */

/* -Prueba de visualización 2.0 */

/*******************************************************************/

#include <pic1684.h>

static const unsigned int numeros[12][5]={

{0x3E,0x41,0x41,0x41,0x3E},//0

{0x00,0x21,0x7F,0x01,0x00},//1

{0x21,0x43,0x45,0x49,0x31},//2

{0x42,0x41,0x51,0x69,0x46},//3

{0x0C,0x14,0x24,0x7F,0x04},//4

{0x72,0x51,0x51,0x51,0x4E},//5

{0x1E,0x29,0x49,0x49,0x06},//6

{0x40,0x47,0x48,0x50,0x60},//7

{0x36,0x49,0x49,0x49,0x36},//8

{0x30,0x49,0x49,0x4A,0x3C},//9

{0x00,0x00,0x36,0x00,0x00},//:

{0x00,0x00,0x00,0x00,0x00}};//

static bit sensorpin @((unsigned)&PORTA*8+3);

//Asignamos porta ra 3 como sensorpin.

static bit sensorira @((unsigned)&PORTA*8+1);

//Asignamos Ra.1 i Ra.2 a sensorrfa i b.

static bit sensorirb @((unsigned)&PORTA*8+2);

unsigned char H=0,HD,HN,M=0,MN,MD,S=0,SD,c=0,a=0;

//Definicion de las variables

void delay(int n);//Funcion de delay de apagado

void init(void);//Funcion inicializacion de puertos

void visualizacion(void);//Funcion para visualizar

void sensor(void);// Funcion espera de señal del sensor

void sensorir(void);//Funcion para Modulo rf puesta en hora

interrupt void timer0(void)//Interrupcion por desbordamiento del timer0

{

TMR0=56;//cargamos el valor de 56 en el tmr0 (200 ciclos)

T0IF=0;//necesario para tmr0

a++;//contador para completar un segundo

if(a==20){ S++; a=0;}//incrementa un segundo cada 20 interrupciones

}

void delay(int n)

{ for(;n>0;n–) {}//bucle de espera

}

void init(void)//Funcion inicializacion de puertos

{ TRISA=1; //definimos PORTA.0 entrada resto, entradas

TRISB=0;//definimos PORTB como salidas

GIE=1;//Activacion de las interrupciones globales

T0IE=1;//Activacion de la interrupcion por desbordamiento tmr0

T0IF=0;//Necesario para el funcionamiento del tmr0

OPTION=0x07;//Configuracion del preescaler

}

void visualizacion(void)//Funcion de visualizar

{ unsigned char i;

if(S==60)//Comprobamos si hemos llegado a 60segundos, para

{ S=0;//resetear a 0 s y

M++;//aumentar en 1 los minutos

}

if(M>=60)

{ M=0;

H++;

}

if(H==24)

{

H=0;

}

HD=(H%10);//Preparamos los digitos a partir del numero de hora y minutos.

HN=(H/10);

MD=(M%10);

MN=(M/10);

for(i=0;i<5;i++)

{ PORTB =(numeros[HN][i]);//Se cargan los 5 valores de 8 bits

delay(50);} //que componen el digito HN

PORTB =0x00;

delay(50);

for(i=0;i<5;i++)

{ PORTB =(numeros[HD][i]);

delay(50);}

PORTB=0x00;

delay(50);

for(i=0;i<5;i++)

{ PORTB =(numeros[10][i]);

delay(50);}

PORTB=0x00;

delay(50);

for(i=0;i<5;i++)

{ PORTB =(numeros[MN][i]);

delay(50);}

PORTB=0x00;

delay(50);

for(i=0;i<5;i++)

{ PORTB =(numeros[MD][i]);

delay(50);}

PORTB=0x00;

}

void sensorir(void)//Comprobacion de señales IR

{

if (sensorira==0) //Comprobación del canal 1 del modulo receptor

{ c++;//Contador para incrementar en dos velocidades.

if(c>5)

{ M=M+5;//Incrementa los min. en 5 si c es mayor que 5

}

else

{ M++;//Incrementa los min. en 1 si c es <= de 5

}

}

else c=0;

if (sensorirb==0)//Comprobación del canal 2 del modulo receptor

{ c++;//Contador para incrementar en dos velocidades

if(c>5)

{ M=M-5;//Decrementa en 5 si c es mayor que 5

}

else

{ M–;//Decrementa de 1 en 1 si c es <= a 5

}

}

}

void sensor(void)// Funcion espera de señal del sensor

{ do

{

}while(sensorpin==1);//Espera mientras el sensor no de un 0 logico

}

void main(void)//Funcion principal

{ init();//inicia puertos, timer 0 etc

while (1)//bucle infinito

{ sensorir();//Funcion para puesta en hora mediante mando a distancia

sensor();//Funcion para saber el paso de cada vuelta

visualizacion();//Funcion para visualizar H, M, S

}

}

El segundo prototipo se planteo mejorando muchos defectos de la primera versión. Mismo concepto más equilibrado.

a aa aaa

De este reloj se realizó una producción en pcb de 5 unidades.

Anuncios
Categorías:Proyectos personales
  1. Aún no hay comentarios.
  1. No trackbacks yet.

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 )

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 )

Google+ photo

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

Conectando a %s

A %d blogueros les gusta esto: