«

»

Sep 17

Termómetro digital conectado al teléfono

No hace mucho me llego una muestra que había pedido a Maxim de un sensor de temperatura del tamaño de un transistor, capaz de medir en el rango entre -55ºC y 125º con una resolución de 9 bits. Me interesa especialmente porque tiene un interface de 1 hilo para medir directamente la temperatura en digital.

Aquí os dejo la hoja de características completa:

http://pdfserv.maximintegrated.com/en/ds/DS18S20.pdf
 

Tenemos que alimentar una pata, poner otra a 0V y la del medio con una resistencia de pull-up de 4,7K se usa como bus de datos con el microprocesador.

Vamos a conectar la sonda a un PIC y este, a través de bluetooth, enviará los datos a una aplicación en un teléfono android.

Tenemos unos drivers para facilitar la comunicación con el termómetro en:

 http://www.picprojects.net/ds1820/index.html
 

Utilizaré un 16F886 y un módulo HC-06, conectando el bus de datos del termómetro al pin B0 y las señales RX y TX del módulo bluetooth a los pines C6 y C7. El programa busca en el bus un termómetro y envía por el puerto serie cada segundo el valor de temperatura leído de la primera sonda encontrada. Es fácil modificar el programa (y el hardware) para añadir tantos termómetros como queramos en el mismo bus.

Aquí os dejo los fuentes en CCS del programa del PIC:

Fichero sólo visible para usuarios registrados
 

Si todo está bien conectado el PIC enviará continuamente el valor en ºC medido en el termómetro por el puerto serie hacía el módulo bluetooth y este a su vez hacia el dispositivo que queramos conectar. En este caso el teléfono.

Podemos ver si funciona todo bien antes de continuar, utilizando un emulador de terminal en el teléfono (o en un ordenador) y emparejando adecuadamente el módulo HC06.

Emulador de terminal

El paso siguiente es crear una aplicación en android, que se conecte al módulo bluetooth del PIC y represente en la pantalla los valores leídos. Basta modificar ligeramente la aplicación que ya realizamos en la entrada “Conectandose al autómata con el móvil (4/4) – Eclipse” adaptando el aspecto de la pantalla y eliminando lo que sobra.

El resultado lo adjunto a continuación:

Fichero sólo visible para usuarios registrados

Cargamos en el teléfono, conectamos y listo.

Algunas posibles ampliaciones que se pueden hacer:

  • Usando una batería de móvil, o dos pilas AA, se pude meter todo en una caja de plástico muy pequeña para tener una sonda exterior de temperatura como las de las estaciones meteorológicas, con un poco más de programación podemos guarda la temperatura máxima y la mínima o incluso hacer un histórico.
  • Añadiendo poco más que un relé conectado a una salida, podremos fabricar fácilmente un termostato para la calefacción, el aire acondicionado, o la pecera. Cuidado con el circuito que carguemos en la salida del pic, la corriente máxima admisible es de 25mA, con lo que conviene poner un transistor o algún tipo de driver como el ULN2803.

 

13 comentarios

2 pings

Ir al formulario de comentarios

  1. xoto

    Muchas gracias por enseñarnos tu trabajo.
    Me parece una solución muy elegante y una aplicación muy práctica

  2. Saba Salva

    Hace tiempo que buscaba algo similar para poder medir la temperatura a distancia.
    Mi intención es registrar las mediciones en un pc (mysql) vía bluetooth pero me quedan unas dudas.
    Mis conocimientos de electrónica son muy básicos, me podrías facilitar la lista completa de componentes?

    Gracias por tu trabajo
    Saludos

    1. David

      Lo primero que necesitas es un PIC, lo más fácil es conseguir una placa entrenadora que ya lo tenga todo soldado, las hay por menos de 7$. También necesitas un programador para pic, para mi el de mejor relación calidad/precio es el pickit2 y no hace falta que sea el original de microchip, porque hay copias muy buenas y baratas.
      Para la comunicación bluetooth necesitas un módulo HC-06, deberías buscar uno de los que van soldados en una placa de adaptación de 5v a 3.3v. Puedes encontrarlo fácilmente en internet (p.e. ebay).
      Para medir la temperatura necesitas un DS1820 que puedes conseguir como “sample” en la página de Maxim, o comprarlo también en ebay o en cualquier tienda de electrónica grande, además necesitas una resistencia 4,7K y de 1/4 de watio.

      Un saludo

  3. Saba Salva

    Gracias por la información.
    En http://www.piccircuit.com he visto la placa iCP23 iBoard Tiny que es muy barata y supongo que serviría.
    También tienen programadores.
    El módulo HC-06 tengo este, espero que sirva
    http://www.ebay.es/itm/330911317738?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
    Del DS1820 he pillado 4 unidades por ebay.

    Por cierto, cual es la distancia máxima a la que puede estar el sensor?

    1. David

      La placa que dices te puede valer perfectamente, yo tengo una ICP06 que me gusta más y tiene cristal de cuarzo y mejor acabado, pero veo que no está en stock. También te puedes hacer una con poco más que un zócalo y placa pretaladrada de tiras paralelas siguiendo los pasos de esta entrada del blog: http://blog.deinventos.com/realizar-una-placa-entrenadora-para-pic-muy-sencilla
      Tendrás que configurar el PIC para que utilice el oscilador interno a 8MHz por ejemplo.

      Para el HC06 te vendría mejor uno de estos: http://www.ebay.es/itm/1pcs-Slave-HC-06-Wireless-Bluetooth-Transeiver-RF-Module-Serial-4p-Port-line-new-/230984580176?pt=LH_DefaultDomain_0&hash=item35c7c0fc50#ht_2197wt_1165
      porque lleva regulador y adaptación de tensiones de las señales y lo puedes usar lo mismo a 5V que a 3,3V. El que tu pones también vale, pero sólo aguanta alimentaciones entre 3V y 4,2V y te va a costar soldarlo porque no lleva la placa adaptadora. Si aun así quieres usarlo yo alimentaría el conjunto por ejemplo con una pila de litio o una batería (de 3,6 o 3,7V) que está dentro del margen de tensiones y te permite unir directamente las señales, o con una alimentador de 3.3V (pero por debajo de 3.4V pierdes precisión en la medida de DS1820).

      La distancia máxima del sensor no tengo ni idea, pero puedes buscar en el datasheet o en la página del fabricante, eso si, yo tengo uno alimentado a 5V que está metido con un tubo de silicona en un acuario a un metro y medio de distancia del pic que lo maneja y nunca me ha dado problemas, más de esa distancia no he probado nunca.

  4. Saba Salva

    Bueno, casi tengo todo el material, solo me falta la protboard que me llegará esta semana.

    Una pregunta, existe algun tipo de sensor que ademas de la temperatura también mida la humedad relativa y que se puedan conectar varios en el mismo bus como el DS1820?

    1. David

      Yo no conozco ninguno. El DHT11 o el DHT22 que miden humedad además de temperatura sólo se pueden poner de uno en uno, y Maxim en la página no tiene ningún elemento 1-Wire que mida humedad.

  5. Saba Salva

    Después de un par de pruebas no consigo que funcione
    La alimentación la saco de un transformador que da 4,5V
    El DS1820 pata 1 a negativo, pata 2 al J3-B0 y la pata 3 a +4,5V
    En la regleta verde del ICP06 negativo a GND y +4,5V a VS1. Se enciende el led verde fijo.
    Solo queda el RX y TX de las dos placas.
    J8-C6 TX a RX del HC-06
    J8-C7 RX a TX del HC-06
    Me parece que no me olvido de ninguna conexión

    Software
    Me baje el código del pic y lo compile con PCWH compiler 4.032 sin dar ningún error.
    Cargué el .hex resultante al pic y lo arranqué.
    La utilidad para android de la web no me funciona, me la he bajado, la he renombrado a .apk pero no se instala.

    Conecto bien con el HC-06 desde android y desde linux (se queda el led rojo fijo).
    He probado con la aplicación de android Bluetoot Serial Controller, conecta pero no recibo nada.
    Desde linux con minicom se queda como colgado.

    Donde tengo el fallo?

    aquí hay una foto del montaje
    http://i41.tinypic.com/2isxgyu.jpg

  6. Saba Salva

    Bueno, ya encontré el fallo, era la velocidad de comunicación, modifiqué el main.h para que conectara a 9600 que es la que viene por defecto configurada en el DS1820.

    He visto la placa del pic alimentada con una pila de 9V, se podria alimentar también el modulo HC-06 i el DS1820 ?
    El próximo paso es substituir el DS1820 por un DHT22

    1. David

      La placa con el PIC tiene un regulador de tensión con lo que puedes alimentarla directamente a 9V, pero para el resto de los elementos deberías usar los 5V ya regulados que te salen de la placa (en los pines marcados como +).

  7. Saba Salva

    gracias David, así lo haré.

    Lo que no me acaba de funcionar el la app del teléfono,
    No conectado > Conectando > Unable to connect device
    Tampoco es que lo necesite ya que registro las temperaturas en un Raspberry pero me pica la curiosidad.
    Puede ser por la velocidad?
    Tengo el dispositivo vinculado y con otra app que escucha el puerto serie funciona bien

    1. David

      ¿Has configurado la dirección mac del adaptador bluetooth? En el programa está puesto a 00:00:00:00:00:00, pero lo tienes que cambiar por la dirección correcta de tu adaptador (la puedes ver por ejemplo con el Blueterm cuando te vas a conectar).

  8. Saba Salva

    Bueno ya funciona todo pero tengo dos dudas,
    una es referente al consumo, una pila de 9V Sony ha durado 11 horas y media, una de los chinos 4 horas
    pensé que gastaría menos, mañana pruebo con una batería de 6V y 4Ah
    la otra duda es si a parte de la temperatura podría enviar también el voltaje de la batería.

    Gracias por todo David
    Saludos

  1. Bitacoras.com

    Información Bitacoras.com…

    Valora en Bitacoras.com: No hace mucho me llego una muestra que había pedido a Maxim de un sensor de temperatura del tamaño de un transistor, capaz de medir en el rango entre -55ºC y 125º con una resolución de 9 bits. Me interesa especialmente porque…..

  2. Psicrómetro » Blog de inventos

    […] « Termómetro digital conectado al teléfono […]

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies