Autor Tema: Automatismo para ventilador de WC con PIC12F675  (Leído 12952 veces)

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

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Automatismo para ventilador de WC con PIC12F675
« en: 08 de Octubre de 2006, 15:31:15 »
hola amigos aqui dejo un proyectino que puede que sea util para alguno.... :mrgreen:

El propósito general de este automatismo es el de controlar un ventilador, usado como extractor para cuarto de baño.

El circuito tiene que cumplir dos requisitos básicos:

1º el automatismo cuando esta en reposo no puede tener consumo alguno.
2º el circuito será controlado por un PIC enano, el PIC12F675

La función que realizara el circuito se llevara a cabo de la siguiente forma:

Al suministrar energía del mismo circuito eléctrico de la lámpara del WC, el circuito hará un contaje de 30Seg. (ventilador a on), si la alimentación no es interrumpida el circuito  entrara en una temporizacion obligatoria de 2 minutos aunque se desconecte la alimentación (ventilador a on), después de este tiempo durante 10 Seg. (ventilador a on) comprobara la alimentación de la lámpara, si esta apagada el circuito se desconectara (ventilador a off), y si esta activada entrara de nuevo en el bucle de los 2 minutos obligatorios (ventilador a on) y así sucesivamente.

El esquema

http://img521.imageshack.us/img521/2894/twc10qn2.png

Una foto



El programa

Código: Visual Basic
  1. '***************************************************************************************
  2. 'NOMBRE: Temporizador_WC_10
  3. 'MICRO: PIC12f675
  4. 'DESCRIPCION: Automatismo par el control de un ventilador de WC
  5. 'FECHA/AUTOR: By COS, 09/06
  6. 'Version 1.0
  7. 'oscilador interno a 4Mhz
  8. '***************************************************************************************
  9. ' ************************ Declaracion de variables ************************************
  10. Dim timer_base As Word  'base patron para los timer
  11. Dim timer_base_aux As Word      'tiempo en mSeg, en el que se basaran los timer
  12. Dim contador As Byte    'controla la fase en la que se encuentran las temporizacines
  13. Dim timer1_sg As Word   'primera base de tiempos, para el control de rutinas
  14. Dim timer1 As Word      'indica el tiempo para la base timer_sg
  15. Dim led_flash As Byte   'permite que se ejecute la rutina del parpadeo de los led
  16. Dim flash As Byte       'indica el proximo estado de los led, apagado o encendido
  17. ' ************************* Asignacion de valores de las variables *******
  18. timer_base = 0
  19. timer_base_aux = 1000
  20. contador = 0
  21. timer1_sg = 0
  22. timer1 = 30
  23. led_flash = 0
  24. flash = 0
  25. ' ************************ Inicializacion de registros generales y de E/S **************
  26. VRCON = 0x00    'vref off(power off the comparator voltage)
  27. ANSEL = 0x00    'off ADC
  28. TRISIO = 0x00   'tri-state pins, are outputs
  29. GPIO = 0x00             'clear port
  30. CMCON = 0x07    'comparator off
  31. ' ********************** Estado inicial de los dispositivos a controlar ****************
  32. Gosub off_rele  'desconecta el rele
  33. Gosub on_ledverde  'activa el led verde
  34. Gosub off_ledrojo  'apaga el led rojo
  35. WaitMs 1000  'pausa de 1Seg.
  36. ' *********** habilitacion de interrupciones y programacion del timer1 *****************
  37. INTCON.PEIE = 1  'bit de habilitacion de interrupciones de perifericos
  38. T1CON.TMR1ON = 1  'bit de habilitacion del temporizador timer1
  39. T1CON.TMR1CS = 0        'bit de seleccion de reloj para el timer1, interno Fosc/4
  40. T1CON.T1CKPS0 = 0       'bit de seleccion del prescaler para el reloj del timer1
  41. T1CON.T1CKPS1 = 0       'bit de seleccion del prescaler para el reloj del timer1
  42. TMR1H = 0xfc    'carga el byte alto del registro del tiemr1 (1mSeg)
  43. TMR1L = 0x18    'carga el byte bajo del registro del timer1 (1mSeg)
  44. PIE1.TMR1IE = 1 'activa la interrupcion del timer1
  45. Enable  'INTCON.GIE habilita las interrupciones generales
  46.  
  47.  
  48. ' ************* Rutina del programa ****************************************************
  49. main:
  50.         If contador = 0 Then    'primera fase del control de tiempos y maniobras
  51.                 If timer1_sg >= timer1 Then  'si terminan los 30Seg., base tiempos 120Seg
  52.                         contador = 1   
  53.                         timer1 = 120
  54.                         timer1_sg = 0
  55.                         Gosub off_ledverde 'desconecta rele, y luz apagada, circuito off
  56.                         Gosub on_ledrojo
  57.                         Gosub on_rele                  
  58.                 Endif
  59.         Endif
  60.         If contador = 1 Then    'segunda fase del control de tiempos y maniobras
  61.                 If timer1_sg >= timer1 Then 'pasan los 120Seg, reconfigura para 10Seg.
  62.                         contador = 2
  63.                         timer1 = 10
  64.                         timer1_sg = 0
  65.                         Gosub off_rele  'rele off y luz apagada, el circuito queda off
  66.                         led_flash = 1   'activa el parpadeo de los led
  67.                 Endif
  68.         Endif
  69.         If contador = 2 Then    'tercera fase del control de tiempos y maniobras
  70.                 If timer1_sg >= timer1 Then     'pasan los 10seg. reconfigura a 120seg
  71.                         led_flash = 0   'desactiva el parpadeo de los led
  72.                         contador = 1    'se cambia la fase de temporizacion
  73.                         timer1 = 120    'base tiempos timer1_sg, para que cuente 2 minutos
  74.                         timer1_sg = 0   'activa el contaje de la base de tiempos timer1_sg
  75.                         Gosub on_rele   'activa el rele
  76.                         Gosub on_ledverde       'activa el led verde
  77.                         Gosub on_ledrojo        'activa el led rojo
  78.                 Endif
  79.         Endif
  80. Goto main
  81. End
  82. '********************* Subrutinas del programa ****************************************
  83. on_ledverde:    'prende el led verde
  84.         GPIO.5 = 0
  85. Return
  86. off_ledverde:   'apaga el led verde
  87.         GPIO.5 = 1
  88. Return
  89. on_ledrojo:     'enciende el led rojo
  90.         GPIO.4 = 0
  91. Return
  92. off_ledrojo:    'apaga el led rojo
  93.         GPIO.4 = 1
  94. Return
  95. on_rele:        'activa el rele
  96.         GPIO.0 = 1
  97.         GPIO.1 = 0
  98. Return
  99. off_rele:       'desactiva el rele
  100.         GPIO.0 = 0
  101.         GPIO.1 = 1
  102. Return
  103. off_todo:       'todos los elementos a off
  104.         GPIO.5 = 1
  105.         GPIO.4 = 1
  106.         GPIO.0 = 0
  107.         GPIO.1 = 1
  108. Return
  109.  
  110.  
  111. '*********************** Rutina de las interrupciones***********************************
  112. On Interrupt  'Comienzan las rutinas de las interrupciones, desactiva las interrupciones
  113.         Save System  'Guarda los valores del sistema
  114. '--------------------------------------RUTINA TIMER_1-----------------------------------
  115.         If PIR1.TMR1IF = 1 Then  'comprueba interrupcion activa (solo hay una)
  116.                 timer_base = timer_base + 1     'incrementa con cada desbordamiento timer1
  117.                 If timer_base >= timer_base_aux Then  'control del numero desbordamientos
  118.                         If timer1_sg < timer1 Then timer1_sg = timer1_sg + 1 'base tiempos
  119.                         If led_flash > 0 Then   'hace que los led se vuelvan intermitentes
  120.                                 If flash = 0 Then       'desconecta los led
  121.                                         GPIO.5 = 0
  122.                                         GPIO.4 = 0
  123.                                         flash = 1       'permite que se conecten los led
  124.                                 Else
  125.                                         GPIO.5 = 1      'conecta los led
  126.                                         GPIO.4 = 1
  127.                                         flash = 0       'permite que se desconecten los led
  128.                                 Endif
  129.                         Endif
  130.                         timer_base = 0  'reinicializa el valor de la base de tiempos patron
  131.                 Endif
  132.         Endif
  133.         TMR1H = 0xfc    'carga el registro del timer1, para que desborde cada 1mSeg.
  134.         TMR1L = 0x18
  135.         PIR1.TMR1IF = 0  'borra el flag de salto del tmr1
  136. Resume  'activa las interrupciones y retorna al programa
  137. END ' **********************************

y aqui podeis descargar el articulo completo

http://www.freewebs.com/glafebre/extractordeolores.htm
« Última modificación: 08 de Octubre de 2006, 15:38:43 por dogflu66 »
Saludos desde Granada, España.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #1 en: 08 de Octubre de 2006, 16:18:27 »
Hola:

Maistro, un útil proyecto para despuers de ir al baño, mas aun si se ha cenado frijoles  :D :D :D , gracias por permitirlo colgar en mi web.  :mrgreen: :-/

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #2 en: 08 de Octubre de 2006, 16:23:48 »
Gracias a ti pana.

Ya tenia gana de abrir un hilo en el que se hiciera referencia al...   :D :D
Saludos desde Granada, España.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #3 en: 08 de Octubre de 2006, 16:27:09 »
Hola:

ya era hora maistro, alli te pasas casi todo el dia  ja ja ja ja :D :D :D , creo que te es de mucha utilidad el proyecto ja ja ja  :D :D :D

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #4 en: 08 de Octubre de 2006, 16:30:19 »
no puedo decir que no, maistro, ya que tengo dos instalados en mi casa...  :D :D :D :D :mrgreen:
Saludos desde Granada, España.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #5 en: 08 de Octubre de 2006, 16:31:57 »
Hola:

Bien maistro, ya lo armare para estrenarlo  :D :D :-/ :-/

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #6 en: 08 de Octubre de 2006, 16:56:24 »
Seguro que a mi esposa le interesa, ya que dice no se qué de mí cuando salgo del baño ... ja ja ja  :D  :D  :D

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #7 en: 08 de Octubre de 2006, 18:01:55 »
Ya sabia yo que tanta alusión al baño era por algo, hasta que subiste el proyecto :D :D.

Asi puedes entretenerte con tus 5 minutos  :D :D :D :D :D :D.

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #8 en: 08 de Octubre de 2006, 18:28:52 »
Unos cinco minutos bien ventilados....  :D :D :D

Red no le enseñes este hilo a tu mujer o te veo construyendo alguno...   :mrgreen:
« Última modificación: 08 de Octubre de 2006, 18:31:09 por dogflu66 »
Saludos desde Granada, España.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #9 en: 09 de Octubre de 2006, 01:49:00 »
Bonito e higiénico proyecto, querido Carlos.

He mirado el esquema y no entiendo cómo funciona la parte de la lámpara, la alimentación 220V y el interruptor doble ese. ¿Puedes explicarlo?

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #10 en: 09 de Octubre de 2006, 08:00:41 »
Hola Nocturno, el "interruptor doble " que mencionas no es manual, si no que es un relay doble inversor y trabaja de la siguiente manera:

* Cuando el vetilador y la lampara estan apagados el relay se encuentra en estado de reposo, tal como se ve en el esquema.

* Al energizar la lampara tambien estas alimentando el circuito y este alimenta el relay, de tal forma todo el temporizador pasa a estar alimentado directamente de la linea de 220Vca, entonces por mas que se apage la lampara el temporizador sigue en funcionamiento.

* Cuando el tiempo necesario a transcurrido (2 min), el PIC corta la alimentación del relay, este pasa al estado de reposo, si la lampara esta apagada el circuito pierde la alimentación y todo regresa al punto inicial, y si la lampara sigue encendida el PIC luego de un tiempo prudencial vuelve a accionar el relay alimentando nuevamente el relay, de esta forma asta que la lampara se apague.

Ahora lo que sí no entiendo es el doble transistor para accionar el relay, y le haría una pequeña reforma al circuito y ya que estamos usando un PIC con A/D detectaría si hay caída de tensión en el sector de 12V para que el tiempo que esté el relay en estado de reposo sea mínimo y no perturbar mucho la alimentación del PIC, también de esta forma eliminamos la posibilidades de falla por caer en el tiempo muerto que posee el circuito, pero esto solo es una opinión personal. Seguro tal como esta les será de utilidad a más de uno  :mrgreen:

Un saludo a todos.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #11 en: 09 de Octubre de 2006, 20:14:00 »
Muy buena Carlos, pegare la explicación directamente en la memoria del proyectito..  quiero mas como esta...

No tengo nada que añadir con respecto a lo que dijo Carlos, tan solo decir que el rele no se activa hasta pasados 30Seg después de encender la luz del cuarto de baño... por lo que durante esos primeros segundos el circuito dependerá del interruptor de encendido de la lámpara del wc (para visitas rápidas al wc).

Marcare mejor el rele y añadiré un esquema con el conexionado eléctrico en bloques.

El doble transistor es por utilizar dos señales opuestas para activar el rele, se usa en industrial cuando quieres dar algo mas de seguridad al control del rele, ya sea porque se traspase un transistor, o quede bloqueado el micro o le pueda caer a alguien algo encima (si quieres llámalo una manía mía tambien de jejeje).

El tiempo muerto?, que tiempo muerto?... jejeje, el estado inestable del circuito lo aprovecho para que el circuito pase a un estado estable, tan estable que deja de funcionar.. mas estable que eso no creo... jajaja.

Y me desvelaste el resto del hilo con el tema del ADC....

Pd. Estoy preparando un .pdf, con todos mis proyectitos, asi que cualquier critica, correccion.... etc, es bienvenida, gracias panas.

otro Pd. Gracias Carlos.
Saludos desde Granada, España.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #12 en: 09 de Octubre de 2006, 23:24:43 »
Hola dogflu66, bueno me alegra haber estado vastante hacertado en el tema del temporizador  :D

El punto muerto del que hablo esta producido por el hecho de que tú no usas ningun tipo de detección de la tensión de la linea proveniente de la lampara, y solo te vales en el hecho de que cuando la lampara este apagada el circuito dejará de funcionar, y es así, pero ete aquí que si fracciones de segundos antes de que el relay pase a conectar la linea del WC para sensar la alimentación de la misma y justo en ese intervalo de tiempo la alimentación del PIC cae por debajo de la permitida, este no tendrá el tiempo suficiente de reconectar los 220Vca directos y se producirá el apagado del sistema siendo que debería permanecer encendido por lo menos 2 min más.

Entonces la solución es medir la tensión de los 12V inmediatamente despues del rectificador, si la lampara del WC esta apagada y mides tensión en un intervalo de tiempo X podrás determinar si la misma decae o permanece estable, si decae es indicativo de que la lampara esta apagada, entonces tienes tiempo de conmutar el relay y continuar los 2 min extras con la tensión de 220Vca directa y cumpliendo con los requisitos que as mencionado.

Esto te lo comento ya que si estas usando un 12F675 puedes aprovechar el A/D de manera muy sencilla con solo colocar 2 resistencias y conseguiras un funcionamiento mucho más seguro (ya que trabajamos con terminos industriales :mrgreen:)

Bueno, espero que entiendas mi explicación, si te interesa el tema y no entiendes algo solo pregunta, OK.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #13 en: 10 de Octubre de 2006, 01:15:45 »
El unico fallo que le veo, es que ahora con el zumbido del ventilador seria mas complicado la concentracion. Digo esto por que supongo que mas de uno le ocurrira lo que a mi, que me estoy estudiando la carrera un 50% en la biblioteca y el otro 50 en el baño xD.

Eso si la utilidad del invento es indiscutilble, solo falta un añadido que suelte fragancia y ya es perfecto.

Saludos y gracias por compartir tu ingenio.

Tutoriales y proyectos de electrónica

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Automatismo para ventilador de WC con PIC12F675
« Respuesta #14 en: 10 de Octubre de 2006, 10:30:13 »
En términos industriales noooooo, soy muy joven todavía para morir tan pronto...
Gracias Carlos.
Saludos desde Granada, España.


 

anything