Sei sulla pagina 1di 14

DEPARTAMENTO DE ELÉCTRICA ELECTRÓNICA

ASIGNATURA: CONTROL DIGITAL

PROYECTO TERCER PARCIAL

“IMPLEMENTACION DE UN CONTROLADOR PID2F PARA


CONTROLAR UN MOTOR DC”

Realizado por:

Alvaro Quisilema

NRC: 1993

FECHA: 23 de febrero del 2018


Tabla de Ilustraciones
Ilustración 1 Diagrama de Bloques de un PID ............................................................................... 4
Ilustración 2 Diagrama de un PID digital ....................................................................................... 4
Ilustración 3 Implementación digital de un PID ..............................Error! Bookmark not defined.
Ilustración 4 Esquema de un PID tipo2 ......................................................................................... 4
Ilustración 5 Respuesta de la salida a entrada propuesta ............................................................ 6
Ilustración 6 Modelo Propuesto.................................................................................................... 6
Ilustración 7 Diagrama de conexiones .......................................................................................... 7
Ilustración 8 Respuesta a partir de la entrada con un controlador PID ........................................ 9
Ilustración 9 HMI a utilizarse ....................................................................................................... 12
Ilustración 10 Esquema a aplicar en HMI .................................................................................... 12
Ilustración 11 Simulación de planta en funcionamiento ............................................................ 13
Ilustración 12 Rechazo a perturbaciones .................................................................................... 13
Ilustración 13 Seguimiento a referencia ..................................................................................... 14

2
TEMA: CONTROLADOR DE UN MOTOR DC

OBJETIVOS:

 Realizar la identificación de la función de transferencia del motor en tiempo discreto.


 Realizar los cálculos de las constantes q0, q1,q2 y G del controlador tipo PID2F para
realizar el controlador y posteriormente implementarlo en el motor y verificar su
funcionamiento en cuanto a los parámetros de desempeño, seguimiento a referencia y
rechazo a perturbaciones.

RESUMEN
Se realizó el control de un motor dc con reducción, para dicho procedimiento se realizó una
identificación utilizando un step de 127 con el que pudimos obtener los datos necesarios para
que utilizando la función arcx de Matlab se identifica la función de transferencia discreta del
motor DC.

Posteriormente ingresamos los parámetros de desempeño al programa de Matlab donde


obtenemos estos parámetros de desempeño deseados y obtenemos las constantes del
controlador PID, utilizamos un sensor óptico y una rueda de encoder con 20 agujeros para
medir la frecuencia y posteriormente

Introducción

LabVIEW es una plataforma y entorno de desarrollo para diseñar sistemas, con un


lenguaje de programación visual gráfico. Recomendado para sistemas hardware y
software de pruebas, control y diseño, simulado o real y embebido, pues acelera la
productividad. El lenguaje que usa se llama lenguaje G, donde la G simboliza que es
lenguaje Gráfico.

HMI es una interfaz de usuario asistida por ordenador, actualmente una interfaz de
uso, también conocida como interfaz hombre-máquina (IHM), forma parte del
programa informático que se comunica con el usuario.

Arduino es una plataforma de hardware y software de código abierto, basada en una


sencilla placa con entradas y salidas, analógicas y digitales, en un entorno de desarrollo
que está basado en el lenguaje de programación Processing. Es decir, una plataforma
de código abierto para prototipos electrónicos.
Al ser open source, tanto su diseño como su distribución, puede utilizarse libremente
para el desarrollo de cualquier tipo de proyecto sin necesidad de licencia.

3
Marco teórico
CONTROLADOR PID

Ilustración 1 Diagrama de Bloques de un PID

Los miembros de la familia de controladores PID, incluyen tres acciones: proporcional (P),
integral (I) y derivativa (D). Estos controladores son los denominados P, I, PI, PD y PID.
La acción PID reúne las ventajas de cada una de las tres acciones de control individuales. La
ecuación de un controlador con esta acción combinada se obtiene mediante:

El controlador PID digital es:

Ilustración 2 Diagrama de un PID digital

Implementación digital de un PID:

PID TIPO 2

Ilustración 3 Esquema de un PID tipo2

4
El PID tipo 2 presenta la estructura mostrada en la imagen anterior, la derivada del
error provoca cambios en la salida.
Este tipo de PID tiene un sobreimpulso menor que el tipo 1, de ahí porque se lo
considera uno de los más ideales y efectivos para trabajar, a más de eso este PID es
capaz de rechazar perturbaciones.

MODELAMIENTO DE PLANTA A UTILIZAR

Datos
Los datos serán tomados a partir del encoder para un step de 127.

Tabla 1 Datos tomados del motor

5
Se procede a realizar la identificación de la planta a partir de los datos obtenidos y mediante la
función arx se obtiene la función de transferencia respectiva.

Ilustración 4 Respuesta de la salida a entrada propuesta

El modelo propuesto debido a que se está utilizando un PID tipo 2 será:

Ilustración 5 Modelo Propuesto

El diagrama de conexiones para el trabajo que se va a presentar es:

6
Ilustración 6 Diagrama de conexiones

Código en Matlab

Control de un Motor DC
T=0.2;
z=iddata(salida,entrada,T);
m1=arx(z,[2 2 1]);
gp = tf(m1);

%Parametros de performance
Mp = 1/100;
syms zeta;
zeta = solve(Mp == exp(pi*zeta/sqrt(1-zeta^2)),zeta);
zeta = eval(zeta(1))
ts = 6;
wn = 4/(zeta*ts)

[b,a] = tfdata(gp,'v');
s1 = -wn*zeta+wn*sqrt(1-zeta^2)*i;
s2 = conj(s1);
z1 = exp(s1*T);
z2 = conj(z1);
d = poly([z1 z2 0 0])

A = [b(2) 0 0 1;
b(3) b(2) 0 a(2)-1;
0 b(3) b(2) -a(2)+a(3);
0 0 b(3) -a(3)];

C = [d(2)-a(2)+1;
d(3)+a(2)-a(3);
d(4)+a(3);
d(5)];

B = A\C
B = B';

%Controlador PID tipo 2

pid = tf([B(1) B(2) B(3)],[1 B(4)-1 -B(4)],T)

7
s0 = B(1);
s1 = B(2);
s2 = B(3);
r = B(4);
B
G = s0 + s1 + s2;

step(feedback(pid*gp,1))

zeta =

-0.8261

wn =

-0.8070

d =

1.0000 -1.7431 0.7659 0 0

B =

40.8003
-56.3708
19.6856
-0.2492

pid =

40.8 z^2 - 56.37 z + 19.69


--------------------------
z^2 - 1.249 z + 0.2492

Sample time: 0.2 seconds


Discrete-time transfer function.

B =

40.8003 -56.3708 19.6856 -0.2492

8
Ilustración 3 Respuesta a partir de la entrada con un controlador PID

Published with MATLABR2014a

La Ilustración 3 Respuesta a partir de la entrada con un controlador PID representa la


respuesta de salida a una entrada escalón unitario, la cual se presenta ya con el controlador
diseñado. De esta gráfica se obtuvo el sobreimpulso, el cual es de 1.25%, considerado
aceptable para nuestra aplicación ya que se aproxima al valor propuesto.

Código Arduino

#include "Filter.h";

ExponentialFilter<float> filtroMotor(90,0);

float velocidad_filtrada;

const byte pinEncoderMotor = 2;

unsigned int contador = 0;

float sp=0; //setpoint

float y [] = {0,0,0}; //{y,yk1,yk2}

float m [] = {0,0,0}; //{m,mk1,mk2}

float s [] = {40.8003, -56.3708, 19.6856, -0.2492}; // {s0,s1,s2,r}

float G = s[0] + s[1] + s[2]; //ganancia adicional del PID tipo II

9
int out = 0;

void velocidad(){

contador++;

int tiempo = 0;

int intervaloActual = 0;

const int intervaloDeTiempo = 200; //125 milisegundos

float pulsosPorVuelta = 40;

double rpm = 0;

void setup() {

Serial.begin(9600);

//TCCR2B = (TCCR2B & B11111000) | 0x01;

pinMode(pinEncoderMotor, INPUT);

attachInterrupt(digitalPinToInterrupt(pinEncoderMotor),velocidad,CHANGE);

int a = 0;

void loop() {

intervaloActual = millis() - tiempo;

if ( intervaloActual >= intervaloDeTiempo){

detachInterrupt(digitalPinToInterrupt(pinEncoderMotor));

rpm = (1000.0/pulsosPorVuelta)*(float)contador/(float)intervaloActual; //
(contador/intervaloActual)*(1 rev/200 pulsos)*(60000 milis / 1 min)

contador = 0;

tiempo = millis();

velocidad_filtrada = rpm;

filtroMotor.Filter(velocidad_filtrada);

y[0]= filtroMotor.Current();

float rpmf = filtroMotor.Current();

Serial.print(rpmf);Serial.print('\t');Serial.println(out);

attachInterrupt(digitalPinToInterrupt(pinEncoderMotor),velocidad,RISING);

10
if(Serial.available()>0){

String bufferString="";

while(Serial.available()>0){

bufferString +=(char)Serial.read();

a = bufferString.toInt();

sp = a;

int FE = (sp - y[0]);

m[0] = s[4]*m[2] - (s[4]-1)*m[1] - s[0]*y[0] - s[1]*y[1] - s[2]*y[2] + G*sp;

m[2] = m[1];

m[1] = m[0];

y[2] = y[1];

y[1] = y[0];

if(m[0]>255){m[0]=255;}

if(m[0]<0){m[0]=0;}

out = m[0];

analogWrite(6,out);

delay(199);

HMI

Para controlar de una manera más amigable para el operario se realiza un HMI de
CONTROL donde se podrá manejar el set point de la planta y poder divisar como actúa
nuestro controlador.

11
Ilustración 4 HMI a utilizarse

Para poder tomar los datos y enviarlos lo hacemos por medio de una conexión serial
con la tarjeta de adquisición de datos.

Ilustración 5 Esquema a aplicar en HMI

12
Resultados

Ilustración 6 Simulación de planta en funcionamiento

El rechazo a perturbaciones se puede observar al realizar un intento de frenado del


motor, el mismo que deberá aumentar sus revoluciones para intentar romper esta
perturbación y llegar al punto enviado como control.

Ilustración 7 Rechazo a perturbaciones

Se demuestra que el mismo tiene un seguimiento a referencia adecuado:

13
Ilustración 8 Seguimiento a referencia

CONCLUSIONES:

 El controlador funciona de acuerdo a los parámetros establecidos de tiempo de


establecimiento, sobreimpulso y periodo de muestreo,
 Se realizó un controlador PID2F con el fin que el overshoot sea el mínimo
posible y este en capacidad de rechazar las perturbaciones.
 Se escogió un ts de 6, debido a que el presente modelo tiene una dinámica
lenta, este modelo se intentó estabilizar para ts de 0.1, 1, 2, 5 y con todos los
valores, existía un sobreimpulso demasiado alto, el cual superaba el 50%, valor
que no es admisible para nuestros fines de control, por tanto a partir de los 6
segundos se consiguió una estabilización y buen control.
 El PID realizado como se puede apreciar rechaza perturbaciones y tiene un
seguimiento a referencia.
Bibliografía
Lara, R. R. (2007, Febrero). Sistemas Digitales de control en tiempo discreto . Retrieved from
https://upcommons.upc.edu/bitstream/handle/2117/6123/TEMA6.pdf

14

Potrebbero piacerti anche