Autor Tema: PIC-RTC-Relay  (Leído 14003 veces)

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

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
PIC-RTC-Relay
« en: 22 de Octubre de 2010, 09:55:50 »
Os presento mi último proyecto, en vídeo para que resulte más ameno  :D, nacido a raíz de este consejo de Nocturno: http://www.todopic.com.ar/foros/index.php?topic=30874.msg258679#msg258679


Se trata de un temporizador basado en un PIC18LF2455, un RTC DS3231 y un relé de láminas HE3621.

La interfaz está encomendada a 6 displays de 7 segmentos (9 en realidad) de ánodo común, multiplexados a través de un CD4022.

La alimentación del PIC y del RTC se realiza a 3.3V proporcionados por un MAX604 para mejorar la precisión del reloj.

El funcionamiento permite definir dos alarmas, con un estado ON y otro OFF del relé cada una de ellas. Una peculiaridad del firmware es que dentro del mismo día, el dispositivo no se salta ningún estado aunque se pierda el suministro eléctrico. Por ejemplo, si se pierde el suministro antes de que se realicen los 2 estados de una alarma y se recupera después, esos dos estados se reproducirán en cuanto se recupere el suministro. Esto es así porque el PIC-RTC-Relay está pensado para emular la pulsación de un pushbutton de un deshumidificador que requiere un apagado suave; si no actuase así, podría darse el caso de que el PIC-RTC-Relay encendiese el deshumidificador cuando en realidad tiene que apagarlo.

El circuito puede alimentarse a través del conector USB o externamente.

Como ampliaciones para el futuro quedan pendientes aprovechar la conexión USB para establecer programaciones de alarmas semanales, mensuales, ... y convertirlo en un crono-termostato (aprovechando el sensor de temperatura del DS3231).

Comparto todo GRATIS excepto el PCB porque, como explico en el vídeo, no lo tengo. http://www.villatic.org/jfmateos/PIC_RTC_RELAY_v0.rar
[Ya sí lo tengo... seguir leyendo; y además existe una versión más reciente]

Mis agradecimientos a tod@s los componentes del foro por conformar una comunidad altruista de intercambio de experiencias/conocimientos y particularmente a RedPic, por la librería que compartió para el DS1307 (http://www.todopic.com.ar/foros/index.php?topic=13282.0) y que me fue muy sencilla de adaptar al DS3231.

******Modificación del día 24 de octubre de 2010*******

Viendo que podría existir interés en reproducir este proyecto y, sobre todo, en ampliarlo, me ha parecido útil completarlo incluyendo el diseño del PCB y las instrucciones que os reproduzco a continuación:



PIC_RTC_RELAY v0
jfmateos
Madrid
Octubre 2010
jfmaba@gmail.com
http://www.todopic.com.ar/foros/index.php?topic=32500.0


Este dispositivo es un temporizador en el que podemos definir dos alarmas
con resolución de segundos que se repiten cada intervalo de 24 horas.
Este intervalo no tiene por qué coincidir con el día natural
(de 0:00:00 a 23:59:59). Cada alarma está compuesta por un estado On y un
estado Off que cierran y abren, respectivamente, las láminas de un relé de
tipo reed. La alarma 1 tiene que ser anterior a la alarma 2 y, además, el
estado Off de la alarma 2 no puede estar más de 24 horas retrasado respecto
al estado On de la alarma 1.

El dispositivo está programado para no saltarse ningún estado dentro de
cada periodo de 24 horas, aunque se pierda el suministro eléctrico.
Por ejemplo, si al recuperar el suministro eléctrico se detecta que no
se ha pasado por alguno de los estados de alguna alarma anterior, el
dispositivo reproduce inmediatamente todos los estados saltados dejando
un segundo entre ellos, hasta ponerse "al día".

Por ejemplo, si la alarma 1 está programada de 1:00:00 a 2:00:00 y la alarma
2 de 3:00:00 a 4:00:00, si se pierde el suministro eléctrico a las 0:30:00 y
se recupera a las 2:30:00, el relé se cerrará (estado On de la alarma 1), un
segundo después se abrirá (estado Off de la alarma 1), y
un segundo después volverá a cerrarse para alcanzar el estado que le
corresponde por la hora actual.

En este mismo sentido, el dispositivo está programado para dar prioridad al
estado frente el cambio de estado. En otras palabras, al recuperarse de un
fallo de suministro eléctrico, el relé se coloca en el estado que le
corresponda según las horas de las alarmas, aunque ello suponga volver a
cerrar el relé.

Por ejemplo, si la alarma 1 está programada de 1:00:00 a 2:00:00 y la alarma
2 de 3:00:00 a 4:00:00, si se pierde el suministro eléctrico a las 3:30:00 y
se recupera a las 3:45:00, el relé se cerrará aunque ya se había cerrado
previamente a las 3:00:00.

Si no se desea este comportamiento, sino dar prioridad al cambio de estado
frente al estado en sí, basta con comentar las líneas de la 561 a la 563:

//if((ultimoEstadoRegistrado==1||ultimoEstadoRegistrado==3)&&!input_state(PIN_C7)){
//   output_high(PIN_C7);
//}

Aunque se ha montado un relé de tipo reed (HE3621) que admite cargas muy
bajas (está pensado simplemente para simular la pulsación de un pushbutton
de un deshumidificador), este relé puede sustituirse perfectamente por cualquier
otro mayor con la única condición de que su bobina funcione a 5V y sea capaz
de excitarse con la corriente que es capaz deconducir el BC548 (Q8). Los
contactos del relé se encuentran en los pines 3 y 4 del conector X1.

El circuito debe alimentarse a 5V, bien a través del conector USB o bien
a través de los pines 1 y 2 del conector X1 (EXT). Mediante el jumper JP2
elegiremos cuál de estas dos fuentes deseamos utilizar.

Mediante el jumper JP6 podemos indicar que todo el circuito se alimente a
5V o que el PIC18LF2455 y el DS3231 se alimenten a 3V3. Si optamos por
alimentarlo todo a 5V podremos prescindir del MAX604, pero para logar la
mayor precisión del reloj DS3231 es recomendable alimentarlo a 3V3.

La programación del PIC puede realizarse a través del conector ICSP. En
este caso podemos utilizar el jumper JP3 para determinar si queremos
alimentar el PIC a través de la placa (PCB) o a través del propio
programador (ICSP).

Los displays de 7 segmentos (realmente de 9) elegidos son de tipo ánodo
común (concretamente son el modelo LA8041-11 L de LedTech). Estos 6
displays están multiplexados, de modo que sólo uno de ellos (determinado
por el CD4022) está alimentado en cada instante. Obsérvese que algunos de
los displays se han montado girados 180º respecto a los demás para poder
crear el signo : de separación entre horas y minutos sin añadir LEDs
adicionales.

El dispositivo tiene los siguientes modos de funcionamiento:

* Fecha/Hora. Es el modo en el que arranca inicialmente.
* Configuración de fecha/hora
* Hora de las alarmas
* Configuración de hora de la alarma
* Temperatura: Muestra la temperatura registrada por el DS3231, que tiene
una resolución de 0.25ºC y una precisión de +/-3ºC.
* Ahorro de energía: Deja sólo encendidos los signos : parpadeantes de
separación entre horas:minutos:segundos.

La misión de los botones A, B, C y D es la siguiente:

* Botón A: En el modo Fecha/Hora, con una pulsación corta permite alternar
entre la visualización de la fecha y la hora, mientras que con una pulsación
larga entra en el modo Configuración de fecha/hora. En el modo
Configuración de fecha/hora, con una pulsación corta permite alternar entre
el ajuste de hora/dia, minutos/mes y segundos/año, mientras que con una
pulsación larga regresa al modo Fecha/Hora sin aplicar ningún cambio. En el
modo Configuración de hora de alarma, con una pulsación corta confirma el
cambio en la hora de la alarma configurada. Si intentamos configurar una fecha
no válida, como 30 de febrero, no será aceptada y el display mostrará el mensaje
"Error". En cualquier otro modo, con una pulsación corta regresa al modo
Fecha/Hora.

* Botón B: En el modo Hora de las alarmas, con cada pulsación corta va
visualizando las horas configuradas para los estados On y Off de cada una de
las 2 alarmas; el punto izquierdo del display 1 se ilumina en el estado On de
la alarma 1, el punto derecho del display 1 se ilumina en el estado Off de la
alarma 1, el punto izquierdo del display 6 se ilumina en el estado On de la
alarma 2, y el punto derecho del display 6 se ilumina en el estado Off de la
alarma 2. El estado Off siempre debe ser posterior al estado On, el estado
On de la alarma 2 debe ser posterior al Off de la alarma 1, y el estado Off
de la alarma 2 no debe estar retrasado más de 24 horas respecto al estado On
de la alarma 1; en caso contrario el display mostrará el mensaje "Error". En
este mismo modo (Hora de las alarmas) con una pulsación larga entra en el modo
Configuración de hora de alarma del estado que estemos visualizando. En el
modo Configuración de hora de alarma, con una pulsación corta permite alternar
entre el ajuste de hora, minutos y segundos, mientras que con una pulsación
larga regresa al modo Hora de las alarmas sin aplicar ningún cambio. En el modo
Configuración de fecha/hora, con una pulsación corta confirma el cambio
configurado en la fecha o la hora. En cualquier otro modo, con una pulsación
corta regresa al modo Hora de las alarmas.

* Botón C: En los modos Configuración de fecha/hora y Configuración de hora de
la alarma, con una pulsación corta resta una unidad en el valor que estemos
configurando (hora, minuto, segundo, día, mes o año), mientras que con una
pulsación larga resta unidades de forma continua (retroceso rápido). En
cualquier otro modo, con una pulsación corta pasa al modo Temperatura.

* Botón D: En los modos Configuración de fecha/hora y Configuración de hora de
la alarma, con una pulsación corta suma una unidad en el valor que estemos
configurando (hora, minuto, segundo, día, mes o año), mientras que con una
pulsación larga suma unidades de forma continua (avance rápido). En
cualquier otro modo, con una pulsación corta pasa al modo Ahorro de energía.

Si los dos estados (On y Off) de una alarma se configuran exactamente a la
misma hora, minuto y segundo, simplemente será ignorada (no se cerrará ni se
abrirán los contactos del relé).

Cuando los contactos del relé están cerrados se enciende el punto superior
derecho del display 5; por el contrario, si los contactos del relé están abiertos
este punto permanece apagado.

El botón R permite resetear el PIC.

Aunque se interrumpa el suministro eléctrico o se resetee el PIC, la configuración
de las alarmas no se pierde porque está registrada en la EEPROM. Si se interrumpe
el suministro eléctico tampoco se pierde la configuración de fecha/hora del
DS3231 porque queda alimentado por la batería de botón 2032 de 3V.

El PCB es un diseño a doble cara relativamente fácil de fabricar porque las pistas,
las vias y los pads son bastante gruesos. Por ejemplo, el prototipo ha sido
fabricado con el método de la plancha utilizando papel CPM 6.3.

Todos los componentes son Through hole, excepto el PIC18LF2455 y el DS3231 que son SMD.
Los pines del DS3231 están disponibles a través de las dos tiras de pines JP4 y JP5
porque quería aprovechar este diseño como placa de entrenamiento sobre el DS3231.

Una característica importante de este proyecto es que no existe acoplamiento eléctrico
(sino magnético, a través del relé) entre el PIC_RTC_Relay y el dispositivo que se
quiere controlar con él.

El software ha sido desarrollado en CCS C, aprovechando la librería para el DS1307 de
RedPIC sobre la que se han aplicado pequeñas modificaciones para adaptarla al DS3231.
El código está un poco desordenado porque se fueron introduciendo modificaciones sobre
la marcha.

Posibles mejoras:

* Resultaría relativamente sencillo convertirlo en un cronotermostato aprovechando
el sensor de temperatura del DS3231.
* Ampliar la resolución hasta milésimas de segundo aprovechando que la salida SQW
del DS3231 puede programarse a un máximo de 8192Hz.
* Aumentar el número de relés para manejar simultáneamente varios pushbuttons. Podría
ser de utilidad, por ejemplo, en la automatización de maquetas de trenes, luces de
Navidad, aplicaciones domóticos, ... o, en general, en la automatización de cualquier
dispositivo que se maneje manualmente mediante botones.
* Podría implementarse un software para PC que, a través de la conexión USB, permitiese
programar otros tipos de alarmas (semanales, mensuales, cada cierto intervalo, ...), o
incluso manejar simultáneamente varios relés a modo de secuenciador.

Este proyecto se distribuye de forma gratuita, estando compuesto originalmente por:

* Esquema electrónico en formato de Eagle y PDF
* Diseño del PCB en formato de Eagle y PDF
* Código fuente en CCS C
* Archivo compilado en formato HEX
* Bill of materials


******Modificación del día 1 de noviembre de 2010*******

Ya está aquí la versión 1 de este proyecto: http://www.villatic.org/jfmateos/PIC_RTC_RELAY_v1.rar
He modificado el sistema de ajuste de la hora y la fecha para que la hora, minutos,
segundos, o el día, mes y año, sigan corriendo mientras el usuario no los modifique
explícitamente. De esta forma, el usuario, por ejemplo, puede cambiar la hora y los
minutos sin tener que volver a establecer los segundos. Así es más cómodo, por ejemplo,
para ajustar la hora al horario de verano/invierno que sólo implica modificar la hora.
« Última modificación: 01 de Noviembre de 2010, 14:36:37 por jfmateos2 »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1696
Re: PIC-RTC-Relay
« Respuesta #1 en: 22 de Octubre de 2010, 13:30:33 »
te ha quedao de lujo :shock: :-/
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: PIC-RTC-Relay
« Respuesta #2 en: 22 de Octubre de 2010, 15:59:08 »
muy buen cacharrito.haber cuando tengo tiempo y practico con los RTC.
otra cosa es el rele este de laminas que tienes en tu circuito.al principio me ha parecido que era un rele de impulsos.pero creo que no es asi.me equivoco?

lo que me refiero a rele de impulsos es un rele que solo le hace falta un impulso para activarlo y otro para desactivarlo.
con la diferencia de que la activacion/desactivacion se realiza segun la polaridad del impulso.ya puede ser de 5v o 12v.segun el fabricante.
te hubiera quedado muy bien el circuito asi.
claro que hubiera hecho falta una bateria de pilas.para la activacion del rele.y al usar displays no seria rentable dado el consumo de estos.

pero esta muy bien conseguido. saludos.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: PIC-RTC-Relay
« Respuesta #3 en: 22 de Octubre de 2010, 21:03:35 »
 :-/ Muy bueno jfmateos !! :-/  muy simple el empleo, los segmentos lucen muy bien

Felicitaciones!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: PIC-RTC-Relay
« Respuesta #4 en: 22 de Octubre de 2010, 23:10:47 »
Felicidades por conseguirlo Juanfe. Y magnífica explicación de 6 minutos. Además, te honra mostrar tus "vergüenzas". Enhorabuena.

Desconectado PulKon

  • PIC12
  • **
  • Mensajes: 70
Re: PIC-RTC-Relay
« Respuesta #5 en: 24 de Octubre de 2010, 01:08:47 »
Me gustó bastante, voy a tratar de armarlo para incorporarlo a la alarma de la casa, para que opere en automático, que se arme en la noche y se desarme en la manaña.

Saludos y felicitaciones.
La felicidad no consiste en tener lo que quieres, sino en querer lo que tienes.

Desconectado ema

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1078
Re: PIC-RTC-Relay
« Respuesta #6 en: 24 de Octubre de 2010, 01:20:23 »
Excelente jfmateos!!!  :-/ :-/

Ademas muy didactico el video....

Saludos

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: PIC-RTC-Relay
« Respuesta #7 en: 24 de Octubre de 2010, 13:47:49 »
Gracias a todos.

Viendo que podría ser de utilidad para otros, he decidido re-crear el PCB (el que digo en el vídeo que no tenía... pues ahora ya lo tengo) e incluir unas instrucciones que he recogido en el primer mensaje de este hilo.

El enlace de descarga sigue siendo el mismo.

Desconectado JMACA

  • PIC10
  • *
  • Mensajes: 1
Re: PIC-RTC-Relay
« Respuesta #8 en: 24 de Octubre de 2010, 13:57:34 »
amigo tume puedes ayudar con una lcd

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: PIC-RTC-Relay
« Respuesta #9 en: 24 de Octubre de 2010, 14:16:11 »
muy lindo proyecto Juanfe! :-/ :-/

gracias por compartirlo
.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: PIC-RTC-Relay
« Respuesta #10 en: 01 de Noviembre de 2010, 14:37:32 »
Ya está aquí la versión 1 de este proyecto: http://www.villatic.org/jfmateos/PIC_RTC_RELAY_v1.rar

He modificado el sistema de ajuste de la hora y la fecha para que la hora, minutos,
segundos, o el día, mes y año, sigan corriendo mientras el usuario no los modifique
explícitamente. De esta forma, el usuario, por ejemplo, puede cambiar la hora y los
minutos sin tener que volver a establecer los segundos. Así es más cómodo, por ejemplo,
para ajustar la hora al horario de verano/invierno que sólo implica modificar la hora.


Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: PIC-RTC-Relay
« Respuesta #12 en: 08 de Diciembre de 2010, 16:39:09 »
Un honor Nocturno, muchas gracias.

Cuando hoy leía esto: http://hackaday.com/2010/12/07/project-hosting-a-common-question/

Pensaba que tu web debía estar entre las opciones disponibles.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: PIC-RTC-Relay
« Respuesta #13 en: 08 de Diciembre de 2010, 17:25:14 »
Ya me gustaría, ya, aunque tengo muy poco tiempo para dedicárselo.

Desconectado dolphin_96

  • PIC12
  • **
  • Mensajes: 73
    • Ezkybel Electronics
Re: PIC-RTC-Relay
« Respuesta #14 en: 10 de Diciembre de 2010, 14:31:47 »
muy buen trabajo lo que mas me gusto a parte de la pogramacion, es el pcb,


Saludos
Visiten: www.xbot.es/ezkybel tengo tutoriales para pics con visual basic...:)


 

anything