Introducción

PID_logo
Bienvenido a la segunda parte de esta serie de control, que de entrada no estaba planeada pero como lo prometido es deuda ahora toca la parte del controlador, por cierto antes de continuar te recomiendo que primero veas el primer capítulo como encontrar la función de transferencia pero en fin, si crees o sabes lo que estas haciendo puedes omitir mi tutorial y seguir adelante, pero que conste que lo sugerí.
En este tutorial voy a diseñar un controlador para hacer el control de posición de un motor de CD, utilizando el famoso (a.k.a la vieja confiable) algoritmo PID clásico forma paralela.
Cabe señalar que esta técnica también es aplicable para un motor de CA, lo único que cambia seria el circuito de control, pero bueno, no me quiero adelantar mucho, eso ya lo dejo para el último capítulo de esta serie, en este tutorial me voy a enfocar en el diseño del controlador para posteriormente implementarlo en un microcontrolador, microprocesador, xbox one, ps4, nintendo switch, alcatel o cualquier dispositivo capaz de realizar calculos (excepto las calculadoras casio con paneles solares que nunca funcionaban y tenias que ponerles pilas).

IMPORTANTE:

Este tutorial utiliza Simulink © de MathWorks para las simulaciones.

Teoria


¿Que es PID?
PID son las siglas de Proporcional (trata de minimizar el error),Integral (hace cero el error) y Derivativo (se adelanta al error).
La ley de control del PID es la siguiente:
Ley de control
Ahora vamos con lo realmente importante, para implementar esta ley de control se pueden utilizar dispositivos analógicos como los siempre confiables OPAMS, la buena noticia es que la parte proporcional es un simple amplificador inversor (no inversor) para darle la ganancia deseada, ahora la mala noticia viene en la parte integral y en menor medida la derivativa.
La ventaja que presenta implementarlo utilizando dispositivos analógicos es la velocidad PERO al menos que estes diseñando un dispositivo médico o un osciloscopio, los cuales requieren tiempos de respuesta elevadamente altos (rozando el tiempo real), se puede utilizar un dispositivo digital.
Obviamente (tal vez no) para poder implementarla en un dispositivo electrónico se tiene que pasarla a su forma discreta, dicho de otra manera pasar del dominio del tiempo (amplitud y tiempo continuo), a su forma discreta (amplitud y tiempo discreto), para lograr tal objetivo va a ser necesario pasarla por varios dominios macabros y tenebrosos, en fin, ya fue mucho bla bla bla y poca acción, así que manos a la obra, empezamos con la ecuación inicial:

Ley de control
Primero utilizando la transformada de Laplace o sea la pasamos al dominio "S"
Como soy ingeniero voy a utilizar los pasos prohibidos por los matematicos y fisicos para pasarla directamente >:) (que malote), si no se los saben ahí les va el resumen taringero nivel 99999:
La parte constante se queda solita (no lleva s), la parte integral pasa a ser 1/s, y la parte derivativa pasa a ser s:

Utilizando Laplace
Por lo tanto la ecuación final es:
Dominio S
Ya que la tenemos en el dominio "S" ahora lo pasamos al dominio "Z", esto se va a poner feo pero bueno ahí les va:

Dominio Z

Para facilitarme la vida (soy humano) permitanme definir las ganancias de la siguiente forma:

Ganancias definidas
Desarrollando la ecuación con estas nuevas ganancias nos queda de la siguiente manera:

Ecuacion con ganancias definidas
Por último reestablecemos los parametros originales y obtenemos la ecuación final:

Ecu. final en el dominio Z
Listo, esto seria todo, recapitulando por si queda alguna duda:
  • Kp+KiT+Kd/T es la parte Proporcional
  • La siguiente donde aparece z a la -1 es la parte Integral
  • Por último donde aparece z a la -2 es la parte Derivativa
  • T corresponde al tiempo de muestreo (recuerden que es un sistema discreto)

De todas maneras en la siguiente sección vamos a verlo con más detalle, por lo tanto, eso seria todo en cuanto a la teoria.

Simulink


Voy a diseñar un control de posición unipolar, esto es, que va de 0 a +Volts, obviamente se puede implementar para sistemas bipolares (-Volts a +Volts), pero estoy casí seguro que a mas de uno le sirve mucho más el tipico modelo 0-5V :).
Por cierto, en la practica (para los mas novatos) un controlador PI es el que se suele utilizar para hacer control de posición de un motor de CD, pero como aquí es puro pro vamos a hacerlo utilizando los tres terminos o sea un PID echo y derecho.
Pues bueno, el primer paso es definir nuestro setpoint, para ellos voy a utilizar suma de escalones para simular una entrada que primero va de 0 grados a 180, luego de 180 a 45, y por último de 45 a 0 grados para ver el comportamiento de nuestro controlador, entonces voy a definir:
  • 0 grados → 0 Volts
  • 180 grados → 5 Volts
Por lo tanto 2.5 Volts equivalen a 90 grados, muy bien gráficamente tenemos lo siguiente:

Setpoint:
Setpoint
OJO; Este setpoint modela cambios bruscos a la entrada, tu puedes poner el setpoint como mas te convenga.
Ahora en la consola de mathlab o en un archivo "m" definimos los valores para los parametros del controlador PID discreto, para este caso elegí los siguientes:
  • Kp=1
  • Ki=0.12
  • Kd=0.001
  • Ts=0.01

OJO: Estos valores son aleatorios, al momento de sintonizar el controlador van a cambiar, son solo para ver la respuesta del controlador a la entrada, así que pueden poner los que quieran, dependiendo de ello va a ser su respuesta.
NOTA:Ts corresponde al tiempo de muestreo ("T" en las ecuaciones), dependiendo de la aplicación este puede ser mayor o menor, para casos practicos te recomiendo que lo establezcas en 10 ms.
Ahora toca el turno de crear el modelo del controlador, para ello voy a utilizar simulink versión 8.2, utilizando bloques de filtros discretos y bloques de ganancias voy a definir los parametros Kp,Ki y Kd:

Modelo PID
K1 corresponde a la parte proporcional, K2 la parte integral y K3 la parte derivativa.
Por último se añade la función de transferencia de la planta, en caso de que no tengas la función de transferencia de tu planta pues ya no hay mucho que hacer :/, ya no vas a poder continuar y lo peor del caso es que vas a tener que pagarme una multa de $40 dolares por quitarme el tiempo, que conste que al inicio de este tutorial advertí que primero leyeras la primer parte como encontrar la función de transferencia pero como haces lo que quieres ahora lo vas a tener que leer si o si, en fin, continuando el modelo de mi motor es:

Modelo planta
El modelo final del controlador queda de la siguiente manera:

Modelo planta completo
OJO: Notese el convertidor ADC (analógico-digital) que esta a la salida de la planta (retroalimentación), por cierto no esta por demas recordarles que el tiempo de muestreo a.k.a sample time es de 10 ms = 0.01 seg.
Ya que tenemos todo listo es hora de correr la simulación para ver el comportamiento de nuestro sistema con los valores que establecimos para las ganacias, en mi caso este es fue el resultado:

Salida del controlador
La primer gráfica corresponde al setpoint (color rojo) vs la salida del controlador(color azul).
La segunda gráfica corresponde a la señal de control como se puede ver trata de seguir a la entrada (setpoint).
La última gráfica corresponde a la señ del error.
Una salida muy malita debo de admitir pero eso era obvio, las ganancias no estan sintonizadas, así que en conclusión todo funciona como deberia de funcionar,y con esto terminamos esta sección.

Resultado y palabras finales


Con el modelo ya solo es cuestión de aplicar los métodos de sintonización que te enseñaron en tu curso de controladores, para que obtengas una respuesta parecida a la mia:

Salida del controlador sintonizada
Aquí les dejo un pequeño video donde se ve a grandes razgos como se contruye el modelo, esto en caso de que surgiera alguna duda, de todas maneras siempre pueden poner sus comentarios en la sección Comentarios (a poco????, pensé que era para otra cosa menos para comentarios :v)

En caso de que no sepas cuales son las reglas de sintonización te las pongo a continuación:
La primer regla es ........... (espacio eliminado debido a que viola las leyes espacio tiempo que controlan este universo).
De todas maneras en el tercer y último capitulo de esta serie voy a poner un método en el cual similink lo calcula por ti :D, así que olvida todo lo que sabes.
Esto sería todo en cuanto a este tutorial del controlador PID discreto, ahora ya puedes construir desde un cortinero hasta robots asesinos, algo así como mazinger Z o terminator y no juguetes chinos como los que salen en los power rangers :v.
No se olviden de recomendar esta pagina en facebook, twitter, google plus o cualquier otra red social, foro, pagina web, o medio de comunicación, tambien pueden seguirme en twitter @edx_twin3 donde pongo las últimas noticias sobre la página.
Como siempre cualquier duda, sugerencia, comentario, etc ...., la pueden enviar ya sea mediante la pagina de contacto, mediante correo electrónico edx@edx-twin3.org o utilizando la pestaña de Comentarios de este tutorial.
Por último pero no menos importante cualquier donativo es de gran ayuda para seguír haciendo tutoriales como este, gracias :1.

Comentarios, preguntas o sugerencias