Sensor de temperatura con Arduino

En esta entrada voy a explicar como medir la temperatura con un sensor electrónico con Arduino y representarla gráficamente, en tiempo real, con Python.

Desde hace bastante tiempo vengo dándole vueltas a la idea de tener una estación meteorológica  en la (hipotética) clase para que los (hipotéticos) niños se familiaricen con los aparatos de medida y comiencen a trabajar con representaciones gráficas de datos, errores de medida, relaciones entre variables… además de con cuestiones básicas sobre meteorología. Aunque en el mercado hay estaciones meteorológicas no demasiado caras, fabricarla uno mismo tiene la ventaja, no sólo del bajo precio, sino de ser una forma de introducir cuestiones básicas de electrónica e informática. Por ahora comenzaremos midiendo la temperatura.

Nos va a hacer falta:

  • Un sensor de temperatura, que es un dispositivos que transforman los cambios de temperatura en cambios de señal eléctrica para ser finalmente procesada por un dispositivo  electrónico. En este caso, usaremos el TMP36. Este sensor es bastante preciso y muy sencillo de usar. Funciona con un rango de voltaje de 2.7V a 5.5V y viene calibrado directamente en grados centígrados (ºC). Cuesta 1.5 euros, aproximadamente.

Hay que tener en cuenta que con cada grado centrígrado el voltaje cambia 10 mV y que a la temperatura 0 le corresponde un valor de 500 mV.  Es decir:

Temperatura (grados) = (Temperatura (voltios) – 500/1000) / (10/1000)

o lo que es lo mismo:

Temperatura (grados) = (Temperatura (voltios) – 0.5) *100

Así, a un volaje de 700 mv (0.7 V) le corresponde una temperatura de 20 ºC.

  • Una placa de pruebas o protoboard. En realidad no es necesaria pero la usaremos porque es más fácil montar los componentes con ella.
  • Una placa Arduino Uno. Cuesta unos 20 euros pero la podemos usar para otra cosa cuando dejemos de utilizar la estación meteorológica.
  • Cables.
  • Un ordenador (da igual que tenga Linux, Mac OS o windows) en el que debemos instalar algunos programas. Se trata de software libre que se puede bajar gratuitamente de internet:
    • El software de Arduino.
    • El lenguaje de programación Python.
    • La librería numpy, para hacer cálculos científicos con Python.
    • La librería matplotlib, que nos permite hacer gráficas 2D con Python.
    • La librería pySerial, para acceder a los puertos serie de Arduino.

El montaje con Arduino es realmente sencillo. Sigue este esquema:

Esquema del montaje del sensor TMP36

Esquema del montaje del sensor TMP36 (la figura está hecha con fritzing)

Que en la placa se vería así:

Montaje con Arduino del sensor TMP36 (figura hecha con fritzing).

Montaje con Arduino del sensor TMP36 (figura hecha con fritzing).

La salida del sensor va a uno de los puertos analógicos del arduino. Para leerlo se escribe un  programa indicando el puerto con la salida y el factor de conversión de voltios a temperatura. Yo lo  he bajado de la página de Arduino así que no lo voy a copiar aquí. Con este programa, los datos de la temperatura irán aparaciendo en una ventana que se abre al pinchar sobre el botón de la derecha arriba de la interfaz de Arduino (el que tiene como una lupa, como se muestra en la figura):

interfaz_arduino

Finalmente, para hacer que los datos se vayan representando automáticamente en una gráfica a tiempo real, he creado el siguiente programa en Python:

Programa para medir la temperatura con Python (se puede bajar pinchado sobre la imagen).

Programa para medir la temperatura con Python

Para ejecutarlo, simplemente hay que escribir en el terminal:

>python temperatura.py

El resultado se puede ver en el siguiente vídeo. He hecho que la temperatura suba tocando el sensor y que baje acercando un cubo de hielo.

Anuncios
Deja un comentario

5 comentarios

  1. nacho

     /  7 de octubre de 2015

    Gracias por su tiempo ,funciono perfecto en ubuntu 12.04 32 bits ,pero ahora en ubuntu 14.04 64 bits error “Traceback (most recent call last):
    File “./temperatura.py”, line 25, in
    data = ser.readline().rstrip()
    File “/usr/lib/python2.7/dist-packages/serial/serialposix.py”, line 460, in read
    raise SerialException(‘device reports readiness to read but returned no data (device disconnected?)’)
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)”

    Y no se como solucionarlos ,agradezco su tiempo.

    Responder
  2. Buenas Soy principiante en phyton , Cuando le mando F5 me dice datos insuficientes para evaluar .Si alguien tiene conocimiento del error ayude , please

    Responder
  1. Sensor de temperatura con Arduino | El traje nuevo del emperador
  2. El movimiento maker | El traje nuevo del emperador

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: