TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Pedro Pan en 19 de Junio de 2008, 14:32:57
-
Bueno en estos dias que he tenido un poco de tiempo libre, me puse a trabajar un poco en mi reloj hasta este tiempo pude terminarlo ya que desde hace dias habia comprado los componentes.
Bueno tenia ganas de hacerme este reloj para mi sala asi tengo todo listo solo me hace falta hacer la base donde colocarlo, desde que pense este proyecto, trate de buscar todo lo necesario para hacerlo lo mas pequeño posible (ademas de economico) asi que la fuente de alimentacion la saque de mi impresora vieja la BCJ 2100 ya que tenia casi lo necesario los 5V y 24V pero lo mejor de todo el tamaño y que la tenia ahi abandonada :lol:.
Utilize el DS1307 pero cuando empeze a cotizar este chip casi valia los $3 y comprando los demas componentes bateria, base, cristal y todo me salia como en $8 hasta que vi que en futurlec venden la placa ya hecha y cuesta $6.90 y como ahi era donde iba a comprar los display de 4" entonces me decide a comprar todo ahi, esta placa viene lista para adaptarla a cualquier placa ya que trae las conexicones con pines.
(http://www.futurlec.com/Pictures/ET-MINI_DS1307.jpg)
Asi que al final el proyecto salio lo mas barato posible, utilize el PIC16F88 con su oscilador interno de 8MHZ y multiplexe los datos para los 4 display y en la parte de potencia utilize el ULN2003A ya que los display funcionan con 9.25 V y 11V, estos display son de catodo comun asi que tuve que usar el ULN2003A como un sumidero de corriente para poder trabajar con ellos en otras palabras el display con ULN2003A funcionan en conjunto como un display de anodo comun, ya que para encender un segmento se debe alimentar con un "0". Ademas le quiero agregar un sensor de temperatura para mostrarla cada cierto tiempo cada 10 min. el reloj muestra la fecha actual.
les dejo unas fotos para que lo vean.
(http://i45.servimg.com/u/f45/11/35/12/25/th/dsc01110.jpg) (http://www.servimg.com/image_preview.php?i=60&u=11351225)
(http://i45.servimg.com/u/f45/11/35/12/25/th/dsc01111.jpg) (http://www.servimg.com/image_preview.php?i=61&u=11351225)
(http://i45.servimg.com/u/f45/11/35/12/25/th/dsc01112.jpg) (http://www.servimg.com/image_preview.php?i=62&u=11351225)
(http://i45.servimg.com/u/f45/11/35/12/25/th/reloj_10.jpg) (http://www.servimg.com/image_preview.php?i=63&u=11351225)
Aqui les dejo parte del codigo
SUB PROCEDURE BCD(DIM BYREF VAL1 AS BYTE)
SELECT CASE VAL1
CASE 0
VALOR = $C0
CASE 1
VALOR = $F9
CASE 2
VALOR = $A4
CASE 3
VALOR = $B0
CASE 4
VALOR = $99
CASE 5
VALOR = $92
CASE 6
VALOR = $82
CASE 7
VALOR = $F8
CASE 8
VALOR = $80
CASE 9
VALOR = $98
CASE 10
VALOR = $1C 'SIGNO DE GRADOS °
CASE 11
VALOR = $A6 'LA C DE CENTIGRADOS
END SELECT
END SUB
SUB PROCEDURE FECHA()
FOR CONT = 3 TO 6
SOFT_I2C_START()
SOFT_I2C_WRITE($D0)
SOFT_I2C_WRITE(CONT)
SOFT_I2C_START()
SOFT_I2C_WRITE($D1)
TEMP = SOFT_I2C_READ(0)
SOFT_I2C_STOP()
SELECT CASE CONT
CASE 4
DIA = TEMP AND $0F
DIAMAX = TEMP AND $F0
DIAMAX = DIAMAX >> 4
CASE 5
MES = TEMP AND $0F
MESMAX = TEMP AND $F0
MESMAX = MESMAX >> 4
CASE 6
YEAR = TEMP AND $0F
YEARMAX = TEMP AND $F0
YEARMAX = YEARMAX >> 4
END SELECT
NEXT CONT
END SUB
SUB PROCEDURE TIEMPO()
FOR CONT = 0 TO 2
SOFT_I2C_START()
SOFT_I2C_WRITE($D0)
SOFT_I2C_WRITE(CONT)
SOFT_I2C_START()
SOFT_I2C_WRITE($D1)
TEMP = SOFT_I2C_READ(0)
SOFT_I2C_STOP()
SELECT CASE CONT
CASE 0
SEG = TEMP AND $0F
SEGMAX = TEMP AND $F0
SEGMAX = SEGMAX >> 4
CASE 1
MIN = TEMP AND $0F
MINMAX = TEMP AND $F0
MINMAX = MINMAX >> 4
CASE 2
HOR = TEMP AND $0F
HORMAX = TEMP AND $30
HORMAX = HORMAX >> 4
END SELECT
NEXT CONT
END SUB
main:
'SDA, SCL
SOFT_I2C_CONFIG(PORTA, 7,6)
FECHA()
TIEMPO()
CICLO:
IF HORMAX = 0 THEN
IF HOR = 0 THEN
IF MINMAX = 0 THEN
IF MIN = 0 THEN
IF SEGMAX = 0 THEN
IF SEG = 0 THEN
FECHA()
END IF
END IF
END IF
END IF
END IF
END IF
IF X = 21000 THEN
X = 0
SELECT CASE MIN
CASE 5
MIN = DIA
MINMAX = DIAMAX
HOR = MES
HORMAX = MESMAX
CASE ELSE
TIEMPO()
END SELECT
END IF
INC(X)
BCD(HORMAX)
PORTB = VALOR
PORTA.3 = 1
DELAY_MS(1)
PORTA.3 = 0
BCD(HOR)
PORTB = VALOR
PORTA.2 = 1
DELAY_MS(1)
PORTA.2 = 0
BCD(MINMAX)
PORTB= VALOR
PORTA.1 = 1
DELAY_MS(1)
PORTA.1 = 0
BCD(MIN)
PORTB = VALOR
PORTA.0 = 1
DELAY_MS(1)
PORTA.0 = 0
GOTO CICLO
END.
-
Estupendo, Pedro, da gusto cuando uno ve un proyecto terminado.
Esa PCB negra, ¿la has pintado tú después de hacerla o es de fábrica?
Los displays esos tienen mucho brillo. Te podrían quedar bien detrás de un plástico traslúcido que sólo deje pasar la luz.
-
Hola nocturno, si tienes razón con lo del plástico asi dejaria de brillar tanto porque ahorita en mi cuarto parece una disco por el brillo :D, estoy ahorita pensando como hacer la base donde ponerlo no creo que quede muy grande aprox. de unos 15" de largo por unas 6" de ancho. Ahora respecto a la PCB la pinte yo despues de terminarla use doble cara en algunas fotos se ven las pistas de arriba.
Saludos
(http://i45.servimg.com/u/f45/11/35/12/25/th/dsc01113.jpg) (http://www.servimg.com/image_preview.php?i=64&u=11351225)
-
Muy lindo amigo, te felicito 8)
-
Ok Pedro, muy bonito, y por el circuito, veo entonces que la alimentacion la realizan las resistencias de 330ohm , por lo que siempre estan consumiendo (o por el encendido del display, o por el sumidero del ulm), yo he empleado luego de los ulm, transistores PNP
Suerte!
Norberto
-
me gustó mucho laplaca del DS,
te felicito. muybuen proyecto.
saludos 8)
-
Ok Pedro, muy bonito, y por el circuito, veo entonces que la alimentacion la realizan las resistencias de 330ohm , por lo que siempre estan consumiendo (o por el encendido del display, o por el sumidero del ulm), yo he empleado luego de los ulm, transistores PNP
Suerte!
Norberto
Hola norberto estas en lo correcto siempre consumo corriente, pero era lo que tenia a la mano y de la forma que tu dices solo hubiera necesitado 8 PNP lo cual me hubiera hecho un poco mas grande la placa, pero el barrido de los display es de 1 ms, solo consume cuando los segmentos estan apagados (ULN), pero buena sugerencia gracias la tomare en cuenta porque ya tengo unos pedidos extras de mis hermanos para su sala :D :D
-
Hola Pedro podrías buscar un array de Darlintos pero PNP, o si nó uno NPN pero que sea Source, osea se conectan sus emisores a cada led
acá te dejo algunos: SDA01 (http://www.datasheetcatalog.com/datasheets_pdf/S/D/A/0/SDA01.shtml) , UDN2891A y UDN2892A (http://www.allegromicro.com/datafile/2981.pdf) , SDA05 (http://www.datasheetcatalog.com/datasheets_pdf/S/D/A/0/SDA05.shtml) , y con google puedes buscar más, ojo te recomiendo leas bien las hojas de datos para que te concuerden las corrientes y la dispociciones de los pines.
Saludos!!!
-
Hola Pedro podrías buscar un array de Darlintos pero PNP, o si nó uno NPN pero que sea Source, osea se conectan sus emisores a cada led
acá te dejo algunos: SDA01 (http://www.datasheetcatalog.com/datasheets_pdf/S/D/A/0/SDA01.shtml) , UDN2891A y UDN2892A (http://www.allegromicro.com/datafile/2981.pdf) , SDA05 (http://www.datasheetcatalog.com/datasheets_pdf/S/D/A/0/SDA05.shtml) , y con google puedes buscar más, ojo te recomiendo leas bien las hojas de datos para que te concuerden las corrientes y la dispociciones de los pines.
Saludos!!!
Ok gracias flacoclau les dare una revisada a los links a ver cual de ellos se me hace mas sencillo de adaptar. Gracias por el dato