UNIVERSIDAD NACIONAL
AUTNOMA DE MXICO
FACULTAD DE INGENIERA
DIVISIN DE INGENIERA ELCTRICA
INSTRUMENTACIN VIRTUAL
Proyecto final
Controlador PID de velocidad
para un motor de DC con LabVIEW
Alumnos: Salinas Barrera Zahyre Manuel
Profesor: Ing. Alberto Ramiro Garibay Martnez
Fecha de Entrega: 06 de Junio del 2014
I. Diagrama de conexiones.
El circuito elctrico utilizado para el proyecto fue un circuito sencillo de implementar, debido a que
los elementos electrnicos y el elemento electromecnico (motor cd) son de fcil adquisicin y aplicacin.
Para una mejor comprensin del circuito implementado lo representamos como un sistema de control para
el cual el diagrama de bloques es el siguiente:
Fig.1 Diagrama de bloques del circuito elctrico.
El diagrama tiene 5 etapas de desarrollo, la primera es la obtencin del error, el cual es la resta
del Set Point con los datos adquiridos por sensor (la salida de la planta).
La segunda etapa es la etapa de control, es decir, el bloque de PID. De igual forma, esta etapa al
igual que la primera se realiza virtualmente en Labview, el cual consiste en la manipulacin del error en
conjunto con tres ganancias fundamentales: Kp, Ti y Td. Se utiliz el bloque de PID definido en el mdulo
de Control y Diseo de Labview 2012 por motivos de practicidad.
La tercera etapa consiste en la conversin de la salida del PID, una salida totalmente digital, a una
salida de voltaje analgica capaz de ser interpretada por nuestra planta, que en este caso es nuestro motor
de CD, el cual adems representa nuestra cuarta etapa de desarrollo. Segn la salida de control, el motor
dar ms o menos revoluciones (control de su velocidad).
Finalmente, la quinta etapa de desarrollo es el sensor de velocidad, que en este caso es el interruptor
ptico H22A1 interpreta la mecnica del motor como pulsos o seales digitales, los cuales son interpretados
por la tarjeta de adquisicin DAQ y enviados a Labview para su manipulacin y acondicionamiento por
medio del programa antes descrito. Despus de esta ltima etapa de desarrollo, se repite la primera etapa
de desarrollo y as de forma indefinida.
Explicacin del funcionamiento del circuito.
Para poder saber la velocidad del motor DC, utilice un encoder ptico formado por un circuito
integrado H22A1 (interruptor ptico ranurado), que genera un impulso de 5V cada que un aspa de la hlice
acoplada al motor pasa por l, el 73ls14d es un inversor con disparador Schmitt que ayuda a acondicionar
la seal y eliminar el ruido.
R1
En la figura 1, podemos ver cmo queda conectado el circuito a la NI USAB-600, el pin 31(+5) y
32(GND) nos dan la alimentacin para polarizar el encoder. La salida del inversor con disparador Schmitt
va al pin 29(PFIO) que es la entrada para utilizar el contador digital de la DAQ. Los pines 14(AO1) y pin
15(GND) son la salida analgica de la tarjeta que nos proporciona el voltaje para alimentar el motor de DC.
U2A
H22A1
220
R2
5k
U1A
74LS14D
M1
-
Te
Ea
Fig. 1. Diagrama de conexiones del proyecto.
II. Caracterizacin del motor.
Para poder utilizar el bloque PID del toolkit control design and simulation de LabVIEW hay que
observar en que rango de valores el motor de DC funciona de manera lineal para lo cual se realiz el
siguiente vi en labview(figura 3).
Por rapidez utilizamos el DAQ assistant de labview para configurar las tareas, una llamada
ENTRADA ANALGICA que usamos para captar la forma de onda del encoder y otra que se llama
SALIDA ANALOGICA para alimentar el motor de DC.
Fig 3. Diagrama de bloques usado para caracterizar el motor de DC.
En la parte central del VI, podemos obsevar como se manipula la seal analgica, usamos el Tone
Measurements para obtener la amplitud y la frecuencia de la seal. Al poner a correr el vi, se ira
aumentado el voltaje en la seal de 0.01 V en 0.01 V hasta llegar a 4.98 V, para hacerlo utilizamos un shitf
register que guarda el valor de cada iteracin y le sumamos 0.01.
De la salida del tone measurements, obtenemos la amplitud, si sta es menor que 1 significa que el
Motor DC no est girando, por lo tanto el encoder entregar una seal sin pulsos (y que puede estar en
estado alto o bajo segn donde haya parado el disco), y la frecuencia que se mide ser la del ruido de la
seal, mas no de la velocidad. Si la amplitud de la seal es mayor que 1 el motor estar girando y el Encoder
entregar una seal tipo tren de pulsos. Entonces la frecuencia medida s ser la cantidad de pulsos por
segundo. Las operaciones siguientes son para transformar la frecuencia en revoluciones por minuto (rpm),
dividimos los pulso entre 3, porque l la hlice acoplada tiene 4 aspas y las multiplicamos por 60.
Para guardar todos los datos generados construimos un arreglo y lo vamos graficando en un XY
graph.
En la siguiente figura se observa el panel frontal del vi, utilizado para caracterizar el motor.
Fig. 4 Panel frontal del vi utilizado para caracterizar el motor.
De la figura 5 determinamos que el motor empieza a funcionar a 1.7V, y tiene un comportamiento
lineal hasta los 4.2 V, en el cual se comienza la saturacin.
As quedaran los datos obtenidos.
Voltaje [V]
1.7
4.2
Velocidad (rpm)
300
2050
La ecuacin de la recta que modela el comportamiento del motor es v= 700*V - 890 (rpm).
Fig. 5. Grfica de los datos obtenidos en la caracterizacin del motor.
III. Explicacin del vi del control PID implementado y sintonizacin.
Para construir el diagrama de bloques utilizamos una estructura Timed Loop que permitir ejecutar
el proceso que se encuentra en su interior en el tiempo dt que se le indique, en este caso utilizamos 100
ms, ya que fue el tiempo en el que mejor observbamos la seal al igual que el pid controlaba mejor. Un
milisegundo era muy rpido y 1000 ms era muy lento, en la siguiente figura se observa la configuracin del
tiempo de la estructura, adems de la configuracin de canal analgico que nos mandar el voltaje a las
terminales del motor.
Fig. 6 Parte del diagrama de bloques con la configuracin de la salida analgica.
En la siguiente figura observamos la configuracin del canal digital de la DAQ NI6009 que utilizamos
para contar la cantidad de pulsos del encoder. Es preferible utilizar el contador de la DAQ ya que el vi es
ms liviano y adems se reduce el ruido que se genera al utilizar una seal analgica.
La DAQ NI 6009 se configura de tal manera que la cuente empiece en 0, y cuente cuando la pulso
vaya de bajada (falling) afuera del bloque se detiene el canal y se limpia adems de que esta agregado un
aviso de error en caso de que lo haya.
Fig. 7 Parte del diagrama de bloques con la configuracin del contador de la DAQ.
Una vez se ha adquirido la seal del encoder por medio del contador de la tarjeta DAQ. Se resta el
valor actual del contador con el valor en la iteracin anterior para obtener el nmero de pulsos en una
iteracin. Los multiplicamos por 1000 y los dividimos entre el perodo, luego se divide entre 4 (nmero de
aspas acopladas al motor) y las multiplicamos por 60 para obtener la velocidad en rpm. Esto se observa en
la figura 8.
Fig. 8 Parte del central de vi y configuracin del bloque PID.
Para controlar el motor, utilizamos el bloque PID de labView, la variable de proceso es la velocidad
en rpm, el SetPoint est configurado de 300 rpm a 2050 rpm que es el rango de velocidades en el que el
motor tiene un comportamiento lineal. El rango de salida del PID es de 1.7 V a 4.2 V, la salida del PID es
el voltaje suministrado al motor para que gire a la velocidad deseada, graficamos la salida en un waveform
chart que muestra los datos adquiridos en un rango constante de tiempo.
Para sintonizar el pid utilizamos el mtodo de Ziegler-Nichols, moviendo la Kp hasta que el motor
oscilar y se midi el perodo de la seal como se muestra a continuacin.
Fig. 9. Salida del motor oscilando, de aqu tomamos el tiempo.
El tiempo es de 1818 600 = 1218 ms = 1.218 s = 0.0203 min
De aqu calculamos el Ti = 0.5*0.0203 = 0.01015 min (en minutos porque as lo pide el controlador).
Y Td = 0.0203/8 = 0.0025375 min
Quedando as los parmetros del controlador.
Kp
Ti
Td
0.0015
0.1015
0.0025375
La parte final es una estructura que permite guardar los datos que se generan, el voltaje y la
velocidad y cuenta con un botn para seleccionar si se guardan los datos o no. Tambin el vi cuenta con
un botn de paro.
El sistema a lazo abierto (utilizando solo la ganancia proporcional) sigue al Setpoint bastante bien
aunque tiene unas oscilaciones de ms menos 50 rpm en estado estable. Con lazo cerrado se desplaza
ms suave la trayectoria hacia el setpoint aunque presentaba un sobrepaso considerable aunque oscilaba
un poquito ms en estado estable, creo que se debe a la resolucin del encoder ya que el que usamos solo
tiene 4 lneas a diferencia de otros encoders que tiene 96, 100 0 ms lneas que dan una resolucin mejor.
Fig. 10 Parte del vi que guarda los datos generados.
Fig. 11 Diagrama de bloques completo del vi principal.
Fig.12 Panel frontal del controlador PID de velocidad.
El panel frontal cuenta con lo siguiente:
1.
2.
3.
4.
5.
5.
6.
7.
8.
9.
Una grfica que muestra el la velocidad del motor y el setpoint.
Un indicador de velocidad en rpm.
Un indicador del voltaje.
Un botn deslizante para manipular el setpoint.
Un botn de paro
Un arreglo de tres botones para manipular las variables del controlador PID
Un control para seleccionar el canal digital.
Un control para seleccionar el canal analgico.
Un botn para seleccionar la ruta donde est el archivo para guardar los datos.
Un botn para seleccionar si se guardan los datos o no.
Fig 13. Implementacin fsica del proyecto.
IV. CONCLUSIONES.
Este proyecto me ense una aplicacin ms robusta para implementar instrumentos virtuales con
LabVIEW, utilizamos el contador de la DAQ Ni-6009 que vi es muy til para adquirir los datos de un encoder.
Al comienzo del proyecto tuve muchas dificultades ms que nada por la electrnica, use el encoder de un
ratn pero al querer leer el tren de pulsos el led IR se quemaba, despus prob con un motor con encoder
incluido pero que haciendo pruebas me percate que estaba inutilizado, as que hice uno ptico que funciono
bastante bien, aunque se puede mejorar haciendo un codificador para mejorar su resolucin.
La parte de la programacin fue sencilla una vez caracterizado el motor, si no se hace esta parte
se corre un riesgo de equivocacin al configurar el bloque PID, otro reto considerable fue el de poner el
tiempo a la estructura time looped, pero en base a la prueba y el error quedo bastante bien.
Como mencionaba en la parte de sintonizacin, en lazo cerrado oscilaba en estado estable por 50
rpm, lo cual es un error del 5% lo cual lo considero aceptable para el tipo de motor que se estaba usando
un motor DC brushless, y en lazo cerrado se controla la velocidad de manera ms suave aunque hay que
variar manualmente los tiempos Ti y Td para encontrar la forma ms ptima de control. Creo que es un
proyecto que muestra lo que se podra hacer en la vida laborarl formalmente y ver lo complicado que puede
ser sintonizar un PID de manera manual aunque con prctica esto se tornara ms fcil.
[Link]
[Link]
[Link]
[Link]