Reconocimiento y Control de Temperatura de Un Horno Electrico - JRRS - FIME-UANL

19
24/09/2012 Reconocimiento y Control de Temperatura de un Horno Eléctrico (Reporte) Rolando Rodríguez Silva Resumen: En este trabajo se muestra un sistema de reconocimiento de señales (temperatura de un horno) por medio de un circuito neuronal, que a su vez también controla la temperatura, comparando la entrada contra la salida (Control ON/OFF). Introducción: Como podríamos mantener, la temperatura adecuada en un Horno para un para un tratamiento de un acero al carbono, o como podríamos hacer un control de un sistema de calefacción. Es aquí donde entra un sistema de control regido por el comportamiento de la temperatura. Un sistema de control de temperatura, obtiene la temperatura del ambiente a medir mediante un sensor, y esta señal es acondicionada (Digitalmente o Analógicamente según el control a realizar). Luego pasa por un sistema de control el cual enciende, apaga, aumenta, o disminuye el sistema que estará encargado de mantener la temperatura. En este caso por ejemplo, si la temperatura del Horno es mayor que la referencia, la potencia del horno disminuirá y viceversa en temperaturas menores, ya que se busca que la temperatura de salida sea aproximada a la entrada (Figura 1). Figura 1

description

Control de Temperatura de Un Horno Electrico

Transcript of Reconocimiento y Control de Temperatura de Un Horno Electrico - JRRS - FIME-UANL

  • 24/09/2012

    Reconocimiento y Control de Temperatura de un Horno Elctrico (Reporte)

    Rolando Rodrguez Silva

    Resumen: En este trabajo se muestra un sistema de reconocimiento de seales (temperatura de un

    horno) por medio de un circuito neuronal, que a su vez tambin controla la temperatura,

    comparando la entrada contra la salida (Control ON/OFF).

    Introduccin:

    Como podramos mantener, la temperatura adecuada en un Horno para un para un tratamiento de

    un acero al carbono, o como podramos hacer un control de un sistema de calefaccin. Es aqu

    donde entra un sistema de control regido por el comportamiento de la temperatura.

    Un sistema de control de temperatura, obtiene la temperatura del ambiente a medir mediante un

    sensor, y esta seal es acondicionada (Digitalmente o Analgicamente segn el control a

    realizar). Luego pasa por un sistema de control el cual enciende, apaga, aumenta, o disminuye el

    sistema que estar encargado de mantener la temperatura. En este caso por ejemplo, si la

    temperatura del Horno es mayor que la referencia, la potencia del horno disminuir y viceversa

    en temperaturas menores, ya que se busca que la temperatura de salida sea aproximada a la

    entrada (Figura 1).

    Figura 1

  • 24/09/2012

    Metodologa:

    En este sistema tenemos como entradas variables, la temperatura deseada (Que se establece por

    medio de un Potencimetro) y la temperatura que es medida por un sensor LM35. En la salida

    tenemos tres leds que indican los diferentes estados de la temperatura y una salida PWM que se

    encarga de variar la potencia del horno.

    Las temperaturas de trabajo esta en un rango de 0 a 100 grados Celsius.

    Para realizar este proyecto lo divid en diferentes partes:

    1) Reconocimiento de seales

    2) Control

    3) Implementacin en Sistema Embebido

    Reconocimiento de seales

    Un sistema de reconocimiento de seales, son filtros que funcionas a travs de una o varias

    funciones de activacin, que adems estn sujetas a condiciones del tipo IF/ELSE.

    En el caso del horno se utilizan tres funciones de activacin (Figura 2), dos sigmoidales y una

    gaussiana, donde una de las sigmoidales esta trabajando de forma inversa (Figura 3), trabaja de

    forma inversa al negar los valores de entrada (Ecuacin 1); la sigmoidal invertida es la

    encargada de reconocer las seales de temperatura baja, la gaussiana la temperatura dentro del

    rango normal y la otra sigmoidal la temperatura alta.

    Las condiciones son las siguientes para cada funcin de activacin, donde x es el valor de la

    funcin de activacin y m=.8 que es el condicional (la c o ancho de campana de la funcin

    gaussiana es 8 por diseo)

    ( ) {

    ( ) {

    ( ) {

  • 24/09/2012

    Figura 2

    Figura 3 (Graficas de funciones sigmoidales)

    ( )

    Ecuacin 1 (Funciones de Activacin)

  • 24/09/2012

    Existe una variable denominada b que es la temperatura de entrada, que a su ves es el centro de

    masa de la gaussiana, esta variable se encarga de mover las graficas en el eje de las X, para poder

    lograr esto, a las funciones sigmoidales les reste el valor de b para as por medio de geometra

    mover la grafica del origen, por diseo tambin se el agrego una constante k (Ecuacin 2) que

    se encarga de desfasar las ecuaciones sigmoidales para que intersecten en .8 con la gaussiana

    (Figura 4).

    ( )

    ( )

    Ecuacin 2 (Desfase de funciones)

    Figura 4 (Grafica de funciones desfasadas)

  • 24/09/2012

    El Pseudocdigo que se encarga de hacer todo lo anterior posible es el siguiente, para el cdigo

    en Matlab ver el Apndice A (Cdigo 1 o 2)

    Funcin decisin

    RecSenal (b,m,x)

    Si Fu-s=1

    Entonces imprime y1

    Sino Si Fugauss=1

    Entonces imprime y2

    Sino Imprime y3

    Fin_si

    Fin_si

    Fin de Funcin

    Funcin RecSenal (b,m,x) ( ) {

    Leer x

    Leer b

    y1=Fa-sig(x);

    y2=Fagauss(x,b);

    y3=Fasig(x);

    Fu-s=fu(y1,m)

    Fugauss=fu(y2,m)

    Fus=fu(y3,m) si

    Fin de Funcin

    En la siguientes graficas (Figura 5) se muestra una de las simulaciones para una temperatura

    deseada de 50 grados corriendo el Cdigo 2 del Apndice A, este cdigo funciona en conjunto

    con el sistema Arduino que es el que se encarga de enviar por puerto serial la temperatura ya

    convertida en grados centgrados, la grafica A muestra cuando la temperatura esta por debajo del

    rango deseado, la B cuando la grafica esta dentro del rango y por ultimo la C que es cuando la

    temperatura esta mas alta de lo deseado (la lnea color celeste es la que muestra la temperatura

    obtenida, e intersecta las 3 funciones en diferentes puntos mostrando siempre si la decisin dada

    es la correcta, la lnea de color morado esta en .8 para mostrar mas claramente donde se

    intersectan las funciones de activacin), en el Apndice B se muestra un ejemplo para 75 grados.

    Como conclusin en este punto, se puede observar como por medio de circuitos neuronales,

    trabajando en forma de reconocimiento, se puede filtrar seales y con las condiciones bien

    establecidas se puede convertir esa salida en algo fsico, que en este caso al implementarse se

    enciende un led, que muestra el estado actual de la temperatura, ese caso se vera ya en el ultimo

    punto, el de la implementacin como sistema embebido.

  • 24/09/2012

    Figura 5 (temperatura/rango)

    Control

    Un sistema de control ON/OFF es de los sistemas mas bsicos de control que existen, y es el mas

    utilizado en termostatos, su funcin es enviar un 0 o 1 como salida cuando se tiene un error con

    respecto a la diferencia entre la entrada y la salida.

    A Temperatura Medida 35.2

    B Temperatura Medida 46.7

    C Temperatura Medida 88.9

  • 24/09/2012

    En nuestro caso la entrada del sistema es la temperatura medida y la salida es la temperatura

    deseada (Figura 6) y tiene la ventaja de que las perturbaciones de otras fuentes de calor no le

    afectan, nuestros rango de estabilidad o de temperatura dentro del rango se encuentran dentro de

    .8 a 1.2 normalizando la temperatura deseada.

    Figura 6

    El sistema de control fue implementado directamente en Arduino (Apndice A cdigo 3) y

    comunicado con Matlab para ver las graficas con respecto al tiempo, utilizando el pseudocdigo

    de reconocimiento de seales y agregndole ahora que imprima una seal dependiendo de la

    temperatura real, para poder controlarla.

    Funcin control

    RecSenal (b,m,x)

    Si Fu-s=1

    Entonces potencia=1

    Sino potencia=0

    Fin_si

    Fin de Funcin

    A continuacin se muestra la grafica con respecto al tiempo del sistema de control ya

    funcionando, con una temperatura deseada de 50 grados, ah se puede ver como el sistema busca

    estar dentro de los parmetros (Figura 7), y se logra controlar aun con perturbaciones al someter

    al sistema a otra entrada de temperatura no considerada el sistema vuelve a buscar estar dentro

    del rango.

    Control

    Temperatura deseada

    u(t) e(t) y(t)

  • 24/09/2012

    Figura 7 (grafica de control)

    En conclusin de este punto, se puede ver que tomando una parte del reconocimiento de seales

    se puede generar control ON/OFF con las condiciones dadas y las decisiones correctas,

    encontrando as una gran gama de aplicaciones.

    Sistema Embebido

    Juntando la parte de reconocimiento y la parte de control e implementndola en un sistema

    Arduino se logra un sistema embebido, ya que su nica funcin despus de programarse ser la

    de reconocer y controlar la temperatura, el pseudocdigo es el siguiente:

    Programa Principal

    Control

    Decisin

    Recsenal

    Fin programa

    Y a continuacin se muestran unas fotografas de la pantalla (figura 7, 8, 9), del sistema

    funcionando en sus diferentes etapas, el cdigo fuente de este sistema embebido se encuentra en

    el apndice A, cdigo 4.

  • 24/09/2012

    Figura 7a

    Figura 7 b

  • 24/09/2012

    Figura 8 a

    Figura 8 b

  • 24/09/2012

    Figura 9 a

    Figura 9 b

    En las fotografas anteriores se muestra el sistema visto desde arriba y frontalmente, en este

    primer estado se ve un led azul encendido y uno rojo (que en este caso simula la potencia del

    horno), el led azul indica que la temperatura esta por debajo de rango deseado y el rojo en

  • 24/09/2012

    mxima potencia, indica que se esta haciendo el control para llevar la temperatura al rango

    deseado.

    En la figura 8 a y 8 b se muestra ya la temperatura dentro del rango y con el Led rojo simulando

    baja potencia para mantener caliente el horno, as como pasa lo contrario con las figuras 9a y 9b

    que nos muestran la temperatura fuera de rango y tambin como apagan el horno para que

    empieza a bajar la temperatura. En la tabla uno del apndice B se muestra como van cambiando

    los valores y como se va controlando

    Como conclusin general, por medio de un circuito neuronal se puede controlar un horno

    industrial o domestico de forma econmica y fcil, si requerir sistemas complejos o un control

    muy avanzado, o llegar a la implementacin anloga como seria con amplificadores

    operacionales. Dentro de mis metas estaba principalmente solo reconocer las seales, pero al

    analizar ms a fondo, ca en la cuenta de que el sistema requera un sistema muy bsico de

    control y as ampliar las metas de este proyecto.

    Referencias:

    Jianbo Bai, Hong Xiao, Tianyu Zhu, Wei Liu, Xianghua Yang, Guofang Zhang, Design

    of an Improved Single Neuron-based PI Controller for an HVAC System in a Test

    Room, 2008 International Workshop on Education Technology and Training & 2008

    International Workshop on Geoscience and Remote Sensing.

    Lehmann, Charles H. Geometra Analtica, ed. Limusa 2006

    Katsuhiko Ogata Ingeniera de control moderno, ed. Pearson 4 ed. 2003

    Cetinkunt Sabri Mecatronica, ed Patria 2011

    Wu Chunying, Wang Xiaoming, Yang Ling, Research on Simulation of Temperature

    Control System for Gyro Based on Single Neuron PID, 2010 International Conference

    on Machine Vision and Human-machine Interface.

    Zhenya Zhang, Hongmei Cheng, Shuguang Zhang. Research on the Performance of

    Feed Forward Neural Network Based Temperature Field Identification Model in

    Intelligent Building 2011

    Diana Lucia Poma; Prediccin meteorolgica mediante redes neuronales 2010

  • 24/09/2012

    Apndice A

    Cdigo 1 (Simulador de Reconocimiento de Seales)

    clear all clc a=1; %altura de campana c=8; %ancho de campana k=4.15; %unin en aprox .8 de graficas b=input('Ingrese la temperatura deseada: '); y=input('Ingrese la temperatura obtenida: '); x=0:.01:100; %rango de temperatura medible for i=1:1:10001; r(i)=.8; %intervalo de temperatura if x(i)y; z(i)=0; end end g=a*exp(-(((x)-b).^2)/(2*(c^2))); % grafica funcin gaussiana si=(1./(1+exp(x-b+k))); %grafica funcin sigmoidal invertida s=(1./(1+exp(-(x-b-k)))); %grafica funcin sigmoidal go=a*exp(-(((y)-b).^2)/(2*(c^2))); %funcin de activacin gaussiana sio=(1./(1+exp(y-b+4))); %funcin de activacin sigmoidal invertida so=(1./(1+exp(-(y-b-4)))); %funcin de activacin sigmoidal %condiciones de decisin if sio>.8; fprintf('Temperatura Baja') go=0; so=0; elseif go>=.8; fprintf('Temperatura Deseada') sio=0; so=0; elseif so>.8; fprintf('Temperatura Alta') go=0; sio=0; end figure plot(x,si,x,s,x,g,x,z,x,r) grid

    Cdigo 2 (Simulador de Reconocimiento de Seales con adquisision real)

    Matlab:

    clear all clc

  • 24/09/2012

    adq=serial('COM7'); %definir serial port adq.BaudRate=9600; %definir baud rate %abrir serial port fopen(adq); clear yy; a=1; %altura de campana c=8; %ancho de campana k=4.15; %unin en aprox .8 de

    graficas b=input('Ingrese la temperatura deseada: '); yy=fscanf(adq); %leer valor del sensor y=str2double(yy); %convertir de string a valor

    numrico fclose(adq); %cerrar serial port x=0:.01:100; %rango de temperatura medible for i=1:1:10001; r(i)=.8; %intervalo de temperatura if x(i)y; z(i)=0; end end g=a*exp(-(((x)-b).^2)/(2*(c^2))); %grafica funcin gaussiana si=(1./(1+exp(x-b+k))); %grafica funcin sigmoidal invertida s=(1./(1+exp(-(x-b-k)))); %grafica funcin sigmoidal go=a*exp(-(((y)-b).^2)/(2*(c^2))); %funcin de activacin gaussiana sio=(1./(1+exp(y-b+4))); %funcin de activacin sigmoidal invertida so=(1./(1+exp(-(y-b-4)))); %funcin de activacin sigmoidal %condiciones de decisin if sio>.8; fprintf('Temperatura Baja') go=0; so=0; elseif go>=.8; fprintf('Temperatura Deseada') sio=0; so=0; elseif so>.8; fprintf('Temperatura Alta') go=0; sio=0; end figure plot(x,si,x,s,x,g,x,z,x,r) grid

    Arduino:

    int valor1;

    float x1;

  • 24/09/2012

    void setup() {

    Serial.begin(9600);

    }

    void loop() {

    valor1=analogRead(0);

    x1=(valor1)/306.9; //Normalizacin de temperatura

    float v1=(x1*150); //Conversin a temperatura real

    Serial.println(v1);

    delay(100);

    }

    Cdigo 3

    Arduino:

    float e = 2.71828; //constante de Euler

    float a=1; //altura campana de gauss

    int c=64; //ancho de campana de gauss al cuadrado

    float k=4.15; //movimiento en x de las funciones con respecto al origen

    float b;

    float x;

    float g=0;

    float s=0;

    float si=0;

    float x1;

    float x2;

    void setup() {

    Serial.begin(9600);

    }

    void loop() {

    float valor1=analogRead(0); //Lectura de temperatura deseada

    float valor2=analogRead(1); //Lectura de temperatura real

    x1=(valor1)/1023.000; //Normalizacin de temperatura deseada

    x2=(valor2)/306.900; //Normalizacin de sensor de temperatura

    b=(x1*100); //conversion a grados Celsius temp. deseada

    x=(x2*100); //conversion a grados Celsius temp. obtenida

    Serial.println(x);

    delay(1000);

    horno();

    }

    void horno(){

    g=a*pow(e,-((pow((x-b),2)/(2*c)))); //funcin gaussiana

    si=(1/(1+ pow(e,(x-b+k)))); //funcin sigmoidal invertida

    s=(1/(1+ pow(e,-(x-b-k)))); //funcin sigmoidal

    if (si>.8){

    analogWrite(2,255); //aumento de potencia del horno

    }

    else if (g>=.8){

    analogWrite(2,128); //potencia disminuida, temperatura dentro de rango

  • 24/09/2012

    }

    else if (s>.8){

    analogWrite(2,64); //temperatura alta, disminuir potencia del horno

    }

    delay (2000);

    return;

    }

    Matlab: clear all clc adq=serial('COM7'); %definir serial port adq.BaudRate=9600; %definir baud rate %abrir serial port fopen(adq); clear yy; td=input('Ingrese la temperatura deseada: '); for i= 1:2000 %adquisicin de 2000 puntos r1(i)=.8; op(i)=1; r2(i)=1.2; yy=fscanf(adq); %leer valor del sensor k(i) = str2double(yy); y(i)=k(i)/td; plot([1:i],y(1:i),[1:i],op,[1:i],r1,[1:i],r2); grid title('Datos de Temperatura Adquiridos'); xlabel('Tiempo'); ylabel('Temperatura Normalizada'); drawnow;

    end fclose(adq);

    Cdigo 4

    float e = 2.71828; //constante de Euler

    float a=1; //altura campana de gauss

    int c=64; //ancho de campana de gauss al cuadrado

    float k=4.15; //movimiento en x de las funciones sigmoidales con respecto al

    origen

    float b;

    float x;

    float g=0;

    float s=0;

    float si=0;

    float x1;

    float x2;

    void setup() {

    Serial.begin(9600);

    }

    void loop() {

  • 24/09/2012

    pinMode(51, OUTPUT);

    pinMode(52, OUTPUT);

    pinMode(53, OUTPUT);

    float valor1=analogRead(0); //Lectura de temperatura deseada

    float valor2=analogRead(1); //Lectura de temperatura real

    x1=(valor1)/1023.000; //Normalizacin de temperatura deseada

    x2=(valor2)/1023.000; //x2=(valor2)/306.900; //Normalizacin de sensor de

    temperatura

    b=(x1*100); //conversion a grados Celsius temp. deseada

    x=(x2*100); //conversion a grados Celsius temp. obtenida

    Serial.print("\t Temperatura deseada = " );

    Serial.println(b);

    Serial.print("\t Temperatura obtenida = " );

    Serial.println(x);

    delay(1000);

    horno();

    }

    void horno(){

    g=a*pow(e,-((pow((x-b),2)/(2*c))));

    si=(1/(1+ pow(e,(x-b+k))));

    s=(1/(1+ pow(e,-(x-b-k))));

    if (si>.8){

    Serial.print("\t Temperatura Baja \n \n" );

    digitalWrite(52, HIGH);

    digitalWrite(51, LOW);

    digitalWrite(53, LOW);

    analogWrite(2,255); //aumento de potencia del horno

    }

    else if (g>=.8){

    Serial.print("\t Temperatura Correcta \n \n" );

    digitalWrite(53, HIGH);

    digitalWrite(51, LOW);

    digitalWrite(52, LOW);

    analogWrite(2,128); //potencia disminuida, temperatura dentro de rango

    }

    else if (s>.8){

    Serial.print("\t Temperatura Alta \n \n" );

    digitalWrite(51, HIGH);

    digitalWrite(52, LOW);

    digitalWrite(53, LOW);

    analogWrite(2,64); //temperatura alta, disminuir potencia del horno

    }

    delay (2000);

    return;

    }

  • 24/09/2012

    Apndice B

    En las siguientes graficas se mostrara un ejemplo de cuando la temperatura requerida es de 75

    grados, y la primera temperatura se obtiene cuando el sensor es introducido en un congelador por

    5 min, despus cuando el sensor se pone cerca del horno y por ultimo como llega a la

    temperatura deseada.

    Figura10

    A Temperatura

    Medida 3

    B Temperatura Medida 47.7

    C Temperatura Medida 79.7

  • 24/09/2012

    Tabla 1

    En estas tablas de salida se muestra como va cambiando la salida al paso del tiempo, y como

    busca estabilizarse en la temperatura dada, estas tablas son para el ejemplo de los 50 grados.