Archivo de la etiqueta: temperatura

Leer temperatura de un sensor DS18B20 con Raspberry Pi

Mediante un sensor DS18B20 podemos obtener una lectura de temperatura fácil y precisa. Este sensor puede ser una gran aliado para nuestro montajes. Este sensor de temperatura utiliza el protocolo de comunicación 1-Wire, lo que nos permite una facil comunicación con el, y la posibilidad de crear un red de sensores, sin tener que ocupar muchos de nuestros pines de entradas y salidad de datos de nuestro Raspberry Pi.

Materiales usados

Raspberry Pi 2 Raspberry Pi 3 Modelo B (1,2 GHz Quad-core ARM Cortex-A53, 1GB RAM, USB 2.0)

Raspberry Pi 2 Model B – Placa base (ARM Quad-Core 900 MHz, 1 GB RAM, 4 x USB, HDMI, RJ-45)

Sensor temperatura DS18B20 DS18B20 con carcasa de acero inoxidable
protoboard Protoboard
cables_union Cables de conexión
Resistencia 4k7 Resistencias varias
RPi GPIO Breakout Pi 2 Model B & B+ RPi GPIO Breakout Pi 2 Model B & B+

Esquema de montaje DS18B20 y Raspberry Pi

El montaje del sensor en un sencillo, la alimentación del sensor lo haremos mediante el pin de 3,3v del conector GPIO (pin 1), al clave rojo del sensor, en mi caso, si utilizamos la versión como un transistor, la conectaremos al pin más a la izquierda. La masa, la sacaremos el pin 6 del GPIO, y lo conectaremos al cable negro, o al pin de la derecha del sensor. La salida de datos la conectaremos al pin 4, al cable amarillo, o al pin del medio del sensor. Para terminar el montaje, tendremos que situar una resistencia de 4K7 Ohm, entre el pin positivo del sensor y el pin de datos.

Esquema de montaje del sensor DS18B20 con un Raspberry Pi

Esquema de montaje del sensor DS18B20 con un Raspberry Pi

El sensor DS18B20, permite conectar varios sensores al mismo canal, es decir, que si queremos añadir más sensores DS18B20 a nuestro circuito, no tendremos que ocupar más pines de datos de nuestra raspberry, colo tendremos que conectar cada uno de los pines del sensor al mismo circuito que el primero.

Ejemplo de montaje de varios sensores DS18B20 a una Raspberry Pi.

Montaje de varios sensores DS18B20 a una Raspberry Pi
Montaje de varios sensores DS18B20 a una Raspberry Pi

 

Comprobando la instalación de los sensores DS18B20

Como todas las comunicaciones que Linux hace con cualquier dispositivo, ya sea puertos serie, USB, comunicaciones I2C, etc. La forma de trabajar la Raspberry Pi con el sensor de temperatura DS18B20 es creando un fichero, donde el sensor escribe los datos devuelto. Esta comunicación la realiza mediante el bus 1-Wire.

Para comprobar que nuestra Raspberry Pi lee todos los sensores que tenemos instalados, solo tendremos que mirar cuantas carpetas con el inicio “28” tenemos dentro del directorio que maneja las comunicaciones con el bus 1-Wire. Cada una de estas carpetas que comienzan por “28” corresponde con el numero de serie del sensor de temperatura.

Cada una de estas carpetas que comienzan por “28” corresponde con el número de serie del sensor de temperatura. Si faltase alguna carpeta, habría que comprobar la conexión de ese sensor.

Lectura del sensor DS18B20 con una Raspberry Pi

Para leer los datos proporcionados por el sensor de temperatura DS18B20 con nuestra Raspberry Pi solo tendremos que acceder a cada una de las carpetas, y leer los datos que hay dentro del fichero “w1-slave”. En este fichero tendremos el valor de la temperatura leída por el sensor * 1000, es decir, para obtener el valor real de la temperatura, dividiremos el valor del parametro “t” / 1000.

Para hacer esto desde Python, haremos los siguiente.

Añadiremos las siguientes librerías, para el manejo de ficheros y directorios del sistema

Cargamos los módulos en el kernel del sistema para manejar el bus 1wire del conector GPIO del Raspberry Pi.

Cargamos la ruta donde se encuentra nuestro sensor.

Con esta linea cargamos el nombre del primer sensor de la lista disponible, para cargar las demás rutas solo tendremos que cambiar “[0]” por la posición deseada.

Lo siguiente que haremos es leer el fichero “w1_slave”, para leer el valor de la temperatura del sensor. Leemos el fichero y cargamos todas las lineas disponibles en una variable.

Una vez que ya tenemos el contenido del fichero, buscamos el parámetro “t” donde esta la temperatura. Una vez que encontramos la temperatura, la multiplicamos por 1000, par obtener el valor real.

Con esto ya tendríamos el valor del sensor, con su valor real, dentro de la variable “temperatura”.

Obtener la temperatura con Arduino y un termistor

En este proyecto vamos ha ver como podemos obtener la temperatura mediante la utilización de un termistor. Lo primero, que es un termistor, esta es una simple resistencia que varia según la temperatura que tenga, con el valor devuelto por la resistencia y una pequeña formula podemos calcular que temperatura hace.

Esquema del circuito:

El esquema de este circuito es muy sencillo, esta basado en un simple divisor de tensión, en este caso quedaría de la siguiente manera.

[singlepic id=3 w=320 h=240 float=center]

Este esquema es el utilizado en la mayoría de sensores, simplemente cambiando el termistor, por un lcr, por ejemplo, tendríamos un sensor para detectar la luminosidad.

En mi caso el termistor no es de 10 k, como se muestra en el esquema, sino que es de 100k (NJ28 NTC Thermistor,2.8mm,100K,1%), esto no varia mucho lo fundamental del sistema, ya que en el código para el arduino , le diremos tanto el valor de resistencia del termistor, como el valor de la resistencia secundaria.

Esquema de la conexión en al arduino:

[singlepic id=10 w=320 h=240 float=center]

Para calcular la temperatura necesitamos saber el valor beta de nuestro termistor, normalmente, este valor lo suele facilitar el fabricante de la resistencia, pero si el fabricante no nos lo da o no sabemos el fabricante, lo podremos calcular sabiendo la temperatura a la que esta el termistor, apuntamos el valor de resistencia ha esa temperatura y la temperatura en grados Kelvin, después elevamos la temperatura y volvemos a puntar la resistencia y la temperatura. Cuanto mas diferencia de temperatura mas fiable sera el calculo.

Por ejemplo, ponemos el termistor sobre un hielo, con otro termómetro miramos la temperatura, por ejemplo T1 = 3º + 273,15 y resistencia R1 = 34500 Ohm. Luego lo metemos el agua caliente y hacemos la misma comprobación T2 = 80º + 273,15 y R2 = 134 Ohm. Con esos datos aplicamos la siguiente formula:

beta=(log(RT2/RT1))/((1/T2)-(1/T1))

Quedando de la siguiente manera:

beta = (log(143 / 345000)) / ((1/353,15)-(1 / 276,15))

beta = 4283,9970482988 = 4284

Código para el Arduino.

Y con esto ya tendríamos un termómetro digital con nuestro Arduino.