En la publicación Control PID para motor DC – Lectura y Potencia comentaba sobre la primera parte de este proyecto y sobre sus interfaces de lectura y potencia, ahora esta publicación estará dedicada a la programación del controlador en LabVIEW y la comunicación USB entre el PIC y el computador.

Para comenzar explicaré la estructura del programa en LabVIEW, el programa está compuesto por un While Loop que permite ejecutar iteraciones continuamente, al inicio del programa se establece la configuración del COM virtual con el que se va a comunicar el programa, es decir datos como el nombre del puerto, velocidad de transmisión y numero de bits en la transmisión. Dentro del While Loop se establece la apertura del puerto y el tamaño del buffer de recepción, luego se hace la conversión del dato de tipo «string» como lo envía el PIC a tipo «int» para ser usado en el PID. En la programación se usaron subVIs para cada uno de los controladores separados y luego sumar su resultado.

El primer controlador es el Proporcional, según la teoría este corresponde únicamente a el error multiplicado por una constante, es decir wk = Kp*Ek. El error es calculado en el programa principal restando el valor muestreado del valor del set point.

El controlador Integral es más complejo que el Proporcional, en este se tienen en cuenta el tiempo de muestreo, una constante o tiempo de integración, nuevamente el error, la constante de proporcionalidad y la salida del controlador en la iteración anterior (esta se establece en el programa principal). De esta forma se cumple la fórmula pk = ((kp*t/ti)*ek)+pk-1 de donde pk es la salida del controlador, kp es la constante de proporcionalidad, t es el tiempo de muestreo, ti es el tiempo de integración, ek es el error y pk-1 es el valor del controlador en ciclo inmediatamente anterior.

El controlador Derivativo tiene la siguiente ecuación qk = (td*kp/t)*(ek-ek-1), en esta ecuación de tiene a qk que es la salida del controlador, td que corresponde al tiempo de derivación, kp es la constante de proporcionalidad, t el periodo de muestreo, ek el error y ek-1 el valor del error en el ciclo inmediatamente anterior.
Luego que los valores de los controladores son sumados y enviados al PIC donde este valor se verá reflejado en el ciclo de trabajo del PWM que controla el motor. Para evitar posibles ambigüedades en el ciclo de trabajo del PWM se hace una restricción en la que, si el valor del PID es superior a 255, el PWM será de 255 y si es inferior a 0 el PWM será de 0.

En el front panel se pueden visualizar y modificar el set point y cada una de las constantes (kp, ti y td), además una gráfica de la velocidad y una de la salida del PID. El PIC hace la lectura de la velocidad del motor, establece la comunicación USB, recibe el valor del PID y varía el ciclo útil del PWM.
Para descargar: PID Motor
Si tienes alguna inquietud no dudes en comentar.