Professional Documents
Culture Documents
INFORME 2
CURSO: SISTEMA DE CONTROL DIGITAL
PROFESOR: Ing. ZENÓN CUCHO M.
TEMA: CONTROL PID CON MICROCONTROLADOR
ALUMNOS:
APOLINARIO ROJAS LUIS ANGEL ………1513220232
MITCHELL OCHANTE GAMBOA ………….1513220268
GRUPO HORARIO: 01L -90G
AÑO 2018
CALLAO- PERU
PROF: ING. ZENÓN CUCHO M. SISTEMA DE CONTROL DIGITAL
2 UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA
SISTEMA DE CONTROL DIGITAL
TECLADO
(set point)
VISUALIZACION
SENSOR LM35
Con el LM35 sobre la mesa las patillas hacia nosotros y las letras del encapsulado
hacia arriba tenemos que de izquierda a derecha los pines son: VCC - Vout - GND.
+1500mV = 150ºC
+250mV = 25ºC
-550mV = -55ºC
Temperatura
Voltaje de
en bits
entrada
CONVERSOR
A/D
0.01T
0.01T 0.01T
LUEGO: T T Vref 2.55 Volts
RESOLUCION Vref
255
CONTROLADORES TIPO P
𝑆𝑆𝑆𝑆𝑆𝑆𝑆: K1
G
1 = 135.14 P 1 z1
𝑆
𝑆𝑆 = 𝑆1
𝑆−1
𝑆𝑆𝑆 𝑆𝑆 tan𝑆𝑆:
𝑆
𝑆𝑆 = 135.14
𝑆–1
Escriba aquí la ecuación.
PROGRAMACION
#INCLUDE <16F887.h>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#include <lcd420.c>
#BYTE PORTA= 5
#BYTE PORTB= 6
#BYTE PORTC= 7
#BYTE PORTD= 8
int VECES=39,seg=0;
int16 adc,control=0;
float yM=0,R=1500.0,e=0.0,e_1=0.0,e_2=0.0,u=0.0,u_1=0.0;
float kp,ti,td,q0,q1,q2,T=0.1;
float k=0.535,tao=10.0,theta=1.0;
float TsMA,Wn,P1,P2;
RELOJ()
VECES=39;
if(seg==1)
seg=0;
output_toggle(pin_d0);
e=R-yM;
// Controle PID
u = 5000.0
if (u <= 0.0)
//escalizo la u de mV a bits, en el caso del PWM ser a 1Khz con una resolucion
de 10
control=u*1000/5000
e_2=e_1;
e_1=e;
u_1=u;
set_pwm1_duty(control);
void main()
set_tris_c(0);
set_tris_d(0);
kp=(1.2*tao)/(k*theta);
ti=2*theta;
td=0.5*theta;
//*************************************************************************//
q0=kp*(1+T/(2*ti)+td/T);
q1=-kp*(1-T/(2*ti)+(2*td)/T);
q2=(kp*td)/T;
while(1)
yM=adc*5000.0/1024.0;
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp: %f",yM/10);
lcd_gotoxy(1,2);
lcd_gotoxy(1,3);
printf(lcd_putc,"kd:%f",((Kp*td)/T));
}}
FUNCIÓN DE TRANSFERENCIA
𝑆𝑆𝑆 𝑆𝑆𝑆𝑆𝑆𝑆
(𝑆) = 𝑆(𝑆 − 2) + 𝑆1 𝑆(𝑆) + 𝑆2 (𝑆) + 𝑆3 𝑆(𝑆 − 2)
𝑆1 = 𝑆𝑆 + 𝑆𝑆 ⁄𝑆 + 𝑆𝑆 𝑆 ; 𝑆 = 0.1𝑆𝑆𝑆
𝑆2 = 𝑆𝑆 𝑆 − 2 𝑆𝑆 ⁄𝑆
𝑆3 = 𝑆𝑆 ⁄𝑆 − 𝑆𝑆
𝑆1 + 𝑆2 𝑆 −1 + 𝑆3 𝑆 −2
𝑆𝑆 𝑆𝑆 𝑆𝑆𝑆𝑆 =
1 − 𝑆 −1
𝑆𝑆𝑆𝑆𝑆𝑆𝑆 𝑆𝑆𝑆 𝑆𝑆𝑆𝑆𝑆 :
𝑆1 = 135.14 ; 𝑆 = 0.1𝑆𝑆𝑆
𝑆2 = −246.16
𝑆3 = 112.14
𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆:
135.14𝑆 2 − 246.16 + 112.14
𝑆𝑆𝑆𝑆 =
(𝑆 − 1)𝑆
𝑆𝑆𝑆 𝑆𝑆 tan𝑆𝑆:
(𝑆 − 0.9108 − 0.0179𝑆)(𝑆 − 0.9108 + 0.0179𝑆)
𝑆𝑆𝑆𝑆 =
(𝑆 − 1)𝑆
𝑆𝑆𝑆𝑆𝑆𝑆:
𝑆𝑆𝑆𝑆𝑆: 𝑆 = 1, 𝑆 = 0
𝑆𝑆𝑆𝑆𝑆: 𝑆 = 0.9108 + 0.0179𝑆
𝑆 = 0.9108 − 0.0179𝑆
#INCLUDE <16F887.h>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#include <lcd420.c>
#BYTE PORTA= 5
#BYTE PORTB= 6
#BYTE PORTC= 7
#BYTE PORTD= 8
int VECES=39,seg=0;
int16 adc,control=0;
float yM=0,R=1500.0,e=0.0,e_1=0.0,e_2=0.0,u=0.0,u_1=0.0;
float kp,ti,td,q0,q1,q2,T=0.1;
float k=0.535,tao=10.0,theta=1.0;
float TsMA,Wn,P1,P2;
RELOJ()
VECES=39;
if(seg==1)
seg=0;
output_toggle(pin_d0);
e=R-yM;
// Controle PID
u = 5000.0
if (u <= 0.0)
u = 0.0;
//escalizo la u de mV a bits, en el caso del PWM ser a 1Khz con una resolucion
de 10
control=u*1000/5000
e_2=e_1;
e_1=e;
u_1=u;
set_pwm1_duty(control);
void main()
set_tris_c(0);
set_tris_d(0);
kp=(1.2*tao)/(k*theta);
ti=2*theta;
td=0.5*theta;
//*************************************************************************//
q0=kp*(1+T/(2*ti)+td/T);
q1=-kp*(1-T/(2*ti)+(2*td)/T);
q2=(kp*td)/T;
while(1)
yM=adc*5000.0/1024.0;
lcd_gotoxy(1,1);
lcd_gotoxy(1,2);
lcd_gotoxy(1,3);
printf(lcd_putc,"kd:%f",((Kp*td)/T));
lcd_gotoxy(11,3);
printf(lcd_putc,"ki:%f",((Kp*T)/ti));
lcd_gotoxy(1,4);
printf(lcd_putc,"kd:%f",((Kp*td)/T));
5. CONCLUSIONES