Sei sulla pagina 1di 12

Carrera:

Ing. Eléctrica

Materia:

Instrumentación

Trabajo:

Practica 6 (control de termopar)

Maestro:

Valdez González Julio Alejandro

Alumnos:

Higareda Aguayo J. Jesús 18491016

Ley Ramírez Martin Ho Son 17490275

Fecha de entrega:

11/12/2019
Introducción.
En esta práctica realizaremos control de termopar sin enconder rotativo por medio del
programa arduino uno, Para conectar el encoder a Arduino, necesitamos tres entradas
digitales, dos para la detección del encoder y una adicional si queremos registrar la
pulsación de la palanca.Idealmente, deberíamos emplear interrupciones para registrar el
movimiento del encoder. Lamentablemente, la mayoría de placas de Arduino sólo
tienen dos pines asociados a interrupciones. En el caso de querer precisión cuádruple
esto supone emplear los dos pines con interrupciones
Marco Teórico.
Módulo Max6675 con termopar: El MAX6675 es un convertidor Analógico a digital
especializado para termopares tipo K. Con este módulo es posible conectar fácilmente
un termopar a cualquier micro controlador a través de una interfaz SPI unidireccional.
Dentro de este pequeño circuito se encuentra la electrónica necesaria para amplificar,
compensar y convertir a digital el voltaje generado por el termopar, lo que hace muy
sencilla la tarea de conectar un termopar a un micro controlador.

Arduino:Arduino es el nombre que recibe una de los hardwares (con su


software) libres más usados del mundo para configuración básica y elemental
de un objeto electrónico. Arduino comenzó siendo básicamente una plataforma
electrónica que consistía en una placa con dos puertos, uno de entrada y uno de
salida, con uno de los lenguajes de programación más sencillos del mundo,
orientados a la configuración y utilización en cualquier función que se
le escribiera y ordenará. A través del puerto de salida, el usuario podía conectar
una pantalla en la que se mostrarían los datos que ejecutaría el lenguaje de
programación que muestra el Entorno de Desarrollo Integrado que posee.

LCD 2X16: Consiste en una pantalla de cristal líquido de 16 columnas y 2


filas. En ella iremos escribiendo los resultados obtenidos de las mediciones así
como alguna otra información útil en este proyecto.

Mosfet irfz44n:Es un transistor de tecnología MOS-FET (Metal–Oxide–Semiconductor


– Field Effect Transistor) y de alta potencia que posee destacadas características que lo
hacen ideal para aplicaciones de conmutación y en la modulación por ancho de pulso
(PWM).
Transistor s8050:El S8050 NPN, capaz de disipar 1W,
soporta 1,5A, Vceo25Vdc, hFE de 40-300 y 100MHz. Se presenta en un
encapsulado TO-92 con tres terminales (pines).

Cartucho calentador:Un calentador de cartucho es un dispositivo que


normalmente es tubular y se inserta en orificios barrenados de bloques
metálicos con fines de calentamiento.

Bloque de aluminio: Esta composición de circuito está especialmente


orientada a los circuitos cuyas necesidades de disipación de calor sean
elevadas.
Materiales
-Módulo MAX6675 con termopar

-Arduino UNO

-Pantalla LCD 16×2

-Mosfet irfz44n

-Transistor s8050

-Cartucho calentador

-Bloque de aluminio
Desarrollo:
En esta práctica se controlara por medio de un PID, la temperatura predefinida por un “setpoint”
declarado de antemano por un usuario en los parámetros característicos de un programa que
permitirá dicho control. Se presenta a continuación el diagrama de conexiones respectivo y el
código.

Figura 1: Diagrama de conexiones respectivo

Codigo Respectivo:

#include <Wire.h>

#include <max6675.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

#include <SPI.h>

#define MAX6675_CS 10

#define MAX6675_SO 12

#define MAX6675_SCK 13

int PWM_pin=3;

float t_read=0.0;

float set_t=42;

float pid_error=0;
float prev_error=0;

float elapsedTime,Time,timePrev;

float pid_value=0;

float kp=865.25;

float ki=56.0;

float kd=20;

float pid_p=0;

float pid_i=0;

float pid_d=0;

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

pinMode (PWM_pin,OUTPUT);

TCCR2B=TCCR2B & B11111000 | 0x03;

Time=millis();

lcd.init();

lcd.backlight();

void loop() {

// put your main code here, to run repeatedly:

t_read=readThermocouple();

pid_error= set_t - t_read;

pid_p= kp*pid_error;

if (-3 < pid_error < 3)

pid_i= pid_i + (ki*pid_error);

timePrev= Time;
Time=millis();

elapsedTime=(Time- timePrev)/1000;

pid_d= kd*((pid_error - prev_error)/elapsedTime);

pid_value= pid_p + pid_i + pid_d;

if(pid_value<0)

pid_value=0;

if(pid_value>255)

pid_value=255;

analogWrite(PWM_pin,255-pid_value);

prev_error=pid_error;

delay(300);

Serial.print(set_t);

Serial.print(" ");

Serial.print(t_read);

Serial.println();

lcd.clear();

lcd.setCursor(0,0);

lcd.print("PID T. Control");

lcd.setCursor(0,1);

lcd.print("S:");

lcd.setCursor(2,1);
lcd.print(set_t,1);

lcd.setCursor(8,1);

lcd.print("R:");

lcd.setCursor(11,1);

lcd.print(t_read,1);

double readThermocouple(){

uint16_t v;

pinMode(MAX6675_CS,OUTPUT);

pinMode(MAX6675_SO,INPUT);

pinMode(MAX6675_SCK,OUTPUT);

digitalWrite(MAX6675_CS,LOW);

delay(1);

v=shiftIn(MAX6675_SO,MAX6675_SCK,MSBFIRST);

v<<=8;

v |= shiftIn(MAX6675_SO,MAX6675_SCK,MSBFIRST);

digitalWrite(MAX6675_CS,HIGH);

if (v & 0x4)

return NAN;

v >>= 3;

return v*0.25;

}
Como se puede apreciar en el código, se presentan las constantes kp,ki y kd. Las cuales son
modificadas paulatinamente para obtener una respuesta del sistema de carácter deseable, más
que nada, una estabilidad con márgenes de histéresis muy bajos, siendo las mediciones
otorgadas lo mas exactas posibles.

Primeramente, para determinar la establidad de un controlador PID, se tiene la dificultad de no


tener información de carácter esencial para poder determinar en base a un diseño de un
controlador como tal (no se puede calcular directamente). Para evitar largas horas de designar
magnitudes a las constantes respectivas a modo de prueba y error, hay diversas herramientas
que pueden acortar el proceso de la búsqueda, normalmente basadas en el método “Ziegler-
Nichols” que básicamente se trata de otrorgar inicialmente a ki y kd valores de cero, alternando
kp hasta determinar un valor deseado, y hacer ajustes finos modificando ki y kd gradualmente
hasta lograr resultados deseados.

Estas herramientas, encontradas en línea, se trata de simuladores que puede en base al método
descrito anteriormente, generar una respuesta similar a la deseada en base a unos criterios que la
herramienta solicita de antemano para poder dar una respuesta efectiva.

Figura 2: Herramienta usada para la determinación de las 3 constantes (se anexa junto con la
practica en formato xls)

La herramienta, si de antemano uno conoce los parámetros de la ganancia neta (K), la constante
de tiempo (T), y el tiempo de retraso, puede simular una respuesta con un comportamiento muy
exacto dando resultados prácticos similares, dichos parámetros se pueden calcular.

K se calcula por medio de una formula que se presenta de la siguiente forma:

K=(dX/T2)/(dY/T1)
Donde:

- Dx es el valor de la señal de voltaje de control (5V)


- T2 es el tiempo máximo (aplicado en la formula en segundos) de la temperatura limite
alcanzada sin el controlador PID (15 minutos)
- Dy es el valor del “set” (42 C°)
- T1 es el valor de retardo con el cual nos da el sistema general una respuesta inmediata
(0.3 segundos debido al “delay” implementado en el programa)

En base a lo descrito anteriormente, el simulador podrá otorgar resultados tales que puedan
tener semejanza con una respuesta deseada.

Posterior a la conexión del arduino y la programación del mismo se otorgan los siguientes
resultados.

Figura 3: Circuito Fisico

Figura 4: Primera rampa del sistema, arranque.


Figura 5: Primera vez que cruza por el “set point”

Figura 6: Resultado final de establidad después de 5000.

Conclusiones:
Esta práctica fue una de las más complicadas de las hechas en clase, tenía que dar la gráfica
exacta al conectar el circuito al programa arduino uno, en varios casos se pasaba la gráfica del
punto medio, pero después de varios intentos se pudo dar con éxito que la gráfica diera en el
punto indicado, ya que intentamos con una temperatura al comienzo que no nos daba y después
citamos al profesor para que nos diera una nueva temperatura para que nos diera el trabajo.

(Ley Ramirez Martin Ho Son)

El controlador pid es una herramienta que promete si se sabe manejar, resultados con exactitud
muy alta respecto a la proporción de resultados en cuestiones de estabilidad, no obstante, al no
conocer un modelo matematico que describa de forma analítica el comportamiento exacto del
sistema, se torna en un proceso tedioso encontrar las constantes aun con las herramientas
presentadas en este documento. Aun asi, los resultados que se obtienen son dignos de considerar
para un análisis extensivo para determinarse como efectivos en cuestiones de su labor
respectiva.

(Jesus Higareda Aguayo)


Referencias

[1] L. Llamas, «luisllamas.com,» 29 septiembre 2016. [En línea]. Available:


https://www.luisllamas.es/arduino-encoder-rotativo/.

[2] A. E, «Arduino.cc,» 31 octubre 2018. [En línea]. Available:


https://forum.arduino.cc/index.php?topic=576848.0.

[3] J. E. O. Bonilla, «Academia.edu,» 2013. [En línea]. Available:


https://www.academia.edu/6973009/Control_PID_de_un_Sistema_de_Temperatura.

Potrebbero piacerti anche