lunes, 16 de noviembre de 2015

Implementación de un controlador PID discreto

Supongamos que queremos controlar el mismo modelo de una masa móvil sin fricción que habíamos tratado en esta entrada cuya función de transferencia es la siguiente:

Dados las ganancias del controlador PID que se habían considerado (recomiendo utilizar el app PID Tuning de Matlab si no tienes estos valores para la planta de tu interés) :

La función de transferencia en tiempo continuo de nuestro controlador nos queda:

En la práctica es recomendable utilizar un LPF en la etapa derivativa a modo de reducir el ruido. En este caso la FT es:

Dónde N representa la frecuencia de corte del filtro que suele ser de 100 radianes/s. Teniendo la función de transferencia de nuestro controlador, el proceso de implementación de este controlador en un sistema digital (PIC, Arduino, FPGA, etc) es el siguiente:

La ecuación de diferencias es la que describirá el algoritmo que deberemos implementar en algún lenguaje de programación o un lenguaje de descripción de hardware. Para realizar la transformación entre la FT en dominio de Laplace al dominio de Z debemos considerar las siguientes aproximaciones numéricas para la derivada:


De aquí es fácil notar que podemos representar a la variable s en terminos de z (dónde Ts es el periodo de muestreo) de las siguientes maneras:


Estas 2 transformaciones de la variable s tienen propiedades distintas. Mientras la transformación backward Euler es estable siempre que la FT en tiempo continuo sea estable, la transformación forward Euler no lo es en todos los casos. (Para más detalles consultar la sección 19.2.3.1 de "Pasive, Active and Digital Filters", Wai-Kai Chen [1]). Para este ejemplo utilizaremos la transformación forward Euler, por lo que nuestro controlador queda representado en tiempo discreto por la TF:
Para este ejemplo se sabe de antemano que este controlador es estable pero si se arriesga a utilizar foward Euler se recomienda verificar estabilidad (puede usarse sisotool de Matlab).  Verificamos en Simulink que nuestro controlador funcione correctamente:


Ahora podemos proceder a la conversión de formatos de la FT. Para eso utilizamos el este programa de Matlab: PIDdiscreto.mat. Usando los datos que nos muestra el programa la FT nos queda:


Reordenando (click para agrandar):


Calculando transformada inversa:


Finalmente, verificamos que la ecuación de diferencias sea correcta en Simulink:


En una próxima entrada se implementará este controlador en un código en C para PIC y Arduino.

domingo, 15 de noviembre de 2015

Temas de actualidad

Yo que soy un derechairo-liberal declarado tengo la sospecha que el atentado en París ha sido un evento de falsa bandera. De ser verdad podría ayudarnos a nosotros, ratas de ese laboratorio sociológico llamado Facebook, a decidirnos de que lado estar en esta batalla virtual. Pero ahora, ¿hasta que punto una bandera representa al Leviatán o representa al pueblo? Aún resolviendo eso queda otro problema, ¿a que pueblo se le debe mostrar empatía? A todos en el caso ideal, por supuesto. Pero esta solución genera otro problema; por más utopías que quieran sacarse de la manga, los seres humanos no podemos vivir sin fronteras (en todos los contextos posibles). Siempre he tenido como lema personal esta frase de Huygens, "El mundo es mi país, la ciencia mi religión", pero me he dado cuenta que en un contexto no político, esto no es verdad para mí. Existen muchos grupos sociales que respeto (siendo terriblemente sincero, otros no) más no puedo identificarme. Cargo en mi mente, como todos, fronteras invisibles definidas por reglas de pertenencia social. Y aquí una triste verdad. Aunque lo correcto sea mostrar empatía por la humanidad entera, la paradoja de la elección viene a arruinaros la paz. Elegir todo no es diferente a elegir nada.

miércoles, 11 de noviembre de 2015

Guanajuato

Hace unos días estuve una escuela-taller en el CIMAT, lo que fue el pretexto perfecto para conocer el instituto y la ciudad. Me gustó bastante y fue una lastima tener tan pocos días para recorrerla. Si bien el taller me dejó un poco frío me llevé buena idea de las áreas en las que trabaja el CIMAT y bastante información del posgrado. Durante la estancia me quedé en la casa del asesores de un amigo mío, que por cierto conocí en un congreso en Guadalajara el año pasado (aquí aquel breve episodio). Su asesor es una persona realmente agradable, un astrofísico brasileño de la UG. El primer día me recibió dando una clase de tango a la que no pude rechazar la invitación de unirme pues era algo que había querido hacer desde hace mucho. Conocí también al housemate de mi amigo, uno de sus mejores amigos que estudió junto con el en la BUAP que igual me cayo muy bien. En las tardes, después de que regresaba de las sesiones taller, bajábamos caminado al centro. Algunas partes de la ciudad me recordaron bastante a Venecia. El penúltimo día dimos un recorrido por los cerros que rodean a la ciudad, algo que suelen hacer. En algún momento tuvieron que irme a rescatar cuando me quedé aferrado como gato asustado a una pared de piedra sin poderme mover. Lo más gracioso fue que en aquel momento sentí que estaba en risco de 300 metros cuando en realidad no estaba tan alto. Ya en lo alto la vista era increíble. Debo decir que mi amigo lleva una vida de estudiante envidiable. Para mi fue un corta pero buena aventura.