{"id":155,"date":"2021-10-18T17:00:01","date_gmt":"2021-10-18T17:00:01","guid":{"rendered":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/?page_id=155"},"modified":"2025-08-12T00:16:42","modified_gmt":"2025-08-12T00:16:42","slug":"control-pid","status":"publish","type":"page","link":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/control-pid\/","title":{"rendered":"Control PID"},"content":{"rendered":"<p>Para entender mejor el funcionamiento del control PID. Se debe recordar que un sistema puede estar en lazo abierto o en lazo cerrado.<\/p>\n<p>Un sistema en lazo abierto puede ser como cuando se enciende una motor para una bomba hidr\u00e1ulica y esta sube agua a un tinaco hasta que alguien apague el motor.<\/p>\n<h6 style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-160 aligncenter\" src=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/funtransla.svg\" alt=\"\" width=\"700\" height=\"123\" \/>Figura1: Diagrama a bloques de un sistema en lazo abierto<\/h6>\n<p>&nbsp;<\/p>\n<p>La Figura 1 muestra el diagrama a bloques de el sistema mencionado, F(s) es la entrada (interruptor), $T_{1}(s)$ es el motor y la salida $X(s)$ es el agua que sube al tinaco, este sistema seguir\u00e1 funcionando hasta que la misma persona que encendi\u00f3 la bomba, regrese y la apague.<\/p>\n<p>Si a este mismo sistema le a\u00f1adimos un sensor que pueda detectar cuando el tinaco se ha llenado y mande una se\u00f1al indicando que est\u00e1 lleno para apagar la bomba, entonces el sistema est\u00e1 siendo controlado en lazo cerrado y se conoce como un control en lazo cerrado.<\/p>\n<h6 style=\"text-align: center;\"><a href=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/funtranslc1.svg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-165 aligncenter\" src=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/funtranslc1.svg\" alt=\"\" width=\"700\" height=\"302\" \/><\/a>Figura 2: Diagrama a bloques de un sistema en lazo cerrado<\/h6>\n<p>&nbsp;<\/p>\n<p>En la Figura 2 el sensor es representado por $H(s)$ y su se\u00f1al por $D(s)$, esta se\u00f1al es comparada con una se\u00f1al de referencia dada en la entrada y se restan, al ser iguales entonces el sistema ha llegado a la referencia o al punto deseado, y en este caso se podr\u00eda detener la bomba hasta que el agua baje de cierto nivel de referencia y tenga que ser encendida de nuevo.<\/p>\n<p>Una vez que se record\u00f3 esto, al tener una funci\u00f3n de transferencia de un sistema din\u00e1mico, se le puede aplicar un control del tipo PID (proporcional, integral y derivativo).<\/p>\n<p>Cada una de estas tres palabras, definen algo que hace el control.<\/p>\n<ul>\n<li>Proporcional: La ganancia proporcional en un control PID ayuda a reducir el error en estado estable, entre la se\u00f1al de referencia y la se\u00f1al de control. Si se usa solo, el error en estado estable se mantiene.<\/li>\n<li>Integral: La ganancia integral, ayuda a reducir el error constante que queda al usar solo la ganancia proporcional, esta ganancia genera una se\u00f1al de control que es proporcional a la integral del error. Puede generar inestabilidad al sistema y oscilaciones.<\/li>\n<li>Derivativo: La ganancia derivativa, ayuda a reducir las oscilaciones generadas por el control integral, ya que reacciona a la velocidad e cambio del error y la se\u00f1al de control depende de la derivada del error. Reduce las oscilaciones, mejora el tiempo de respuesta pero incrementa el ruido en las se\u00f1ales de medici\u00f3n.<\/li>\n<\/ul>\n<h6 style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-167\" src=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/pid-1-300x163.jpg\" alt=\"\" width=\"700\" height=\"381\" srcset=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/pid-1-300x163.jpg 300w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/pid-1-1024x557.jpg 1024w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/pid-1-768x418.jpg 768w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/pid-1.jpg 1220w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/>Figura 3: Respuesta de un sistema al control P, PI y PID<\/h6>\n<p>&nbsp;<\/p>\n<p>Juntos forman el Control Proporcional-Integral-Derivativo mejor conocido como control PID. Y sirve para que la se\u00f1al de control r\u00e1pidamente llegue a la se\u00f1al de referencia deseada.<\/p>\n<h2><strong>Simulaci\u00f3n de un control PID con Matlab.<\/strong><\/h2>\n<p>&nbsp;<\/p>\n<p>Al hacer uso del software Matlab, se puede simular el comportamiento de cualquier sistema al que se le aplique un control PID.<\/p>\n<p>La forma mas directa de realizar la simulaci\u00f3n, es teniendo la funci\u00f3n de transferencia del sistema, por ejemplo si se tiene un sistema de la forma<\/p>\n<p>\\begin{equation}<br \/>\n\\ddot{x}+5\\dot{x}+2=u(t) &#8230; (1)<br \/>\n\\label{S1}<br \/>\n\\end{equation}<\/p>\n<p>entonces se puede utilizar el comando $tf$ en matlab para obtener la funci\u00f3n de transferencia, de la forma,<\/p>\n<p>\\begin{equation}<br \/>\nND=tf(1, [1 \\ \\ 5 \\ \\ 2]) &#8230; (2)<br \/>\n\\label{ND}<br \/>\n\\end{equation}<\/p>\n<p>y se obtiene la funci\u00f3n de transferencia del sistema mostrado en (1) que ser\u00e1 guardada en la variable $ND$. Adem\u00e1s para cerrar el lazo de esta funci\u00f3n de transferencia mostrada en la ecuaci\u00f3n (2) se obtiene utilizando la funci\u00f3n $feedback$ de la siguiente manera,<br \/>\n\\begin{equation}<br \/>\nSN=feedback(ND,1) &#8230;(3)<br \/>\n\\label{FB}<br \/>\n\\end{equation}<\/p>\n<p>Donde el sistema resultante se guarda en $SN$, a este sistema (3) se le puede aplicar una entrada del tipo escal\u00f3n unitario para analizar la respuesta que tendr\u00e1, esto se realiza al utilizar la funci\u00f3n $step$,<br \/>\n\\begin{equation}<br \/>\nstep(SN) &#8230; (4)<br \/>\n\\label{SN}<br \/>\n\\end{equation}<br \/>\ny matlab genera autom\u00e1ticamente una gr\u00e1fica de la respuesta de este sistema. En este caso la se\u00f1al de referencia es 1 y por lo tanto el sistema deber\u00eda quedar estable en 1. Al no tener control, la se\u00f1al puede que no llegue a la referencia de 1 y quede con un error en estado estacionario.<\/p>\n<p>Para reducir o anular ese error, se debe realizar un control PID, para esto se debe definir el valor de las constantes proporcional, integral y derivativa del control y despu\u00e9s utilizar el comando<br \/>\n\\begin{equation}<br \/>\nCR=pid(kp,ki,kd) &#8230; (5)<br \/>\n\\label{kpid}<br \/>\n\\end{equation}<br \/>\ngenerando un control PID de la forma,<br \/>\n\\begin{equation}<br \/>\nCR=kp+\\frac{ki}{s}+kd*s &#8230; (6)<br \/>\n\\label{cpid}<br \/>\n\\end{equation}<br \/>\nCon este control mostrado en la ecuaci\u00f3n (5) y el sistema (2) se puede cerrar el lazo nuevamente y obtener el sistema en lazo cerrado con el controlador PID, de la forma,<br \/>\n\\begin{equation}<br \/>\nRG=feedback(CR*ND,1) &#8230; (7)<br \/>\n\\label{RG}<br \/>\n\\end{equation}<br \/>\ny aplicar una entrada de tipo escal\u00f3n para obtener la respuesta del sistema. Con lo cual se obtiene lo siguiente,<\/p>\n<h6 style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-163 aligncenter\" src=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/lazoac-300x143.jpg\" alt=\"\" width=\"700\" height=\"334\" srcset=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/lazoac-300x143.jpg 300w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/lazoac-1024x488.jpg 1024w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/lazoac-768x366.jpg 768w, https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-content\/uploads\/sites\/11\/2021\/10\/lazoac.jpg 1366w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/>Figura 4: Respuesta de un sistema sin control y con control PID<\/h6>\n<p>En la figura 4 se muestra la respuesta de un sistema en lazo abierto (azul) y se nota que no llega a la referencia que es 1, su error en estado estacionario es de 0.5, por otro lado, el sistema en lazo cerrado (naranja) y con control PID llega correctamente a la referencia de 1.<\/p>\n<p>A continuaci\u00f3n se presenta el programa en Matlab para generar estos gr\u00e1ficos y entender mejor el comportamiento de un control PID, se motiva al lector a cambiar los par\u00e1metros $kp,ki,kd$ dentro del programa para observar el comportamiento de cada uno y como afecta la respuesta del sistema. Tambi\u00e9n se puede colocar cualquier funci\u00f3n de transferencia y obtener la gr\u00e1fica de su respuesta, el programa est\u00e1 comentado para su mejor entendimiento.<\/p>\n<p>El script para graficar este sistema o cualquier otro se muestra a continuaci\u00f3n, solo es necesario adecuar los valores de la funci\u00f3n de transferencia y de las constantes del control PID.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:matlab decode:true \" title=\"Control PID \"> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n % Este programa muestra el funcionamiento de un controlador   %\r\n % PID.                                                        %\r\n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n \r\n clc        %Comando que limpia la command window\r\n clear all  %Comando que limpia el workspace de variables\r\n close all  %Comando que cierra cualquier gr\u00e1fico abierto anteriormente\r\n\r\n \r\n %% Declaraci\u00f3n de la funci\u00f3n de transferencia y condiciones iniciales.\r\n % funci\u00f3n de transferencia = 1 \/ ( s^2+5s+2)\r\n m=1; %valor que multiplica a s^2\r\n b=5; %valor que multiplica a s\r\n k=2; %valor final.\r\n %En caso de ser de mayor grado, se anexan tantas como sea el grado m\u00e1s el\r\n %valor final.\r\n \r\n ND=tf(1, [m b k]) %El comando \"tf\" genera la funci\u00f3n de transferencia donde\r\n                   %el 1 es el numerador y [m b k] es el denominador de \r\n                   %la funci\u00f3n detransferencia\r\n  \r\n step(ND) %El comando step genera una entrada tipo escal\u00f3n unitario \r\n          %para la funci\u00f3n guardada en ND.\r\n hold on  %Mantiene la gr\u00e1fica en la ventana hasta que se ponga \r\n          %el comando hold off\r\n %% Declaraci\u00f3n de las constantes P, I, D, para el control PID.\r\n \r\n kp=2; %Valor de la constante proporcional del control PID.\r\n ki=1; %Valor de la constante integral del control PID.\r\n kd=1; %Valor de la constante derivativa del control PID.\r\n  \r\n CR=pid(kp,ki,kd) %El comado \"pid\" crea un controlador PID de la forma:\r\n                  % CR= kp+ (ki\/s) + kd*s\r\n \r\n RG=feedback(CR*ND,1) %Crea el lazo cerrado de la funci\u00f3n ND con el \r\n                      % controlador CR \r\n\r\n step(RG)\r\n grid on  %Activa la cuadr\u00edcula de fondo en la figura.\r\n%  \r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para entender mejor el funcionamiento del control PID. Se debe recordar que un sistema puede estar en lazo abierto o en lazo cerrado. Un sistema en lazo abierto puede ser como cuando se enciende una motor para una bomba hidr\u00e1ulica y esta sube agua a un tinaco hasta que alguien apague el motor. Figura1: Diagrama &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/control-pid\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Control PID&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-155","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/pages\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":7,"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/pages\/155\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/pages\/155\/revisions\/248"}],"wp:attachment":[{"href":"https:\/\/masam.cuautitlan.unam.mx\/dycme\/dsf\/wp-json\/wp\/v2\/media?parent=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}