Control de temperatura mediante histéresis

 

Uso del LM35

 

 

01/12/2017

 

 

 

 

Marcos González Pérez

Rubén Bernardo Vega

Emilio Roy López

 

 


Introducción

            Se planteó el problema de un regulador de temperatura, la solución propuesta es un controlador de histéresis mediante la placa Arduino UNO. El diagrama correspondiente es:

 

Cuadro de texto: CONTROLCuadro de texto: ACTUADORR(s)         +      E(s)                                                                         C(s)

                  -

Cuadro de texto: SENSOR
 

 

 

 


                Siendo R(S) la temperatura deseada, E(S) el error del sistema y C(S) la salida. El controlador detecta si el error es el indicado, el actuador aumenta o disminuye la intensidad por la resistencia y el sensor detecta la temperatura de ella.

                El sistema creado reacciona de la siguiente manera:

                               -Compara la salida con la entrada de referencia (ts=1seg)

                               -Si estas son diferentes aparece un error

                               -Si el error es positivo, el actuador se apaga (produciendo un descenso de la temperatura)                                 

                               -Si el error es negativo, el actuador se enciende (produciendo un aumento de la temperatura)                                             

               

 

               

 

 

 

 

 

                                     

 

LM35

Resultado de imagen de LM35            Como sensor de temperatura se utilizó el  LM35. Su precisión está calibrada a 1ºC, su medición abarca desde -55ºC hasta 150ºC y cada grado equivale a 10mV, luego su salida vendrá dada sobre el intervalo (-0.5,1.5)V.  La tensión a la que trabaja esta entre 4 y 30 voltios. El embalaje y tamaño usado fue: TO-92 de 4.30mm x 4.30mm.

            Este sensor de temperatura destaca por su bajo coste, su precisa calibración, su baja impedancia de salida y su baja corriente de alimentación.

            El principio físico basado de este sensor, es la influencia de la temperatura en la Ley de Ohm, es decir, a mayor temperatura menor oposición al tráfico de electrones del metal luego dependiendo la resistencia que proporcione el sensor  la tensión de salida variará. La variación de la resistencia depende de la fórmula:

            Siendo R0=Resistencia de referencia a esta temperatura, y   el coeficiente de temperatura del material.

 

Resultado de imagen de arduino UnoArduino UNO

          Funciona tanto como detector del error como  para suministrar intensidad a la resistencia. Posee 14 pines digitales, de los cuales usamos uno como salida, y 6 analógicos, de los que usamos 2 como entradas. Es un microcontrolador que trabaja a 5V, la intensidad máxima depende del pin con el que se actúe, 40mV en normales, 50mV en pines de 3.3V.  El código con el que funciona es  mediante el programa Arduino, aunque también se puede programar en C. Sus dimensiones son 50.8mmx53.3mm.

 

 

            Esquema de montaje

Arduino.PNG

 

 

Ø  El potenciómetro nos marca la temperatura que queremos obtener.

 

Ø  Hasta que el sensor LM35 no detecte en la resistencia que tiene justo al lado la misma temperatura que la marcada por el potenciómetro, el Arduino seguirá funcionando.

 

Ø  En una pantalla LCD se irán mostrando el dato del potenciómetro y el dato del sensor de temperatura

 

 

 

 

 

Codigo C

 

Definir las variables y librerias

 

 

 

//LCD: SCA -> SCA; SCL -> SCL

//LM35: A3

//Pot: A2

//Salida: pin 8

 

#include <Wire.h>

// Use this library with I2C-module found on the webpage

// http://4tronix.co.uk/arduino/I2C_LCD_Module.php

#include <LiquidCrystal_I2C.h>

 

#define pin_A3 A3

#define pin_A2 A2

 

#define Tmax 30

#define Tmin 15

 

int valor_leido;

float temp;

float templ;

 

int pot;

int temperatura;

 

// set the LCD address to 0x27 for a 20 chars 4 line display

// Set the pins on the I2C chip used for LCD connections:

// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

LiquidCrystal_I2C lcd1(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

 

 

 

 

 

 

 

 

Configuración de la pantalla LCD

 

void setup()

{

  pinMode(8, OUTPUT);

 //analogReference(INTERNAL);

 analogReference(DEFAULT);

 lcd1.begin(16,2); // initialize the lcd

 // Print a message to the LCD.

 lcd1.backlight();

 lcd1.print("Bienvenido!");

 //lcd1.setCursor(0, 1);

 //lcd1.print("hello, world 1!");

 delay(3000);

 

}

 

 

 

 

 

 

 

 

 

 

 

 

Configuración del Bucle

 

void loop()

{

  pot=analogRead(pin_A2);

  temperatura=pot*(Tmax-Tmin)/1023+Tmin;

 

 

  valor_leido=analogRead(pin_A3);

  temp=(valor_leido*(5/1.1)*1.1*100.0)/1024.0;

 

  if (temp<temperatura)

    {//statement(s)

      digitalWrite(8, HIGH);

    }

  if (temp>temperatura){

    digitalWrite(8, LOW);

  }

 

 

  lcd1.clear();

  lcd1.setCursor(0, 0);

  lcd1.print("Temp=");

  lcd1.print(temp);

  lcd1.print((char)223);

  lcd1.print("C");

  lcd1.setCursor(0, 1);

  lcd1.print("Objetivo=");

  lcd1.print(temperatura);

  lcd1.print((char)223);

  lcd1.print("C");

  delay(1000);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Esquemas en Proteus y LabVIEW

Imagen 1: Esquema en proteus

 

 

 

Imagen 2Esquema en LabVIEW

Imagen 3: Simulación en LabVIEW

 

 

 

Video con las simulaciones

 

https://www.youtube.com/watch?v=fj1MTphUYas