Electroensaimada DIY, Raspberry Pi, Arduino ...
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje

Control temperatura con Raspberry Pi Expansion Board.

Vamos a realizar un proyecto de control de temperatura de una habitación, este es uno de los muchos proyectos de domótica que podes realizar con la Raspberry Pi Expansion Board. Para ello usaremos un lm 335 que soldaremos en el área de prototipado. 
Puedes comprar la placa en la tienda que tenemos disponible.

LM 335 sensor de temperatura,

Este es un sensor que nos devuelve una tensión en función de la temperatura. Básicamente 10 mV/K en su modo mas simple y sin calibrar. Así que para las temperaturas (entre 0ºC y 45ºC) tendremos una tensión 2.73V y 3.18V. Este sensor puede medir desde -40ºC a 100ºC.
lm335.pdf
File Size: 298 kb
File Type: pdf
Descargar archivo

La forma de conectarlo es la siguiente:
Imagen
Imagen
Vemos que es suficiente conectar el pin + y el - a una resistencia de 1K. La alimentación V+ es recomendable 5V aunque con 3.3V funciona al menos con temperatura mas bajas.

Montaje en la Raspberry Pi Expansion Board.

Dado que la placa incluye un ADC el montaje para poder operar con la Raspberry es mínimo. En nuestro caso simplemente soldaremos la resistencia y el sensor en el área de prototipado. Finalmente conectaremos el CH0 a la salida del sensor del LM335. Este es el resultado en la placa.
Imagen
Imagen
Ahora pinchamos la placa encima de la Raspberry Pi y podemos comprobar que todo este correcto haciendo uso del ejemplo adc_2. A medida que aumente la temperatura tendria que aumentar el valor del ADC. Para ello usaremos un secador de pelo y veremos como rapidamene aumenta la tempertura. Si no sabes como compilar y ejecutar el programa pincha aquí.
Imagen
Montaje en la Raspberry Pi.
Imagen
Vemos que empezamos con 917 y a medida que le acercamos el secador aumenta la temperatura. En caso de acercarle algún ventilador o algo que tire aire frió, tendría que bajar.

Lectura temperatura

Ahora ya podemos leer el valor del ADC, el siguiente paso es pasarlo a ºC. En mi caso el control se hará por calor, es decir cuando la temperatura baje se encenderá una estufa eléctrica, esta se activara con el relé que incorpora la placa, hay que tener cuidado con la potencia de la estufa ya que muchas llegan a los 2000W el relé soporta unos 1150 así que no es conveniente  usar todo su potencia. En mi caso la estufa es de 1200W pero por precaución usare solo una de las barras que tiene, así que serán 600W, que son suficientes para calentar una habitación.
Se realizara un programa con un menú, en el tendremos el modo Manual, que nos permitirá encender y apagar la estufa y el modo Automático  el cual le indicaremos una temperatura de referencia y el intentara mantener esa temperatura.
 Para la conversion del ADC a ºC simplemente hacemos una regla de 3.

Imagen
Para ello usaremos la función readTemp() que nos devolverá el valor en grados centigrados. El siguiente código lee la temperatura y nos la enseña por pantalla. Hay que tener en cuenta que el sensor no esta calibrado por lo que si queremos mas precisión hay que calibrarlo.
temp.c
File Size: 1 kb
File Type: c
Descargar archivo

En mi caso en concreto comprobándolo con un termómetro me da unos cuantos grados de mas. Por lo que haré el ajusta por software y le restare un offset.
Imagen
Temperatura medida.

Menú usuario

Ahora vamos a proceder a realizar el menu de usuario. Este consta de dos partes:
  • Manual donde dentro de esta opcion esta encender y appagar.
  • Automático, aquí podremos imponer un valor de referencia y el control intentara mantenerlo.


Para ello preguntaremos al usuario mediante teclas que opción quiere usar.
control_temp.c
File Size: 1 kb
File Type: c
Descargar archivo

Imagen
Imagen
Imagen

Tarea de control

El ultimo paso es lanzar una tarea de control que lea la temperatura y que actué en función de ella. Pero esto lo tiene que hacer de forma independiente del resto del programa. Para ello pondremos un periodo de muestreo de 5 segundos ya que los procesos térmicos son procesos muy lentos.
Ademas hay que modificar un poco el programa anterior para que se refresque la temperatura, ya que el scanf para el programa. Para ello toda la parte de los print se pasa dentro del temporizador y la función menú nos queda con el scanf que elige modo Automático o Manual.
Dado que la impresión del menú esta en el temporizador de 5 segundos a veces tarda en responder ya que hasta pasado ese tiempo no actualizamos la pantalla.
control_temp2.c
File Size: 2 kb
File Type: c
Descargar archivo

Conexión de la estufa

Mediante el led del relé podemos ver como se enciende cuando la temperatura baja y como se apaga al subir esta. Ahora el ultimo paso es conectar la estufa al relé  Para ello usaremos un alargador o ladrón y le cortaremos el cable de la fase (marrón) de esta manera este cable sera el que puentearemos por el paso del relé. De esta manera cualquier cosa que conectemos al alargador podrá ser controlado por la Raspberry Pi. Tener cuidado con las conexiones y aseguraos de que estén bien fuertes, ya que si se suelta y toca la placa o la Raspberry pueden resultar dañadas.
Imagen
Imagen
Como podéis ver en mi caso he usado un ladrón, así puedo conectar mas cosas si en un futuro me apetece. Aunque siempre recordar el limite de 1150W. Normalmente las estufas es lo que consumen mas potencia ya que las luces son de 10W, 20W o 40W y no suponen un problema.

Ahora queda el ultimo paso, conectar la Raspberry Pi a la corriente mediante la entrada de 12V y el microUSB, y sobretodo a una red ya sea mediante wifi o ethernet, en mi caso tengo un PLC así que lo conectare por ethernet.
Imagen

Resultados

Finalmente podéis ver un vídeo del funcionamiento, en este caso lo controlo desde el pc, pero se puede controlar desde un teléfono solo necesitáis algún programa que os permita hacer un ssh. Para Android he usado ConnectBot.
Por ultimo hemos ido guardando los datos en un fichero  la temperatura, el relé y la referencia. Lo hemos dejado en modo Automático durante un tiempo para ver como regulaba la temperatura y este es el resultado.
Imagen
Evolución de temperatura y relé.
Al principio las activaciones del rele son debidas al modo manual, pero vemos que a partir de que ponemos la referencia a 24 y dejamos el modo automático  el sistema nos mantiene la temperatura dentro de los margenes. No olvidemos que hemos impuesto una histeresi de 1 grado, así que a 25 se apaga y a 23 se enciende.
He usado la estufa para controlar la temperatura mientras duermo, he situado la referencia en 18.5ºC . Como todos sabréis a las 5 o 6 de la mañana las temperaturas bajan unos cuantos grados, mi idea es irme a dormir y colocar esa temperatura como referencia, de esta manera cuando la temperatura baje se activara el control. En este ejemple he usado una histeresi de 0.5ºC es decir la temperatura oscila entre 18 y 19ºC. Después de toda la noche os enseño una parte de los datos, ya que hay muchísimos.
Si queréis ejecutar el programa por ssh y salir de la sesión  os fijareis que el programa se cierra. Para evitar esto hay una aplicación muy simple que guarda los programas en ejecución y se pueden retomar de nuevo.
Para ello tecleamos
sudo apt-get install screen
Esperamos que se instale y simplemente tecleamos:
screen
Ahora ya podemos iniciar el programa que queramos y salir.
Cuando volvamos tecleamos :
screen -r
Así recuperaremos la sesión.
Imagen
La bajada inicial es porque le había dado con el secador para comprobar que funcionase, pero después podemos ver como mantiene la temperatura entre 19.5 y 18 creo que son muy buenos resultados y la verdad que he dormido a gusto. 
Hemos terminado uno de los muchos proyectos de domótica que se pueden hacer con la Raspberry Pi Expansion Board, para introducir mejoras en este proyecto en mi opinión se podría mejorar la interfaz de usuario por ejemplo para que sea controlable desde un navegador web.
Con tecnología de Crea tu propio sitio web único con plantillas personalizables.
  • Home
  • Raspberry Pi
    • Básico >
      • Primeros pasos
      • IP estática
      • Montar Pendrive
      • Escritorio remoto
      • Conexión Wifi
      • no-ip
    • Intermedio >
      • Openelec Xbmc
      • OwnCloud
      • Torrent
      • Parpadeo led
      • Xbee
    • Avanzado >
      • SPI con WiringPi
      • ADC
      • Control temperatura
      • Alarma con aviso por mail
    • Raspberry Pi Expansion Board >
      • Control temperatura
      • Alarma con aviso por mail
  • Arduino
    • Motor paso a paso
    • Servomotor
    • PWM
    • Sensor Infrarrojo
    • SPI
    • I2C
    • Relé y LDR
    • Mando Radiocontrol
  • Blog
    • Contacto
  • CNC
    • Material
    • Codigo Maquina >
      • Leer el fichero
      • Decodificar fichero
      • Entorno de usuario
    • Movimiento >
      • Recta a trozos
      • Taladrar o cortar
    • Estructura
    • Estructura(2º Version)
    • Modelo CAD 3D
  • Software
    • Qt
    • Eagle >
      • Instalación y primeros pasos eagle
      • Librerías
  • Utilidades
  • Laboratorio
    • Fuente alimentación >
      • Material
      • Montaje