Mug Temperature Indicator

Este año en el trabajo hicimos el amigo invisible y constaba de hacer una taza… por supuesto que el diseño de la taza tenía que ser bonito, pero se me ocurrió darle un pequeño toque con un add-on que permita aportar algo más a la taza.

A mi personalmente me gusta tomar infusiones antes de dormir: valeriana, melissa… pero tengo un problema… y es que muchas veces la caliento y tengo que andar probando hasta que llega a la temperatura adecuada. Con eso, se me ocurrió: qué tal hacer un dispositivo que te mida la temperatura de la taza y lo puedas ver visualmente.

Y aquí lo tenéis, un posa-tazas que te mide la temperatura de la misma para saber cuando la bebida está lista para tomarse sin escaldarse la lengua.

 

El tiempo apremiaba mucho, tenía cosa de un mes para sacar el prototipo… Y funcionó bastante bien, pero no me dio tiempo a repensar conceptos y hardware, de modo que esa primera versión tenía:

  • pila de 9v integrada (que, por mis cálculos, da para 10horas de vida como mínimo)
  • calibración fija en 5 rangos de temperatura
  • transiciones de color suaves para cambios de temperatura.
  • Modo sleep para ahorrar energía.

Una vez terminado y dado que la idea me gustó para mis infusiones, me fabriqué una propia pero con algunas mejoras:

  • Batería de ion-litio integrada. Carga a través de usb tipo c
  • Calibración por defecto
  • Modo de calibración: se ha incluido un botón para que se puedan definir los rangos de temperatura sin tener que reflashear.
  • Posibilidad de volver a la calibración por defecto con el mismo botón.
  • Protección contra bajo voltaje: si se detecta bajo voltaje de la batería, el posa tazas entra en modo bajo consumo para no drenar la batería por debajo del nivel seguro.

Componentes:

  • Sensor de temperatura ds18b20.
  • Resistencias varias (ver esquemático abajo)
  • 3 leds RBG 5mm ánodo común.
  • Arduino nano
  • Batería 18650 y portabaterías.
  • 5v booster module (En aliexpress son superbaratos!)
  • Módulo carga batería ion-litio (aliexpress, son muy baratos, menos de 3 euros)
  • Interruptor
  • Módulo hembra usb tipo c.
  • Perfboard.
  • Alambre wrapping awg30
  • Tornillos y una dremel (o minitaladro) para mecanizado.
  • Epoxi

Esquemático:

Realmente el montaje es muy sencillo:

  • Tres leds RGB puestos en paralelo dan luz suficiente para mi diseño. La corriente consumida permite incluso alimentarlos desde el puerto del arduino sin utilizar bufferes de corriente.
  • El botón de calibración conectado a un puerto digital del arduino
  • El sensor de temperatura ds18b20 tiene que tener una resistencia de pullup en el pin de datos, es lo único complicado.

Adjunto aquí el esquemático.

 

 

 

 

 

La parte de arriba va fijada en el cuerpo con epoxi.

He soldado todo el conjunto en una perfboard de 5×7 y fijado arriba con tornillos. Por eso, una dremel o un minitaladro es muy útil.

 

Consideraciones técnicas

La idea detrás de este proyecto es la misma que expliqué en la sensorial lamp: Utilizaré el modelo de color HSV para transformar la temperatura en un color y así obtener un espectro continuo del mismo.

Para poder regular y modelar un poco el color con la temperatura subjetiva, he dividido el rango de temperatura posible del sensor y al que puede estar la taza en rangos. Cada una de las barras verticales que se ven en la imagen inferior es un threshold configurable en el software y, además, uno de los thresholds calibrables con el botón de calibración.

 

  • Cold zone: Por debajo de la temperatura de la Cold zone, considero que la bebida está fría. Por defecto, 28 grados
  • Warm: entre 28 y 34 grados: la bebida está templada
  • Hot: Bebida caliente, temperatura ideal (34 – 45 grados)
  • Very hot: Bebida quema un poco (34-45 grados)
  • Very very hot: la bebida quema. (45-55 grados)
  • Very very very hot: hirviendo (mayor que 55 grados)

Como he dicho, estos rangos son calibrables a través del botón, como se explica a continuación.

Calibración

Para calibrar la taza, podéis seguir esta secuencia:

  • Encended el soporte sin la taza. Iluminará en azul. Id llenando la taza de bebida muy caliente
  • Presionad el botón de calibración por dos segundos. El soporte iluminará fijo en violeta.
  • Ahora poned la taza encima y esperad a que se estabilice la temperatura (esto es a ciegas, esperad cinco minutos o así).
  • Cuando la taza esté muy-muy caliente, pulsad una vez el botón para registrar la temperatura. Al hacerlo, el botón cambiará a Rojo.
  • Esperad a que la taza se enfríe. Cuando consideréis que la bebida tiene la temperatura correspondiente al color rojo, presionad de nuevo. Al hacerlo, la taza cambiará al amarillo.
  • Repetid esto con el resto.
  • Al acabar, la taza se reiniciará ya con los valores recién calibrados.

Si queréis volver a los valores por defecto:

  • Presionad dos segundos para entrar en el modo calibración. La taza se iluminará en violeta.
  • Presionad dos segundos de nuevo. La taza saldrá del modo calibración y cargará los valores por defecto.

Diseño 3d

Como siempre, para el diseño 3d he utilizado tinkercad. He utilizado un infill bastante grande, del 60% para la parte superior y laterales, debido a que en el fondo, va a soportar temperaturas altas. Para el resto, he bajado el infill a 30.

He utilizado un pla de color naranja-dorado que tenía por casa, y un pla traslúcido para los leds. Las letras del nombre las he impreso en negro y pegado con epoxi.. no estoy demasiado convencido de esto, probablemente en siguientes iteraciones me lo cepille.

El diseño lo podéis descargar de

  • Tinkercad: https://www.tinkercad.com/things/gfQnq1QAxi1-mugtempindicator
  • Thingiverse: https://www.thingiverse.com/thing:6958709

Código

El código del arduino lo podéis descargar de mi repo de gitlab: https://gitlab.com/mcarpacho/mugtempindicator

Si os fijáis en el código, hay una macro para inyectar valores personalizados de temperatura. Esto lo hice conectando un potenciómetro de 1k al pin A1. De esta manera, podía barrer todo el espectro de temperatura y ver si las transiciones eran correctas.

Una cosa interesante que he aprendido… Me he encontrado con que el brillo del led verde era aparentemente mucho mayor que el brillo del azul y del rojo. Pongo un ejemplo: estando en temperatura fría (menor que 28 grados), y solo el led azul encendido, justo al empezar a subir la temperatura para transicionar al verde, el primer step del color verde era tan grande que se notaba un escalón, como si algo pasase ahí y se encendiese el led de golpe.

He estado días dándole vueltas, haciendo pruebas, cambiando las resistencias de los leds..y nada aparentemente funcionaba. Hasta que se me ha ocurrido una solución interesante. El problema venía dado porque el brillo aparente del led verde es mucho mayor que el del azul y rojo, con lo cual está descompensado: para un mismo duty, el led verde brillaba mucho más que sus compañeros. Podía bajar la resistencia de rojo y azul para intentar igualarlos, pero ya juego ahí con el detrimento del consumo. O podía subir más el led verde de resistencia… Probando no me acababa de convencer, hasta que di con la solución: si con el step más pequeño, tenía un brillo aparente muy alto, podía hacer el step mucho más pequeño… y esto se consigue aumentando la frecuencia del pwm en ese pin.

He observado también un pequeño problema con ciertas tazas: El sensor de temperatura lo tengo ligeramente elevado de la superficie donde reposa la taza. Por tanto, en una taza completamente plana, el sensor está en contacto con la superficie de la taza, con lo cual el calor pasa directamente de uno a otro. La sorpresa me la he llevado con otras tazas que tienen una pequeña concavidad en la parte inferior, y ésta hace que el sensor no entre en contacto con la taza, sino que queda una pequeña separación entre la taza y el sensor. Esto provoca que la medición de la temperatura no sea demasiado exacta… solución: subir un poco más el sensor… o utilizar una taza que no tenga ese problema.

Resultado

La verdad es que ha sido un proyecto divertido y ha supuesto algún pequeño reto técnico. Cumple su cometido perfectamente y, puedo decir que es mi compañera de infusiones a partir de ahora.

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *