MediTimer: un timer para meditar

MediTimer_foto01.jpg

Proyecto completo para la construcción de un temporizador (timer) pensado especialmente para meditar.

Hola gente, después de un período intenso de trabajo, retomo las publicaciones de Inventable, esta vez con un temporizador para meditar. Como ustedes saben, existe una gran variedad de temporizadores comerciales, con innumerables funciones y a precios muy convenientes. Sin embargo, el problema que tienen todos ellos cuando se usan para la meditación es el sonido de la alarma que generalmente es fuerte y molesto. Esto no se adapta en un ambiente de serenidad, donde mente y cuerpo se encuentran relajados (por lo menos así tendría que ser, dicen).

Por ese motivo, en las sesiones de grupo, se indica el tiempo pasado produciendo un sonido con una madera o con una campana.

mediTimer_circuito.png
Circuito del timer para meditación. El sonido lo genera el mismo microcontrolador. En la salida SPK se conecta el parlante.

Bien, en el proyecto que les presento el sonido de la alarma es simplemente una secuencia de tres "tock" muy breves, producidos por un parlante, parecidos al rumor de una madera que golpea otra. Si se desea proseguir con la meditación,  el timer automáticamente empezará un nuevo ciclo de la misma duración programada. La programación del tiempo se hace simplemente con una perilla y para la activación del temporizador es necesario solamente encenderlo. El timer funciona con una batería de 9V y consume muy poco.

mediTimer_circuito_impreso.png
Circuito impreso del temporizador en su versión final.

No obstante la simplicidad del circuito, para obtener todas las funciones necesarias y una precisión aceptable he usado el habitual PIC12F675, microcontrolador de solo 8 patitas, económico y sencillo. El micro se encarga de leer la posición del potenciómetro con su ADC interno, calcula el tiempo programado y "sintetiza" el sonido, generando la onda respectiva sobre el parlante.

mediTimer_vista_pictorica.png
Vista pictórica del temporizador completo y diagrama de conexiones.

Debido a que el timer funciona con una batería de 9V, he tratado de reducir los consumos eliminando el led de alimentación y dejando solo un led que produce un breve destello cada 2 segundos para indicar que el temporizador está funcionando. Este destello, de pocos microsegundos, está generado por el mismo micro.

El programa

Después de la fase de inicialización del micro en la cual se activa también el timer 1 de 16 bit con el respectivo interrupt, el programa entra en un loop que no hace nada, solamente mantiene el watchdog actualizado (clrwdt). Por otro lado, el timer 1 obliga al micro a saltar a la sección del interrupt una vez cada 55mSec. En esta parte del programa se incrementan los contadores TimerCountH y TimerCountL que nos dan el tiempo del temporizador.

MediTimer_foto02.jpg
Primera versión del temporizador montada sobre una "L" de policarbonato.

Para obtener una interrupción precisa cada 55 mSec., el programa carga cada vez que va a la sección del interrupt, los dos registros del timer 1 con el valor hexadecimal 296Bh (10603 decimal). El tiempo de 55 mSec. es necesario para poder obtener una duración máxima de 60 minutos que es un tiempo aceptable para sesiones de meditación hogareñas. Si fuera necesario un tiempo mayor, por ejemplo dos horas, es necesario simplemente hacer que el prescaler del timer 1 divida por dos.

Para esto es necesario buscar la parte del programa donde dice:

movlw B'00000101'
movwf T1CON

...y substituirla con:

movlw B'00010101'
movwf T1CON

Cada vez que se actualiza el contador TimerCountH el micro lee también el valor del potenciómetro (que puede ser entre 0 y 255 según la posición) y compara este valor con TimerCountH, si TimerCountH es mayor que la lectura del potenciómetro quiere decir que se ha llegado al final del ciclo y por lo tanto el programa pone a "0" los contadores y llama la función que produce el sonido iniciándose un nuevo ciclo. La lectura continua del potenciómetro permite de modificar el tiempo "al vuelo".

Montaje y Calibración

Como pueden ver en el diseño el montaje es muy sencillo. El circuito impreso está pensado para que no sea necesario hacer conexiones externas. Cada componente externo (parlante, led, batería, interruptor y potenciómetro) tiene su respectivo conector en la plaqueta de control. Yo he construido dos versiones, en la primera he usado una lastra de policarbonato plegada mientras que para el segundo modelo he construido una caja de madera. En la sección de descarga encontrarán una hoja pdf con el dial de los tiempos.

MediTimer_foto03.jpg
Montaje de la primera versión del timer. El circuito impreso de esta versión es diferente respecto a la versión final.

Lo pueden pegar directamente donde está montado el potenciómetro. Una vez hecho esto, giren el eje del potenciómetro completamente hacia la izquierda (mínimo). Con un tester midan la tensión en la pata central, debería ser 0V. Giren el eje lentamente hacia la derecha hasta que la tensión comienza a aumentar un poquito. En esa posición coloquen la perilla en modo tal que el indicador señale el tiempo "0"

Elenco de materiales

2 resistencias 2,2K 1/4W
1 resistencia 10 ohms 1/4 W
1 resistencia 470 ohms 1/4W
3 capacitores 100nF
2 capacitores electrolíticos de 22uF 16V (se pueden usar otros valores entre 10uF y 47uF)
1 transistor BC337
1 regulador 78L05
1 PIC12F675 (para programar)
1 zócalo para circuito integrado 8 pin
4 conectores de 2 vías
1 conector de 3 vías
1 parlante pequeño
1 interruptor de encendido
1 conector para batería de 9V
1 batería de 9V
1 potenciómetro de 100K lineal
1 led de alta luminosidad (color a gusto)
1 perilla indicadora para potenciómetro
1 circuito impreso

mediTimer_dial.png
Dial con los tiempos (en el archivo zip al final dela artículo encontrarán la versión PDF para imprimir).

Antes de terminar les cuento que yo no tengo la costumbre de meditar. De cualquier manera no pierdo la esperanza, especialmente ahora que me he armado el temporizador adapto 🙂 .

Como de costumbre les dejo para descargar el programa para el micro, el código fuente escrito en assembly (no existe la versión en C), el diseño del circuito impreso en KiCad y también en PDF, listo para imprimir. Espero que el proyecto les haya gustado. Hasta la próxima!!

logo_descarga

[MediTimer-circuito impreso y programa] (3069 descargas )

 

Los contenidos de este blog son originales y están bajo una licencia Creative Commons BY_NC_SA

MediTimer: un timer para meditar ultima modifica: 2015-05-04T18:59:42+02:00 da inventable

19 comentarios sobre “MediTimer: un timer para meditar”

  1. Hola Gabriel. Interesante y práctico como todos tus circuitos. Lástima que todavía no domino la programación PIC. Aún asi, siempre los guardo en mi archivo para futuras consultas.
    Un saludos.
    Suso.

    Un abrazo Suso 🙂

  2. muy bueno, me gusta, no entiendo mucho de electronica pero en una oportunidad, no hace mucho saque un temporizador de 12 vcc , de sus inventos, lo necesitaba para temporizar el disparo de la sirena de la alarma que realize para mi casa, la verdad un espetaculo, …lo que necesitaria es realizar una fuente para cargar una bateria de 6 v x 10 amp. es para un auto de juguete, desde ya muchas gracias, un abrazo

    Gracias por tus palabras!!

  3. Muy buen trabajo!,

    He programado muy poca cosa en PIC pero lo conozco, aunque me gustaría montarla. Para obtener el circuito impreso dónde lo podría conseguir?

    Saludos

    Hola Jose, el circuito impreso lo debe hacer uno mismo. De cualquier manera, gracias a la simplicidad del circuito es posible armarlo en una placa universal con islas.

  4. Hola Gabriel, me alegro que estés por aquí de nuevo, es de agradecer tu trabajo, te seguiré hasta que te canses..

    Gracias Fernando!! 🙂

  5. Hola, Gabriel, me ha gustado el temporizador, sencillo y efectivo. Y la caja de madera te ha quedado preciosa 😉

    Saludos.

    CacHarrytos.

    Gracias Harry, estoy experimentando con la madera y me encuentro bastante bien.
    Quiero agradecerte por tu presencia constante en Inventable.
    Un abrazo.

    Gabriel

  6. Hola Inventable, muy buen proyecto, con buenas explicaciones.
    Lamentablemente no todos sabemos programar en asembly, por favor podrías guiarnos como hacer este timer en basic pro, ya que es por donde mucho iniciamos?
    Tengo un problemilla, ya lo hice en basic pro, haciendo pause y next for, pero se presento una interferencia, cada vez que se enciende la lavadora o refrigeradora, el pic es como si se saltara un paso, estuve investigando y encontre que puede ser a causa de los EMI, por favor podrías sugerirnos alguna manera de solucionarlo sin mucho hardware adicional, mas bien en software? Gracias por tu ayuda.

    Hola, no tengo experiencia en la programación basic para los PIC. No sabría por donde empezar. Respecto a las interferencias, no tendría que suceder. Me surge la sospecha que haya algún problema en el circuito tuyo o en la programación de los fusibles del PIC. Verifica con un multímetro la tensión de alimentación después del regulador (5V) y que las conexiones entre componentes sean buenas. Si no encuentras la vuelta abrí un hilo en el foro

  7. Hola Gabriel, permiteme felicitarte por tan magníficos tutoriales, de verdad se ve que te esmeras en tu trabajo. Quería hacerte una consulta por esta vía: ví el temporizador que hiciste de 12v y acabo de leer este post, estoy buscando un temporizador para 12 voltios que pueda regular un tiempo mas largo como vi que tenia este de 9v. En el proyecto de 12v, usas un trimer pequeño, este se podría sustituir por un potenciometro más grande (para que sea más fácil de manipular y ajustar)?? como le daría más tiempo a mi circuito?? por lo demás excelente todo, te felicito nuevamente. Gracias por tu aporte

    1. Hola Eliezer, los dos temporizadores son muy distintos, el de 12V («TEMPORIZADOR MUY SIMPLE») mide la descarga de un capacitor mientras que el meditimer usa un microcontrolador. Para el temporizador muy simple, puedes aumentar el tempo reemplazando el capacitor de 100uF por uno más grande, por ejemplo de 470uF.
      Gabriel

  8. Saludos. Este timer, con una leve modificación, podría usarse en la cocina, para que no se quemen las preparaciones. Por ejemplo, cuando una receta lleva 20 minutos en el horno, se pone en 20 el potenciómetro y al final suena una chicharra o buzzer. Excelente.
    Quiero preguntar algo:¿Por qué usas el valor de 55 ms y no otro? Alguna razón debe haber para escoger ese valor.
    Gracias!!!!

    1. Hola Edwin, te contesto de metido, pero creo que la respuesta a tu duda está en el texto de este mismo artículo, donde dice:
      «El tiempo de 55 mSec. es necesario para poder obtener una duración máxima de 60 minutos que es un tiempo aceptable para sesiones de meditación hogareñas. »
      No he analizado el código, pero seguramente sea un valor que le permita optimizar el código. O que esté condicionado por el tiempo de alguna tarea entre interrupciones….

      saludos
      HJ

  9. Edwin, el motivo es muy sencillo.
    55 ms = 3600 s / 65535
    O sea: 1 hora / valor máximo del contador.

    Saludos

  10. Soy tu fan, un ejemplo de minimalismo de calidad.

    Todo reducido a la mínima expresión, pero con todos los detalles tenidos en cuenta para que funcione como debe, es decir, quitas todo lo superficial, pero nada de lo importante, eso no lo suelo ver mucho.

    Y otra cosa que admiro, es la estética que logras en tus proyectos y en tu sitio web.

    Me inspiro con tus trabajos!!!

    Saludos desde Argentina

Los comentarios están cerrados.