Sei sulla pagina 1di 5

Proyecto Final: Control de temperatura mediante control de fase.

21/02/2019
1

Resumen— ​ Este informe presenta la implementación de una


planta de temperatura (bombilla de 100W), regulada por medio Triac:
de un controlador de fase, este se lleva acabo por medio de un El TRIAC es un componente electrónico semiconductor de
circuito de detección de cruce por cero para la sincronizacion y
disparo de un Triac, la visualizacion se hace por medio de Serial tres terminales para controlar la corriente. Su funcionamiento
Ploter de Arduino. básico es cerrar un contacto entre dos terminales (ánodo 1 y 2)
para dejar pasar la corriente (corriente de salida) cuando se le
Palabras claves​—Controlador de Fase, Carga R, Control de aplica una pequeña corriente a otro terminal llamado "puerta"
Temperatura, Angulo de Disparo, Cruce por Cero, Triac, o Gate (corriente de activación).
Optocoplador. Se seguirá permitiendo que la corriente fluya hasta que la
  corriente de salida disminuya por debajo de un valor
determinado, llamada corriente umbral, o se corte la corriente
I. OBJETIVOS totalmente.[3]
➢ Diseñar e implementar un controlador de voltaje por
medio de un detector de cruces por cero y un angulo de Control de fase directo:
disparo, para regular la potencia de un sistema de Es un circuito de un conversor AC/AC, el cual se basa en
temperatura (bombilla de 100W). manipular la potencia entregada al circuito mediante el control
➢ Realizar el control de fase directo a través de una del ángulo de disparo de los SCR´s o TRIAC's para variar la
plataforma de adquisición de datos (Arduino). señal que se entrega a la carga.
Se basa en utilizar el RMS de la señal de alterna, al modificar
la forma de onda de la señal de alterna, se varía el RMS que es
II. MARCO TEORICO el valor eficaz de voltaje que se entrega a la carga, de ahí que
variemos la potencia en la carga al variar el ángulo de disparo
Detector de cruce por cero:
del SCR.[4]
Es un circuito que 'sensa' cuando se produce el cambio de
polaridad. Los detectores de cruce por cero se utilizan para
detectar los tipos de señales, o diferentes significados de
señales. [1]

Tiristores:
Un tiristor es un componente electrónico que conduce la
 
corriente electrica en un solo sentido (como un diod​o​) y que
 
además para que conduzca en ese sentido tiene que ser
Figura 1. Control de fase Directo. 
activado con una pequeña corriente eléctrica (como un
 
transistor). Podemos decir que es un interruptor que se activa
En la figura n°1, los voltajes en los terminales del SCR o
(abre o cierra) eléctricamente, pero a diferencia del transistor,
TRIAC, que son los complementarios a los que hay en la
que hace lo mismo, se puede utilizar con grandes corrientes
carga que son las ondas de abajo. Como se puede apreciar, al
(grandes potencias). Las corrientes que controlan son de 100A
disparar con un ángulo de 30° la señal que se aplica a la carga
(amperios) o más.[2]
es casi la total de la senoidal completa, y al disparar a los 120°
la señal aplicada a la carga es casi nula. Mediante esta
1
Proyecto Final: Control de temperatura mediante control de fase.

21/02/2019

modificación en la onda variamos la potencia aplicada al Para lograr aumentar o disminuir el voltaje suministrado al
circuito o carga.[4] bombillo es necesario variar el tiempo de disparo del triac. Por
eso se realizó un algoritmo basado en interrupciones, de tal
forma que por una salida de Arduino se generen los mismos
pulsos obtenidos por el cruce por cero, pero estos tendrán
III. PROCEDIMIENTO menor ancho de estado en alto y además se generará un
desfase para disparar el triac cierto tiempo después del pulso
que entrega el cruce por cero. Dichos pulsos de disparo son
Cruce por cero. enviados a la compuerta del BT136, pero entre ellos se incluyó
un optoacoplador con el fín de separar y proteger la parte
Debido a que la frecuencia de la red es de 60 Hz, es decir digital de la parte de alto voltaje.
16.666 ms, dicho valor tiempo al no ser valor entero
ocasionaría problemas de sincronización con el triac y el
control no se realizaría de forma óptima. Para solucionar esto, Código 1. Control pulsos de disparo del triac.
se implementó un circuito de cruce por cero para sincronizar
la señal de la red con el control de disparo del triac. Dicho Int AC_VALUE;
cruce por cero entrega pulsos cada vez que la señal de la red double fase;
pasa por un valor de cero voltios, es decir, el momento en que float delayTime;
su semiciclo pasa de positivo a negativo y viceversa. Los int sensorValue = 0;
pulsos obtenidos son enviados a una placa Arduino para int value = 0;
realizar desplazamiento en fase. int analogPin = 0;
int i=0;
float val;
int temp;
void setup()
{
Serial.begin(9600);
pinMode(AC_OUT1, OUTPUT);
attachInterrupt(0, setAC, RISING); //Interrupcion en el pin 2
}
void setAC()
{
temp=60; //temperatura deseada
fase=0.5963*pow(temp,2)-80.264*temp+2687.7; //ecuacion
temperatura Vs desfase
Serial.print(fase);
Figura 2. Circuito cruce por cero.
Serial.print("\n");
//delay(fase); //desfase de los pulsos
delay(500);
//delayMicroseconds(790);//un delay de 1300mseg es 360°
digitalWrite(AC_OUT1, HIGH);
delayMicroseconds(200); //86
digitalWrite(AC_OUT1, LOW);

}
void loop()
{
}

Figura 3. Pulsos de salida cruce por cero.

Control pulsos de disparo triac.


Proyecto Final: Control de temperatura mediante control de fase.

21/02/2019

Temperatura Ángulo
Figura 4. Pulso cruce por cero y pulsos desplazados. (°C)
44 300
47 250
Figura 5. Pulsos de disparo y
salida controlada.

Medición de temperatura.

Con un LM35 se sensó la


temperatura del bombillo
mediante una placa Arduino, en la
cual se muestra en tiempo real 48 200
dicho valor en su monitor serial.
51 150
Código 2. Medición de temperatura. 55 100
57 50
// Pin analógico asignado al Sensor de Temperatura LM35 57 40
int LM35_PIN = 2;
void setup() { 58 30
analogReference(INTERNAL); 59 20
Serial.begin(9600); 60 10
}
void loop() {
65 0
int input = analogRead(LM35_PIN); // Obtengo el valor
sensado por el LM35
float mv = (1100 / 1024.0) * input; // Convierto el valor
leido a mV (ahora el "tope" es de 1100mV)
float cel = mv / 10; // Convierto los mV leidos a
grados celsius
Serial.print("Temperatura actual (C): ");// escribe en pantalla
Serial.println(cel);
delay(300);
}

Figura 6. Lectura de
temperatura. Figura 7. Temperatura Vs
ángulo.
Para lograr obtener un valor de
temperatura deseada fue
necesario realizar mediciones con
diferentes ángulos de disparo, con IV. ANÁLISIS DE
el objetivo de trazar una gráfica y RESULTADOS
hallar una ecuación característica.
Dicha ecuación se ingresa en el código 1 para agregar el En primer lugar, se observó el comportamiento del circuito de
retardo que se proporciona el control del triac y el control de cruce por cero que si correspondía al esperado (Figura 3).
temperatura deseada.
Para la comprobación del control de fase, realizó por medio
Tabla 1. Temperatura y ángulo de disparo. del monitor serial del arduino en el cual se observaba la
Proyecto Final: Control de temperatura mediante control de fase.

21/02/2019

temperatura actual y como empezaba a aumentar o disminuir a int num = bufferString.toInt();//Se transforma el buffer a un
la temperatura deseada (Figura 6). número entero
Serial.println(num);
Aunque se realizaron varios montajes para el control de fase if ((num<100)&&(num>0)){
de la planta, el que funcionó finalmente fue el control por bit=1;
medio de un TRIAC que permitía controlar la fase para variar }
la corriente que finalmente recibiría el bombillo (Anexos). else {
Serial.print("Ingrese temperatura mayor a 0 y menor a 100
grados C \n");//Se imprime el número que se recibe
Se realizó un código que permitiera solicitar por teclado la bit=0;
temperatura deseada. Esto se logró realizar en el código donde }
se medía la temperatura del lm35 y la idea era enviar dicho
valor mediante comunicación serial a la placa Arduino que while (bit==1){
contenía el control pulsos de disparo del triac. Sin embargo, int input = analogRead(LM35_PIN); // Obtengo el valor
no fue posible realizar la comunicación serial entre las dos sensado por el LM35
placas y se optó por ingresar la temperatura deseada float mv = (1100 / 1024.0) * input; // Convierto el valor
manualmente en el código. leido a mV (ahora el "tope" es de 1100mV)
cel = mv / 10; // Convierto los mV leidos a
Código 3. Ingreso de temperatura por teclado y medición de grados celsius
temperatura. Serial.print("Temperatura actual (C): ");// escribe en
pantalla
int LM35_PIN = 2; Serial.println(cel);
int bit; delay(100);
char salir;
unsigned long tiempo; if((millis()-tiempo)>500){
float cel; Serial.println(cel);
#include <Wire.h> tiempo=millis();
void setup() { }
Wire.begin(1);
salir = Serial.read(); //almacena la lectura del puerto serial
Serial.begin(9600); //Se inicializa puerto serie en la variable "leer" que es de tipo caracter
tiempo=millis(); if (salir == 'a'){
//Iniciamos comunicación con el puerto serie bit=0;
analogReference(INTERNAL); }

bit=0; }
Serial.print(".......................CONTROL DE Serial.print("Ingrese temperatura deseada: \n");
TEMPERATURA...................... \n"); }
Serial.print("Presione 's' para reiniciar \n"); }
Serial.print("Ingrese temperatura deseada: \n");

} Código 4. Control pulsos de disparo del triac con temperatura


deseada recibida por teclado.
void loop() {
// Evaluamos el momento en el cual recibimos un caracter a int AC_OUT1 = 13;
través del puerto serie int AC_VALUE;
if (Serial.available() > 0) { int fase;
delay(20);//Delay para favorecer la lectura de caracteres int i=0;
String bufferString = "";//Se cr1ea una variable que servirá int temp;
como buffer char temperatura;
// Se le indica a Arduino que mientras haya datos float delayTime;
disponibles para ser leídos en el puerto serie se mantenga unsigned long tiempo;
concatenando los caracteres en la variable bufferString #include <Wire.h>
while (Serial.available() > 0) { void setup()
bufferString += (char)Serial.read(); {
} Wire.begin();
Proyecto Final: Control de temperatura mediante control de fase.

21/02/2019

Serial.begin(9600);
tiempo=millis(); VI. REFERENCIAS
pinMode(AC_OUT1, OUTPUT); Asi se deben realizar las referencias si son libros o artículos
attachInterrupt(0, setAC, RISING); //Interrupcion en el pin 2
} [1] Tomado de la red 22/02/2019:
void setAC() https://sites.google.com/site/electronicaanalogicaadancin/2-3-1-detect
{ ores-de-cruce-por-cero
Wire.requestFrom(1,19); [2] Tomada de la red 22/02/2019
while(Wire.available()){ https://www.areatecnologia.com/electronica/tiristor.html
char temperatura=Wire.read(); //temperatura deseada
recibida [3] Tomado de la red:22/02/2019
temp=temperatura.toInt() https://www.areatecnologia.com/electronica/triac.html
}
[4]Tomada de la red:22/02/2019
http://axdesarrollos.blogspot.com/2013/09/explicacion-control-de-fas
fase=0.5963*pow(temp,2)-80.264*temp+2687.7; //ecuacion e-directo.html
temperatura Vs desfase
fase=0;
delayTime=1000*0.00833*fase/360; VII. ANEXOS

//Serial.print(temperatura);
//Serial.print("\n"); Figura n°9 Planta mas controlador
de fase
delay(delayTime*150);
//delayMicroseconds(790);//un delay de 1300mseg es 360°
digitalWrite(AC_OUT1, HIGH);
delayMicroseconds(90); //86
digitalWrite(AC_OUT1, LOW);
}
void loop()
{
}

V. CONCLUSIONES

Al implementar un control de fase directo, mediante el ángulo


de disparo, permite visualizar la cantidad de voltaje que esta
llegando a la carga (resistiva para este caso) por medio de la
intensidad de luz que emite. Cabe aclarar que a medida que se
aumenta el ángulo de disparo, la intensidad de la luz es menor
debidob a que la señal proporcionada a la red disminuye.

Para realizar control de disparo de los triacs es muy


importante tener sincronizado la señal de los pulsos y la señal
de la red con la que se trabaja para evitar probelmas de
funcionamiento del sistema.

Por medio del monitor serial de arduino, se puede visualizar


de manera rápida la variación de temperatura, de acuerdo a la
variación del ángulo de disparo, como mejorías para próximos
proyecto, se podría crear una interfaz en labview, que
permitiera visualizar la grafica general, desde que inicia hasta
que llega a la temperatura deseada.

Potrebbero piacerti anche