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 ordenador.
Para comenzar explicare la estructura del programa en LabVIEW, el programa esta 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 unicamente a el error multiplicado por una constante, es decir wk = Kp*Ek. El error es calculado en el programa principal restando el valor muestreado de el valor del set point.
El controlador Integral es mas 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 formula 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 de los valores de los controladores son sumados y enviados al PIC donde este valor se vera reflejado en el ciclo de trabajo de el PWM que controla el motor. Para evitar posibles ambiguedades 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 sera de 255 y si es inferior a 0 el PWM sera de 0.
En el front panel se pueden visualizar y modificar el set point y cada una de las constantes (kp,ti y td), ademas 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 varia el ciclo útil del PWM.
Para descargar: PID Motor.rar
Si tienes alguna inquietud no dudes en comentar.
Para comenzar explicare la estructura del programa en LabVIEW, el programa esta 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 unicamente a el error multiplicado por una constante, es decir wk = Kp*Ek. El error es calculado en el programa principal restando el valor muestreado de el valor del set point.
El controlador Integral es mas 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 formula 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 de los valores de los controladores son sumados y enviados al PIC donde este valor se vera reflejado en el ciclo de trabajo de el PWM que controla el motor. Para evitar posibles ambiguedades 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 sera de 255 y si es inferior a 0 el PWM sera de 0.
En el front panel se pueden visualizar y modificar el set point y cada una de las constantes (kp,ti y td), ademas 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 varia el ciclo útil del PWM.
Para descargar: PID Motor.rar
Si tienes alguna inquietud no dudes en comentar.