Prctica 3
Nombre: Daniel Antonio Barrera Mndez
Matrcula: 356612
Horario: 19:00 21:50 Mircoles
Saln: 3205 C
Instructor: Ing. Francisco Hidalgo
void interrupt(){
if(c_time<31){ //Cuenta 31 ciclos para que el timer cuente 1 segundo
c_time++;
INTCON=0b10100000; //Configuracin del registro INTCON para activar interrupciones
TMR0=0; //Timer 0 comienza en 0
void main() {
ANSEL=0x01; //Pin A0 como analogico
ANSELH=0; //Todos los demas pines como digitales
TRISA=0xFF; //PORTA como entradas
TRISC=0; //PORTC como salida
PORTC=0;
PORTA=0;
OPTION_REG=0b00000111; //Timer0 temporizador con preescalador de 256
INTCON=0b10100000; //Configuracin del registro INTCON para activar interrupciones
TMR0=0; //Timer 0 comienza en 0
c_time=0; //Reinicio del contador
lcd_init();//Inicia LCD
lcd_cmd(_LCD_CURSOR_OFF); //Apaga el cursor del LCD
lcd_cmd(_LCD_CLEAR); //Limpia la Pantalla del LCD
ADC_init(); //Inicia ADC
while(1){
3. Simulacin
Para la simulacin, se utiliz un sensor de temperatura, el cual puede controlarse su temperatura
manualmente. Adems se incluy un foco de intensidad modulada, de modo que cuando el PWM
tenga el valor de 0, el foco estar brillantemente prendido, mientras que si el PWM est en 255,
el foco estar completamente apagado. En el LCD se muestra el valor del ciclo de trabajo.
Utilizando como referencia el 0 como mxima intensidad y el 255 como intensidad nula, se subir
la temperatura del sensor manualmente con una velocidad rpida/lenta. Recordemos que nuestro
setpoint inicialmente es 50C y que adems en la implementacin utilizamos un rel de estado
slido con un enable en baja, por lo que su lgica es inversa.
Primero iniciamos con el sensor en 20C, temperatura ambiente, por lo que en teora el duty cycle
debera ser muy pequeo ya que est muy lejano a los 50C.
En la imagen anterior podemos observar claramente que el set point se encuentra en 50C, la
lectura del sensor es de aproximadamente 20C, y el duty cycle es de 0, por lo tanto el foco se
enciende intensamente.
Posteriormente, subimos la temperatura del foco por arriba del setpoint, de modo que creamos
el pequeo sobretiro caracterstico de un sistema controlado por PID, a continuacin mostramos
captura de pantalla de lo mismo:
Podemos observar que el duty cycle se est alejando de 0, y el foco baja su intensidad, debido
a que la temperatura deseada ya se alcanz y se pas, pero necesitamos bajar la intensidad
para regresar al punto deseado, por lo que de ahora en adelante la temperatura debera estar
bajando hasta volver a alcanzar el valor de 50C.
Una vez que el sensor baja a una temperatura cercana al set point, se puede observar que el
duty cycle es muy cercano a 255, por lo que el foco estar muy tenue, brindando el calor justo
para mantener una temperatura constante, manteniendo el valor de la temperatura oscilando
muy poco alrededor de los 50C, pero nunca apagando el foco.
4. Circuito Elctrico
5. Conclusiones
Esta prctica fue bastante retadora, en otras clases ya habamos realizado un control PI, o PID,
pero era mucho ms fcil debido a que utilizbamos Simulink y descargbamos el modelo de
bloques, solamente cambibamos las constantes de control; sin embargo, el reto para sta clase
fue hacerlo desde cero, utilizando un lenguaje de programacin en donde la operacin de integral
de una funcin y la derivada, no estn precargadas, por lo que se necesitan hacer unas
manipulaciones, para lo que utilizamos el concepto de suma de rectngulos de errores para la
integral, y la pendiente de los errores, para la derivada. En esta parte fue lo complicado porque
debamos asegurarnos que en efecto debemos estar comparando errores actuales, y errores
guardados anteriormente.
Otra cosa que aprend fue a comprender el comportamiento de un sistema sin observar su
grfica, como el sobretiro que tiene nuestro control de temperatura la primera vez que va desde
la temperatura ambiente al setpoint, incluso pens que haba programado mal, porque a veces
el valor suba hasta los 60C y lo apagaba, pero no estaba considerando que las K podran
generar un sobretiro bastante grande, por lo que deba esperarme a que el sistema reaccionara
y bajara la intensidad del foco, para poder juzgar correctamente.