Autor Tema: Proyecto reloj-termómetro  (Leído 10971 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sistemasorp

  • PIC10
  • *
  • Mensajes: 28
Proyecto reloj-termómetro
« en: 12 de Enero de 2009, 19:56:13 »
Hola a todos

Quería compartir con vosotros un proyecto que he hecho recientemente. Se trata de un reloj-termómetro realizado con un PIC 16F628A, un sensor de temperatura i2c DS1624, un reloj en tiempo real i2c DS1307 y un LCD compatible con Hitachi HD44780.

El sistema, una vez encendido, muestra la fecha y hora, la temperatura junto con los valores máximo y mínimo que alcanza y finalmente un mensaje personalizado. Aquí hay un video que he grabado del mismo:


El esquema del circuito es el siguiente:



Y desde aquí os podeis bajar el .hex y el código fuente (CCS C)

proyecto

La fecha y hora se configuran con sólo un botón pulsador que está conectado a RB0 y que funciona por temporización e indexación. Es decir, si tu pulsas la primera vez el botón, se mostrará en el LCD la fecha y hora y el indice 0, que indica que vas a modificar el día, entónces si pulsas dentro de los dos segundos siguientes el botón, el día se incrementará, si no lo pulsas, el indice se incrementará a 1 y se podrán modificar los meses de igual manera. Así hasta llegar al indice 5 que son los segundos y después mostrará la fecha y hora actualizadas renovandose cada segundo.

A los diez segundos de mostrar la fecha y hora se muestra la temperatura actual junto con los valores máximo (M) y minimo (m) que se han alcanzado. Si son los 30 primeros segundos de medianoche se resetearán esos valores.

A los diez segundos de mostrar la temperatura, se mostrará un mensaje personalizado que se ha guardado en la EEPROM al programar el PIC. Pasados cinco segundos vuelve a mostrar la fecha y hora.

El PIC usa el oscilador interno de 4Mhz. El programa ocupa un 98% de su memoria de código. Aunque en el video vereis que hay un interruptor de encendido/apagado, un led indicador de encendido/apagado y unas resistencias variables para el LCD, con lo que hay en el esquema es suficiente para funcionar. Vcc son 5 voltios conseguidos a través de un 7805. Si teneis alguna pregunta no dudeis en consultarme.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
[*] Re: Proyecto reloj-termómetro
« Respuesta #1 en: 13 de Enero de 2009, 10:16:33 »
Felicidades por tu proyecto y gracias por compartirlo

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto reloj-termómetro
« Respuesta #2 en: 13 de Enero de 2009, 11:20:51 »
Enhorabuena por el proyecto y gracias por la contribución!

un saludo :)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Proyecto reloj-termómetro
« Respuesta #3 en: 13 de Enero de 2009, 12:24:49 »
asi es, ggracias sistemasorp  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Proyecto reloj-termómetro
« Respuesta #4 en: 13 de Enero de 2009, 12:30:45 »
Muy bueno, felicitaciones y gracias por compartirlo!
Estuve viendo el codigo y note q para llevar la cuenta de los segundos haces un delay_ms(1000). Seguro q es lo suficientemente preciso? Porq el programa ejecuta muchas instrucciones y cada una lleva su tiempo, por lo tanto demora un poco mas de un segundo en incrementar, y a medida q pasa el tiempo, ese error se propaga. Podrias usar la interrupcion de timer asi te independizas del resto del codigo.
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Proyecto reloj-termómetro
« Respuesta #5 en: 13 de Enero de 2009, 12:54:22 »
que lindo proyecto. saludos!!
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado sistemasorp

  • PIC10
  • *
  • Mensajes: 28
Re: Proyecto reloj-termómetro
« Respuesta #6 en: 13 de Enero de 2009, 13:56:20 »
Hola. Gracias a todos. Me alegro que os haya gustado.

Cita de: gera
Estuve viendo el codigo y note q para llevar la cuenta de los segundos haces un delay_ms(1000). Seguro q es lo suficientemente preciso? Porq el programa ejecuta muchas instrucciones y cada una lleva su tiempo, por lo tanto demora un poco mas de un segundo en incrementar, y a medida q pasa el tiempo, ese error se propaga. Podrias usar la interrupcion de timer asi te independizas del resto del codigo.

Hola gera.
Es cierto que no es preciso, pero ese delay sólo sirve para tener un contador de tiempo para el cambio de modo y la configuración. No es un problema que entre el modo de fecha/hora y el modo de temperatura pasen 9,80 segundos o 10,20. Por suerte la precisión de la fecha y hora la lleva en exclusiva en DS1307. Otro handicap que tengo es que al haber ocupado el 98% de la memoria del micro tengo poco espacio para añadir más código como el temporizador que comentas, aunque esto último no lo he probado. Gracias por tu idea.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Proyecto reloj-termómetro
« Respuesta #7 en: 14 de Enero de 2009, 00:39:46 »
muy buen trabajo felicidades y gracias pro compartirlo

 :-/ :-/
.

Desconectado charlyfoxtros

  • PIC10
  • *
  • Mensajes: 4
Re: Proyecto reloj-termómetro
« Respuesta #8 en: 15 de Septiembre de 2009, 16:01:54 »
Hola sistemasorp, no se si estaras por aqui para leer este mensaje, pero quiero decirte que he simulado este proyecto con proteus tal y como lo tienes en el esquema, cargando el archivo hex y no funciona. No sale nada en la pantalla.
Quizas te falte algo por añadir o no se cual puede ser el problema.

Ojala puedas ayudarme, pues quiero realizarlo y montarlo sobre circuito impreso.

Un saludo.

Desconectado charlyfoxtros

  • PIC10
  • *
  • Mensajes: 4
Re: Proyecto reloj-termómetro
« Respuesta #9 en: 16 de Septiembre de 2009, 17:37:36 »
Comentaros que cometi un error en el diseño y despues de corregirlo es cierto que funciona.

Me lo estoy haciendo, pero tengo un grave problema, no encuentro el DS1621, en su lugar he conseguido el DS1620.

Me encantaria que alguien me pudiera informar donde poder conseguir este componente aqui en España, pues lo busco y solo lo encuentro en paginas fuera de este pais, concretamente en america.

Gracias a todos.


Desconectado ovalles

  • PIC10
  • *
  • Mensajes: 1
Re: Proyecto reloj-termómetro
« Respuesta #11 en: 10 de Octubre de 2009, 18:16:25 »
Hola, enhorabuena por el proyecto y gracias por compartirlo,
He estado viendo el codigo fuente y falta ds1624.c, no?
Una pregunta, si utilizo un PIC que tenga interfaz serie SPI/I2C se puede utilizar para comunicarse con el termometro DA1624? es que realmente no pone en ninguna parte que sea bus I2C,  mas bien parece que tiene su propio protocolo serie. Tu has utilizado pines I/O de proposito general no?
Saludos

Desconectado sistemasorp

  • PIC10
  • *
  • Mensajes: 28
Re: Proyecto reloj-termómetro
« Respuesta #12 en: 29 de Diciembre de 2009, 09:03:34 »
Me encantaria que alguien me pudiera informar donde poder conseguir este componente aqui en España, pues lo busco y solo lo encuentro en paginas fuera de este pais, concretamente en america.

Si no lo encuentras puedes usar un DS1621, más barato pero con menos precisión en la lectura de la temperatura.

He estado viendo el codigo fuente y falta ds1624.c, no?

Ese fichero ya viene incluido en el CCS en la ruta <archivos de prgrama>\PICC\Drivers

Eso si, la función read_temp() debes sustituirla por esta otra (si no la tenías ya) para que te devuelva los valores el grados centígrados:

Código: [Seleccionar]
int16 read_temp()
{
   int datah,datal;

   i2c_start();
   i2c_write(0x90);
   i2c_write(0xaa);
   i2c_start();
   i2c_write(0x91);
   datah=i2c_read();
   datal=i2c_read(0);
   i2c_stop();
   return((int16)datah << 8 + datal);
}


Una pregunta, si utilizo un PIC que tenga interfaz serie SPI/I2C se puede utilizar para comunicarse con el termometro DA1624? es que realmente no pone en ninguna parte que sea bus I2C,  mas bien parece que tiene su propio protocolo serie. Tu has utilizado pines I/O de proposito general no?
Saludos

Si, el DS1624 es I2C y puedes usar los pines del PIC destinados a ello.




Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: Proyecto reloj-termómetro
« Respuesta #13 en: 05 de Enero de 2010, 07:40:01 »
Buenas!

Acabo de ver tu proyecto y tiene muy buena pinta la verdad, de echo yo tengo uno casi igual, lo unico que yo en vez de LCD tengo conectado un SAA1064 con el que controlo 4 displays de tamaño mediano que es donde muestro todo  :D

Un saludo!

Desconectado soborocotea

  • PIC10
  • *
  • Mensajes: 2
Re: Proyecto reloj-termómetro
« Respuesta #14 en: 10 de Octubre de 2011, 15:04:37 »
Me encanta tu proyecto!!!
Soy un total novato en electronica y me gustaría armarlo para colocarlo en la moto. Me sería últil.

Pero ahora que lo acabo de simular en la pc, veo que si hay una temperatura negativa, se guarda en el historial de máxima, cosa que debería ir en la mínima...
a ver si me explico. si un día hace -2° de minima y 7 de máxima, y al otro día hace 3°de mínima y 35° de máxima, en el historial me muestra: Max: -2° ; Min: 3°

Ya que no publicaste el código fuente, lo podría modificar??
Disculpá las molestias y muchas gracias por compartirlo con la comunidad.