{"id":1566,"date":"2022-05-05T12:28:05","date_gmt":"2022-05-05T12:28:05","guid":{"rendered":"https:\/\/garikoitz.info\/blog\/?p=1566"},"modified":"2024-03-12T14:29:10","modified_gmt":"2024-03-12T14:29:10","slug":"introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino","status":"publish","type":"post","link":"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/","title":{"rendered":"Introducci\u00f3n al algoritmo PID y su implementaci\u00f3n en Arduino"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u00cdndice<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Introduccion\" >Introducci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Terminologia\" >Terminolog\u00eda<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#El_algoritmo_PID\" >El algoritmo PID<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Termino_Proporcional\" >T\u00e9rmino Proporcional<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Termino_Integral\" >T\u00e9rmino Integral<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Termino_Derivativo\" >T\u00e9rmino Derivativo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Resumen\" >Resumen<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Respuesta_del_termino_Proporcional\" >Respuesta del t\u00e9rmino Proporcional<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Respuesta_del_termino_Integral\" >Respuesta del t\u00e9rmino Integral<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Respuesta_del_termino_Derivativo\" >Respuesta del t\u00e9rmino Derivativo<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Ecuaciones\" >Ecuaciones<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#PI-D\" >PI-D<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#I-PD\" >I-PD<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#PI-D_vs_I-PD\" >PI-D vs I-PD<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Tipos_de_procesos\" >Tipos de procesos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Respuesta_autorregulada\" >Respuesta autorregulada<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Respuesta_integral\" >Respuesta integral<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Identificacion_de_procesos\" >Identificaci\u00f3n de procesos<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#En_lazo_abierto\" >En lazo abierto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#En_lazo_cerrado\" >En lazo cerrado<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Metodo_de_Oscilacion_Mantenida_de_Ziegler_y_Nichols\" >M\u00e9todo de Oscilaci\u00f3n Mantenida de Ziegler y Nichols<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Metodo_del_rele_de_Astrom_y_Hagglund\" >M\u00e9todo del rel\u00e9 de Astr\u00f6m y H\u00e4gglund<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Metodos_de_sintonia\" >M\u00e9todos de sinton\u00eda<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Prueba_y_error_Todos_los_procesos\" >Prueba y error (Todos los procesos)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Modelo_K_T0_y_TP_Respuesta_autorregulada\" >Modelo K, T0 y TP (Respuesta autorregulada)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Modelo_Ku_y_Tu_Oscilacion_mantenida_y_rele\" >Modelo Ku y Tu (Oscilaci\u00f3n mantenida y rel\u00e9)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Inicializacion\" >Inicializaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Codigo_del_PID_digital\" >C\u00f3digo del PID digital<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Implementacion_teorica\" >Implementaci\u00f3n te\u00f3rica<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Implementacion_funcional_en_Arduino\" >Implementaci\u00f3n funcional en Arduino<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Librerias_disponibles\" >Librer\u00edas disponibles<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Para_control\" >Para control<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Para_identificacion\" >Para identificaci\u00f3n<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Referencias\" >Referencias<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Enlaces\" >Enlaces<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/#Libros_y_publicaciones\" >Libros y publicaciones<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Introduccion\"><\/span>Introducci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Actualmente, el controlador PID se erige como el m\u00e9todo dominante en la ingenier\u00eda de control de procesos. Su extraordinaria popularidad se debe a varias razones, pero, \u00bfqu\u00e9 lo distingue realmente? \u00bfC\u00f3mo ha alcanzado este algoritmo tal grado de omnipresencia que una b\u00fasqueda r\u00e1pida en Google arroja m\u00e1s de dos mil millones de resultados? La respuesta es m\u00e1s sencilla de lo que parece: el PID es un algoritmo tanto elemental como resistente. Su robustez es tal que incluso un novato en el ajuste de par\u00e1metros de sinton\u00eda puede lograr un control razonablemente bueno con un conocimiento b\u00e1sico. La importancia de este algoritmo es innegable; se utiliza cada vez que se activa un control de crucero en un veh\u00edculo, cada vez que un piloto enciende el piloto autom\u00e1tico, y cada vez que se imprime un objeto en una impresora 3D.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El objetivo de este art\u00edculo es ofrecer una introducci\u00f3n al algoritmo PID y proporcionar al lector una gama de conceptos y t\u00e9cnicas anal\u00edticas simples que faciliten la implementaci\u00f3n de un controlador PID. Aunque el enfoque est\u00e1 en Arduino, las estrategias y principios descritos son aplicables a cualquier microcontrolador econ\u00f3mico capaz de soportar un PID digital.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Terminologia\"><\/span>Terminolog\u00eda<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A menudo se utiliza una gran variedad de terminolog\u00eda asociada a los PIDs que confunde enormemente al lector en las primeras tomas de contacto con este mundillo. A continuaci\u00f3n una lista de la terminolog\u00eda que considero b\u00e1sica:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kc<\/strong>: <strong>Ganancia proporcional del controlador<\/strong>.<\/li>\n\n\n\n<li><strong>Ti<\/strong>: <strong>Tiempo integral<\/strong> <strong>del controlador<\/strong>. No confundir con Ki. En este caso, a mayor tiempo integral m\u00e1s lento corregimos el Error.<\/li>\n\n\n\n<li><strong>Td<\/strong>: <strong>Tiempo derivativo<\/strong> <strong>del controlador<\/strong>. No confundir con Kd. Es el t\u00e9rmino m\u00e1s incomprendido y dif\u00edcil de ajustar, de momento quedaros con la idea de que el tiempo derivativo act\u00faa sobre la velocidad de cambio del error.<\/li>\n\n\n\n<li><strong>Ki<\/strong>: <strong>Ganancia integral del controlador<\/strong>. Cuanto mayor es la ganancia, m\u00e1s r\u00e1pido corregimos el Error. Si hubiera que convertir tened en cuenta que Ki = Kc\/Ti.<\/li>\n\n\n\n<li><strong>Kd<\/strong>: <strong>Ganancia derivativa<\/strong> del controlador. Si hubiera que convertir tened en cuenta que Kd = Kc*Td.<\/li>\n\n\n\n<li><strong>Ku<\/strong>: <strong>Ganancia \u00faltima<\/strong>.<\/li>\n\n\n\n<li><strong>Tu<\/strong>: <strong>Periodo de oscilaci\u00f3n mantenida<\/strong>.<\/li>\n\n\n\n<li><strong>PV<\/strong>: Son las siglas de <strong>Process Variable<\/strong>, es decir, variable de proceso.<\/li>\n\n\n\n<li><strong>SP<\/strong>: Son las siglas de <strong>Set Point<\/strong>, es decir, punto de consigna. Es el punto donde queremos llevar a la variable de proceso.<\/li>\n\n\n\n<li><strong>OP<\/strong>: En ingl\u00e9s <strong>Output<\/strong>, es decir, la salida. Es lo que \u00abmovemos\u00bb para alterar la variable de proceso.<\/li>\n\n\n\n<li><strong>Error<\/strong>: Es la diferencia entre PV y SP. Error = PV-SP o Error = SP-PV.<\/li>\n\n\n\n<li><strong>K<\/strong> o <strong>Kp<\/strong>: <strong>Ganancia del proceso<\/strong>. Es la ganancia representativa del proceso que estamos estudiando obtenida mediante t\u00e9cnicas en lazo abierto como el de la curva de reacci\u00f3n o similar.<\/li>\n\n\n\n<li><strong>T<sub>0<\/sub><\/strong>: <strong>Tiempo muerto<\/strong> <strong>del proceso<\/strong>. Es el tiempo entre que se mueve la OP y lo nota la PV.<\/li>\n\n\n\n<li><strong>T<sub>P<\/sub><\/strong>: <strong>Tiempo de proceso<\/strong>. Desde que comienza a moverse la PV hasta que alcanza el 63,2% de la respuesta.<\/li>\n\n\n\n<li><strong>Ts<\/strong>: Tiempo de muestreo.<\/li>\n\n\n\n<li><strong>Tf<\/strong>: Constante de tiempo deseada en lazo cerrado.<\/li>\n\n\n\n<li><strong>Lazo abierto<\/strong>: Un proceso est\u00e1 en lazo abierto cuando el controlador se encuentra  desconectado del proceso, es decir, el controlador no toma ninguna decisi\u00f3n sobre c\u00f3mo mantener la variable controlada en su punto de consigna. Por ejemplo, MODO MANUAL de un controlador.<\/li>\n\n\n\n<li><strong>Lazo cerrado<\/strong>: Un proceso est\u00e1 en lazo cerrado cuando el controlador se encuentra conectado al proceso comparando el valor del punto de consigna con la variable controlada y determinando la acci\u00f3n correctiva necesaria. Por ejemplo, MODO AUTOM\u00c1TICO de un controlador.<\/li>\n\n\n\n<li><strong>Acci\u00f3n de control<\/strong>: Es la \u00abforma de trabajar\u00bb de nuestro controlador pudiendo ser directa o inversa.\n<ul class=\"wp-block-list\">\n<li><strong>Directa<\/strong>: Ante un incremento de la PV (+) hay que incrementar la OP (+). Un ejemplo t\u00edpico es un dep\u00f3sito de agua en el que queremos controlar el nivel y disponemos de una v\u00e1lvula en la salida con la que controlamos el vaciado. En este caso al llegar agua al dep\u00f3sito, el nivel sube y por lo tanto la v\u00e1lvula tendr\u00e1 que abrir para mantener el nivel anterior.<\/li>\n\n\n\n<li><strong>Inversa<\/strong>: Ante un incremento de la PV (+) hay que disminuir la OP (-). Si en el ejemplo anterior situamos la v\u00e1lvula en el aporte de agua, si el nivel sube la v\u00e1lvula que ahora regula el agua de entrada tendr\u00e1 que cerrar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/AcciondeControl.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/AcciondeControl.png\" alt=\"\" class=\"wp-image-1735\" style=\"width:452px;height:246px\"\/><\/a><figcaption class=\"wp-element-caption\">Acci\u00f3n de control<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"El_algoritmo_PID\"><\/span>El algoritmo PID<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El algoritmo PID tiene tres mecanismos de control que son <strong>P<\/strong>roporcional, <strong>I<\/strong>ntegral y <strong>D<\/strong>erivativo. Una caracter\u00edstica interesante es que cada t\u00e9rmino es independiente y se puede ajustar por separado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques-1024x301.png\" alt=\"\" class=\"wp-image-1592\" style=\"width:768px;height:226px\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques-1024x301.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques-300x88.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques-768x225.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques-604x177.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/04\/PID_bloques.avif 1114w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Diagrama de bloques de un proceso con control PID<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cada mecanismo del PID trabaja de una forma determinada para corregir el error, de modo que:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El t\u00e9rmino <strong>proporcional<\/strong> (<strong>Kc<\/strong>): act\u00faa directamente sobre el error.<\/li>\n\n\n\n<li>El t\u00e9rmino <strong>integral<\/strong> (<strong>Ti<\/strong>): act\u00faa a una velocidad proporcional al error.<\/li>\n\n\n\n<li>El t\u00e9rmino <strong>derivativo<\/strong> (<strong>Td<\/strong>): act\u00faa sobre la velocidad de cambio del error.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Termino_Proporcional\"><\/span>T\u00e9rmino Proporcional<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El t\u00e9rmino proporcional act\u00faa de forma proporcional al error (PV-SP). A mayor ganancia del controlador, menor es el error de offset pero el lazo puede volverse inestable.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Proporcional.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Proporcional.png\" alt=\"\" class=\"wp-image-1596\" style=\"width:466px;height:311px\"\/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">En el siguiente v\u00eddeo se muestra una simulaci\u00f3n de un controlador con t\u00e9rmino \u00fanicamente proporcional. El valor alto del t\u00e9rmino integral (9999999) es para anularlo ya que el simulador no admite poner un cero.<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"lyte-wrapper fourthree\" style=\"width:420px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_HSsXu8RCQ9w\"><div id=\"lyte_HSsXu8RCQ9w\" data-src=\"\/\/i.ytimg.com\/vi\/HSsXu8RCQ9w\/hqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\"><\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/HSsXu8RCQ9w\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/HSsXu8RCQ9w\/0.jpg\" alt=\"YouTube video thumbnail\" width=\"420\" height=\"295\" \/><br \/>Ver este v\u00eddeo en YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:420px;margin:5px;\"><\/div><figcaption><\/figcaption><\/figure>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Termino_Integral\"><\/span>T\u00e9rmino Integral<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es el tiempo en que el controlador alcanza una respuesta (delta de OP) de magnitud similar al error. La acci\u00f3n integral se combina con la proporcional para eliminar el offset. Cuanto menor es Ti m\u00e1s r\u00e1pido corregimos el error y m\u00e1s agresiva es la respuesta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Partiendo de la simulaci\u00f3n anterior, veamos el efecto de introducir el t\u00e9rmino integral pasando de un controlador P a uno PI.<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"lyte-wrapper fourthree\" style=\"width:420px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_XqdI0qa9w5c\"><div id=\"lyte_XqdI0qa9w5c\" data-src=\"\/\/i.ytimg.com\/vi\/XqdI0qa9w5c\/hqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\"><\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/XqdI0qa9w5c\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/XqdI0qa9w5c\/0.jpg\" alt=\"YouTube video thumbnail\" width=\"420\" height=\"295\" \/><br \/>Ver este v\u00eddeo en YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:420px;margin:5px;\"><\/div><figcaption><\/figcaption><\/figure>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Termino_Derivativo\"><\/span>T\u00e9rmino Derivativo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La acci\u00f3n derivativa es independiente del valor absoluto de la medida y se mueve a la velocidad de cambio del error en el tiempo, es decir, se anticipa al cambio del proceso porque act\u00faa seg\u00fan la velocidad de cambio del error. La respuesta es r\u00e1pida pero no es aconsejable en procesos con ruido. Cuanto mayor es Td m\u00e1s agresivo es el control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Partiendo de la simulaci\u00f3n anterior, veamos el efecto de introducir el t\u00e9rmino derivativo pasando de un controlador PI a uno PID.<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"lyte-wrapper fourthree\" style=\"width:420px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_wkf209qHbc8\"><div id=\"lyte_wkf209qHbc8\" data-src=\"\/\/i.ytimg.com\/vi\/wkf209qHbc8\/hqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\"><\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/wkf209qHbc8\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/wkf209qHbc8\/0.jpg\" alt=\"YouTube video thumbnail\" width=\"420\" height=\"295\" \/><br \/>Ver este v\u00eddeo en YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:420px;margin:5px;\"><\/div><figcaption><\/figcaption><\/figure>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"625\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td-1024x625.png\" alt=\"\" class=\"wp-image-1609\" style=\"width:768px;height:469px\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td-1024x625.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td-300x183.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td-768x468.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td-443x270.png 443w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resumen_Td.avif 1292w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Efecto de diferentes t\u00e9rminos derivativos<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Resumen\"><\/span>Resumen<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Respuesta_del_termino_Proporcional\"><\/span>Respuesta del t\u00e9rmino Proporcional<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un controlador proporcional produce una <strong>respuesta inmediata y espec\u00edfica<\/strong>.<\/li>\n\n\n\n<li>La delta de OP es proporcional a la delta del error y la amplitud se magnifica a mayor ganancia.<\/li>\n\n\n\n<li>En lazo cerrado queda un <strong>error permanente<\/strong> llamado <strong>offset<\/strong>.<\/li>\n\n\n\n<li>El offset se puede reducir aumentando la ganancia pero no se anula.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Respuesta_del_termino_Integral\"><\/span>Respuesta del t\u00e9rmino Integral<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Act\u00faa siempre que exista error y responde seg\u00fan la magnitud y signo del error a lo largo del tiempo.<\/li>\n\n\n\n<li>Elimina el error permanente (offset).<\/li>\n\n\n\n<li>A <strong>menor tiempo<\/strong> integral (Ti) <strong>mayor acci\u00f3n <\/strong>integral.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Respuesta_del_termino_Derivativo\"><\/span>Respuesta del t\u00e9rmino Derivativo<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ante cambios de SP, la acci\u00f3n derivativa produce un pico en la respuesta (<em>derivative kick<\/em>). Por este motivo se usa la ecuaci\u00f3n PI-D en vez de la cl\u00e1sica PID (ver apartado de ecuaciones).<\/li>\n\n\n\n<li>No sirve como \u00fanica respuesta porque solo distingue variaciones del error y no de valores de SP.<\/li>\n\n\n\n<li>No se aconseja su uso en procesos con ruido.<\/li>\n\n\n\n<li>A <strong>mayor<\/strong> <strong>tiempo <\/strong>derivativo (Td) <strong>mayor acci\u00f3n <\/strong>derivativa.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ecuaciones\"><\/span>Ecuaciones<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si descomponemos el PID en t\u00e9rminos independientes y alteramos la afecci\u00f3n que tendr\u00e1 cada t\u00e9rmino al error y a la PV, digamos que disponemos de varias combinaciones posibles y que cada combinaci\u00f3n tiene sus pros y contras. Las m\u00e1s habituales que nos podemos encontrar son PID, PI-D e I-PD siendo las m\u00e1s utilizadas PI-D e I-PD.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PI-D\"><\/span>PI-D<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">El guion que separa los t\u00e9rminos indica que los t\u00e9rminos proporcional e integral act\u00faan sobre el error y el t\u00e9rmino derivativo sobre la PV. Esto se hace para evitar el pico que genera la acci\u00f3n derivativa ante un cambio en el SP. Normalmente cuando se habla de la implementaci\u00f3n de un PID en realidad lo que se est\u00e1 implementando es la ecuaci\u00f3n PI-D. Esta ecuaci\u00f3n es adecuada para cambios frecuentes en el SP.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques-1024x301.png\" alt=\"\" class=\"wp-image-1613\" style=\"width:768px;height:226px\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques-1024x301.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques-300x88.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques-768x225.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques-604x177.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/PI-D_bloques.avif 1114w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">PI-D<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I-PD\"><\/span>I-PD<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, el t\u00e9rmino integral act\u00faa sobre el error y los t\u00e9rminos proporcional y derivativo sobre la PV. El no afectar el error al t\u00e9rmino proporcional hace que la respuesta del controlador sea mucho m\u00e1s suave. Esta ecuaci\u00f3n es adecuada para rechazo de perturbaciones.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques-1024x301.png\" alt=\"\" class=\"wp-image-1614\" style=\"width:768px;height:226px\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques-1024x301.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques-300x88.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques-768x225.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques-604x177.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/I-PD_bloques.avif 1114w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">I-PD<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PI-D_vs_I-PD\"><\/span>PI-D vs I-PD<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Para que quede claro el efecto de las ecuaciones, veamos la diferencia de la respuesta para un mismo proceso partiendo de la simulaci\u00f3n anterior.<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"lyte-wrapper fourthree\" style=\"width:420px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_YCudpYlP_IE\"><div id=\"lyte_YCudpYlP_IE\" data-src=\"\/\/i.ytimg.com\/vi\/YCudpYlP_IE\/hqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\"><\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/YCudpYlP_IE\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/YCudpYlP_IE\/0.jpg\" alt=\"YouTube video thumbnail\" width=\"420\" height=\"295\" \/><br \/>Ver este v\u00eddeo en YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:420px;margin:5px;\"><\/div><figcaption><\/figcaption><\/figure>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Tipos_de_procesos\"><\/span>Tipos de procesos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Respuesta_autorregulada\"><\/span>Respuesta autorregulada<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En la respuesta autorregulada, ante una variaci\u00f3n de la salida (OP) la variable de proceso (PV) llega a una nueva situaci\u00f3n estable. Un ejemplo t\u00edpico que se puede hacer con Arduino es un control de temperatura en el que estamos controlando con una salida PWM el voltaje de un cartucho calefactor (OP) y que estamos midiendo mediante una sonda de temperatura (PV). Si partiendo de una situaci\u00f3n estable aumentamos la salida PWM (OP) pasado un tiempo veremos que la temperatura aumenta y se estabiliza en un nuevo punto como se puede apreciar en la imagen que tenemos a continuaci\u00f3n.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resp_autoregulada.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resp_autoregulada.png\" alt=\"\" class=\"wp-image-1742\" style=\"width:277px;height:296px\"\/><\/a><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Respuesta_integral\"><\/span>Respuesta integral<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En la respuesta integral, ante una variaci\u00f3n de la salida (OP) la variable de proceso (PV) aumenta o disminuye de manera indefinida. Un ejemplo cl\u00e1sico es un dep\u00f3sito de agua. Si al deposito con el nivel estable (PV) le abrimos el aporte de agua (OP) el nivel aumentar\u00e1 indefinidamente. Otra maqueta t\u00edpica de Arduino con esta respuesta es el <a href=\"https:\/\/garikoitz.info\/blog\/2021\/09\/sintonizar-pid-con-arduino-sistema-bola-viga\/\" target=\"_blank\" rel=\"noreferrer noopener\">sistema bola-viga<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resp_integral.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Resp_integral.png\" alt=\"\" class=\"wp-image-1744\" style=\"width:277px;height:296px\"\/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Identificacion_de_procesos\"><\/span>Identificaci\u00f3n de procesos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"En_lazo_abierto\"><\/span>En lazo abierto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Se trata de caracterizar el proceso de forma simplificada y obtener tres par\u00e1metros como son la ganancia del proceso (K o Kp), el tiempo muerto (T<sub>0<\/sub>) y el tiempo del proceso (Tp). Una vez obtenidas estas constantes podemos simular en lazo cerrado una gran variedad de sinton\u00edas y elegir la que m\u00e1s nos satisfaga.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/CurvaReaccionT1yT2-3.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/CurvaReaccionT1yT2-3.png\" alt=\"\" class=\"wp-image-1740\" style=\"width:294px;height:233px\"\/><\/a><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-katex-display-block katex-eq\" data-katex-display=\"true\"><pre>\\begin{align}\n&amp; K = \\frac{\\Delta PV}{\\Delta OP}\\\\\n&amp; Tp = 1,5(T2-T1) \\\\\n&amp; T0 = T2-Tp\\\\\n&amp; T1(28,3\\%) = PV inicial\\pm 0,283\\times\\Delta PV \\\\\n&amp; T2(63,2\\%) = PV inicial\\pm 0,632\\times\\Delta PV\n\\end{align}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed ten\u00e9is un par de ejemplos de como calcular las ganancias del proceso <a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/C%c3%a1lculo%20manual%20T1%20y%20T2.pdf\" target=\"_blank\">[1]<\/a> <a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=ml6GOEckhTI\" target=\"_blank\">[2]<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El cociente entre el tiempo muerto (T0) y el tiempo de proceso (Tp) nos da como resultado un valor que sugiere la <strong>facilidad de control<\/strong> que tendr\u00e1 el proceso.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Facilidad_control.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Facilidad_control.png\" alt=\"\" class=\"wp-image-1670\"\/><\/a><figcaption class=\"wp-element-caption\">Facilidad de control<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"En_lazo_cerrado\"><\/span>En lazo cerrado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si las caracter\u00edsticas del proceso nos impidieran realizar un ensayo en lazo abierto, existen dos t\u00e9cnicas en lazo cerrado que nos permiten realizar una identificaci\u00f3n para obtener en este caso dos par\u00e1metros como son la ganancia \u00faltima (Ku) y el periodo de oscilaci\u00f3n (Tu). Estos par\u00e1metros nos permiten calcular un n\u00famero bastante m\u00e1s limitado de sinton\u00edas que las que podemos calcular en lazo abierto.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodo_de_Oscilacion_Mantenida_de_Ziegler_y_Nichols\"><\/span>M\u00e9todo de Oscilaci\u00f3n Mantenida de Ziegler y Nichols<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Este m\u00e9todo consiste en implementar un controlador PID con ganancia \u00fanicamente proporcional e ir vari\u00e1ndola hasta que el sistema entre en oscilaci\u00f3n continua. As\u00ed obtenemos que Ku es igual a la ganancia proporcional utilizada y Tu es periodo de oscilaci\u00f3n. En este caso Ku = 8 y Tu = 2 minutos (6,3-4,3).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Osc_mantenidaZN.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Osc_mantenidaZN.png\" alt=\"\" class=\"wp-image-1635\"\/><\/a><figcaption class=\"wp-element-caption\">Ensayo de oscilaci\u00f3n mantenida<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodo_del_rele_de_Astrom_y_Hagglund\"><\/span>M\u00e9todo del rel\u00e9 de Astr\u00f6m y H\u00e4gglund<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Este m\u00e9todo consiste en programar un rel\u00e9 para generar una oscilaci\u00f3n mantenida imitando un controlador todo\/nada. El rel\u00e9 puede ser con o sin hist\u00e9resis. Del ensayo obtenemos 3 datos que nos sirven para estimar de nuevo la ganancia \u00faltima (Ku) y el periodo de oscilaci\u00f3n (Tu) como son la <strong>amplitud de la PV (a)<\/strong>, la <strong>amplitud de la OP (d)<\/strong> y el <strong>periodo de oscilaci\u00f3n (Tc)<\/strong>. Se ha usado un rel\u00e9 ideal sin hist\u00e9resis.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Rele_AH-1.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/05\/Rele_AH-1.png\" alt=\"\" class=\"wp-image-1638\"\/><\/a><figcaption class=\"wp-element-caption\">Ensayo de un rel\u00e9 ideal sin hist\u00e9resis<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Los datos obtenidos del ensayo son <strong>a = 28,52%<\/strong> (75,45-46,93)<strong>, d = 70% <\/strong>(100-30)<strong> y Tc = 3,5 minutos<\/strong> (6,5-3), con los cuales calculamos Ku y Tu.<\/p>\n\n\n\n<div class=\"wp-block-katex-display-block katex-eq\" data-katex-display=\"true\"><pre>\\begin{align}\n&amp; Ku = \\frac{4d}{\\pi a}=\\frac{4\\times 70}{\\pi\\times 28,52}=3,12\\\\\n&amp; Tu = Tc = 3,5 minutos\n\\end{align}<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodos_de_sintonia\"><\/span>M\u00e9todos de sinton\u00eda<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Prueba_y_error_Todos_los_procesos\"><\/span>Prueba y error (Todos los procesos)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Empezamos \u00fanicamente con control proporcional.<\/li>\n\n\n\n<li>Aumentar Kc en incrementos de un 20% hasta apreciar ligeras oscilaciones.<\/li>\n\n\n\n<li>Incorporamos la acci\u00f3n integral aumentando Ki en incrementos del 20%. Para compensar el efecto de la acci\u00f3n integral disminuimos Kc.<\/li>\n\n\n\n<li>Si la respuesta tiene oscilaciones reducir Kc y Ki hasta conseguir la respuesta deseada.<\/li>\n\n\n\n<li>Incorporamos la acci\u00f3n derivativa con Kd = Ki\/4. Al incorporar Kd es necesario ajustar Kc y Ki.<\/li>\n\n\n\n<li>Ajustar Kc, Ki y Kd hasta conseguir la respuesta deseada ante cambios de SP usando como referencia la tabla que se muestra a continuaci\u00f3n.<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\">Velocidad de respuesta<\/td><td class=\"has-text-align-center\" data-align=\"center\">Estabilidad<\/td><td class=\"has-text-align-center\" data-align=\"center\">Amplificaci\u00f3n del ruido<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u2191Kc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2193<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u2191Ki<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2193<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">\u2191Kd<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u2191\u2191<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modelo_K_T0_y_TP_Respuesta_autorregulada\"><\/span>Modelo K, T<sub>0<\/sub> y T<sub>P<\/sub> (Respuesta autorregulada)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Os dejo una peque\u00f1a muestra aunque existe mucha variedad. La columna dise\u00f1o indica en que situaciones se comporta mejor la sinton\u00eda y la columna especificaci\u00f3n a lo que esperamos en lazo cerrado. Aqu\u00ed ten\u00e9is una herramienta llamada <a href=\"https:\/\/garikoitz.info\/pidlab\/\" target=\"_blank\" rel=\"noreferrer noopener\">PIDLab<\/a> para calcular unas cuantas sinton\u00edas m\u00e1s y simular la respuesta en lazo cerrado.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/11\/SintLAbierto_02-2.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/11\/SintLAbierto_02-2.png\" alt=\"\" class=\"wp-image-1811\"\/><\/a><figcaption class=\"wp-element-caption\">Sinton\u00edas PID mediante K, T0 y Tp<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">R.A. = 25% significan raz\u00f3n de amortiguamiento tambi\u00e9n llamado relaci\u00f3n de decaimiento del 25%. Esto quiere decir que la respuesta del sistema ante una entrada escal\u00f3n decae un 25% en el segundo pico. <a href=\"https:\/\/ocw.ehu.eus\/file.php\/83\/capitulo10_html\/capitulo10.html#fig105\" target=\"_blank\" rel=\"noreferrer noopener\">Pod\u00e9is ver un ejemplo aqu\u00ed<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tf es la constante de tiempo deseada en lazo cerrado. Este par\u00e1metro es muy interesante ya que nos permite modelar la respuesta de la sinton\u00eda.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modelo_Ku_y_Tu_Oscilacion_mantenida_y_rele\"><\/span>Modelo Ku y Tu (Oscilaci\u00f3n mantenida y rel\u00e9)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/11\/SintLCerrado_02.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2022\/11\/SintLCerrado_02.png\" alt=\"\" class=\"wp-image-1812\"\/><\/a><figcaption class=\"wp-element-caption\">Sinton\u00edas PID mediante Ku y Tu<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Recordad que en las librer\u00edas de Arduino se utilizan las ganancias Ki y Kd en lugar de Ti y Td por lo que, Ki = Kc\/Ti y Kd = Kc*Td<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Inicializacion\"><\/span>Inicializaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La inicializaci\u00f3n es un concepto muy importante cuando se implementa un PID y que no se suele tener en cuenta en maquetas &#8216;caseras&#8217;. Fundamentalmente, <strong>la inicializaci\u00f3n implica evitar cambios bruscos en la salida cuando el sistema se cambia al modo autom\u00e1tico<\/strong>. Para lograr una transici\u00f3n suave, es esencial precalcular el valor de la salida de control de manera que, al activar el control autom\u00e1tico, no empecemos desde cero, lo que podr\u00eda causar una variaci\u00f3n brusca. En cambio, ajustando adecuadamente este valor inicial, el controlador PID puede comenzar a operar m\u00e1s cerca del valor objetivo, reduciendo as\u00ed el error de manera eficiente y evitando fluctuaciones notables en el proceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente a anticipar el valor de la salida de control, es aconsejable implementar una t\u00e9cnica conocida como seguimiento de la variable de proceso (<strong>PV Tracking<\/strong>). Esta t\u00e9cnica implica ajustar el punto de ajuste (SP) para que coincida con la variable de proceso (PV) cuando el sistema est\u00e1 en modo manual. De esta manera, al cambiar al modo autom\u00e1tico, el error (PV-SP) ser\u00e1 cero o muy cercano a cero, asegurando una transici\u00f3n fluida y sin sobresaltos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Codigo_del_PID_digital\"><\/span>C\u00f3digo del PID digital<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Implementacion_teorica\"><\/span>Implementaci\u00f3n te\u00f3rica<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Error = PV - SP\nP = Error * Kc\nI = I + Error * Ki\nD = (Error - Error_Ant) * Kd\nError_Ant = Error\nOP = P + I + D<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo anterior, es una primera aproximaci\u00f3n en el que no se tienen en cuenta dos problemas importantes como son el <strong>windup <\/strong>y el salto que produce el t\u00e9rmino derivativo ante un cambio de SP (<strong>derivative kick<\/strong>). En aplicaciones reales, ya sean maquetas sencillas o m\u00e1s elaboradas, es necesario implementar al menos esto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Anti-windup<\/li>\n\n\n\n<li>M\u00ednima y m\u00e1xima OP<\/li>\n\n\n\n<li>Acci\u00f3n del controlador (directa o inversa)<\/li>\n\n\n\n<li>Posibilidad de elegir la ecuaci\u00f3n del controlador (PI-D, I-PD), o al menos, que el t\u00e9rmino derivativo trabaje con la delta de PV y no con el error.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Implementacion_funcional_en_Arduino\"><\/span>Implementaci\u00f3n funcional en Arduino<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Asignaciones de pines\nconst int PIN_PV = A0;\nconst int PIN_OP = 6;\n\n\/\/ Variables\nint Ts, maxOP, minOP;\ndouble Kc, Ki, Kd, PV, PVant, dPV, OP, mySP;\nString tipo, accion;\n\n\/\/ variables internas del controlador\nunsigned long TiempoActual, TiempoAnterior;\ndouble TiempoTranscurrido;\ndouble error, error_ant, Pcalc, Ierror, Derror;\n\n\/\/===============================================================\n\/\/ SETUP\n\/\/===============================================================\nvoid setup()\n{\n   PV = analogRead(PIN_PV); \/\/ Leemos la PV del pin A0\n   mySP = 50;               \/\/ Punto de consigna\n   Ts = 100;                \/\/ Tiempo de muestreo\n   minOP = 0;               \/\/ M\u00ednimo valor de OP\n   maxOP = 100;             \/\/ M\u00e1ximo valor de OP\n   accion = \"DIRECTO\";      \/\/ Acci\u00f3n de control\n   tipo = \"PI-D\";           \/\/ Ecuaci\u00f3n\n   Kc = 1.0;\n   Ki = 2.0;\n   Kd = 0.1;\n}    \n\/\/===============================================================\n\/\/ BUCLE PRINCIPAL\n\/\/===============================================================\nvoid loop(){\n\n  TiempoActual = millis();\n  \n  if (millis() - TiempoAnterior >= Ts)\n  {\n    PV = analogRead(PIN_PV);       \/\/ Lectura del sensor\n    PV = map(PV, 0, 1023, 0, 100); \/\/ PV a porcentaje\n\n    if(accion == \"INVERSO\")        \/\/ Acci\u00f3n de control\n    {\n      Kc = (0 - Kc);\n      Ki = (0 - Ki);\n      Kd = (0 - Kd);\n    }\n      \n    error = mySP - PV;\n    Ierror += Ki * error; \n    dPV = (PV - PVant);  \n      \n    if (tipo == \"I-PD\") Pcalc -= Kc * dPV;     \/\/ Termino proporcional en funci\u00f3n\n    else Pcalc = Kc * error;                   \/\/ de PI-D o I-PD\n      \n    if (Ierror > maxOP) Ierror = maxOP;        \/\/ Anti-windup\n    else if (Ierror &lt; minOP) Ierror = minOP;\n      \n    OP = Pcalc + Ierror - Kd * dPV;            \/\/ Calculamos la salida del PID\n      \n    if(OP > maxOP) OP = maxOP;                 \/\/ M\u00ednimo y M\u00e1ximo valor de la OP\n    else if(OP &lt; minOP) OP = minOP;\n   \n    PVant = PV;                               \/\/ Guardamos la PV anterior\n    error_ant = error;                        \/\/ Guardamos el error anterior\n    TiempoAnterior = TiempoActual;            \/\/ Guardamos el tiempo anterior\n    \n    analogWrite(PIN_OP, OP);                  \/\/ Mandamos la salida al pin PWM\n    \n    TiempoAnterior = millis();  \n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Librerias_disponibles\"><\/span>Librer\u00edas disponibles<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Para_control\"><\/span>Para control<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/br3ttb\/Arduino-PID-Library\" target=\"_blank\" rel=\"noreferrer noopener\">Arduino PID library creada por Brett Beauregard<\/a>. Probablemente la librer\u00eda m\u00e1s famosa y utilizada para control PID en Arduino. Dispone de protecci\u00f3n anti-windup, permite especificar la acci\u00f3n de control y a partir de la versi\u00f3n 1.2 incluy\u00f3 la posibilidad de elegir entre las ecuaciones PI-D e I-PD indicando los par\u00e1metros <em>P_ON_E<\/em> y <em>P_ON_M<\/em> respectivamente. Tambi\u00e9n permite cambiar las variables de sinton\u00eda &#8216;on the fly&#8217; y por supuesto pasar de manual a autom\u00e1tico y viceversa mediante c\u00f3digo.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/Dlloydev\/QuickPID\" target=\"_blank\">QuickPID creada por Dlloydev<\/a>. Es una modificaci\u00f3n de la librer\u00eda de Brett Beauregard con alguna protecci\u00f3n anti-windup adicional.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/r-downing\/AutoPID\" target=\"_blank\">AutoPID creada por Ryan Downing<\/a>. Dispone de protecci\u00f3n anti-windup pero a cambio implementa la ecuaci\u00f3n PID cl\u00e1sica por lo que notaremos la famosa <em>derivative kick<\/em>.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/mike-matera\/FastPID\" target=\"_blank\">FastPID creada por Mike Matera<\/a>. Promete ser m\u00e1s r\u00e1pido que otras librer\u00edas a base de la simplificaci\u00f3n interna de los c\u00e1lculos en coma flotante. Contiene lo b\u00e1sico pero de nuevo peca al implementar la ecuaci\u00f3n PID cl\u00e1sica.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Si opt\u00e1is por usar una librer\u00eda, cualquiera de las dos primeras es v\u00e1lida. Si vais a usar otra o ya la us\u00e1is, comprobad en el c\u00f3digo realmente como funciona para que no os llev\u00e9is ninguna sorpresa.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Para_identificacion\"><\/span>Para identificaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/br3ttb\/Arduino-PID-AutoTune-Library\" target=\"_blank\">Arduino PID AutoTune Library creada por Brett Beauregard<\/a>. Implementa el m\u00e9todo del rel\u00e9 y nos devuelve un juego de par\u00e1metros PI y PID calculados con las reglas de Ziegler y Nichols.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jackw01\/arduino-pid-autotuner\" target=\"_blank\">Arduino PID autotuner creado por Jack01<\/a>. Implementa el m\u00e9todo del rel\u00e9 y sinton\u00edas de Ziegler y Nichols. Antes de iniciar el proceso elegimos si queremos que nos devuelva la sinton\u00eda \u00abclassic PID\u00bb o \u00absome overshoot\u00bb. En caso de que no especifiquemos nos devuelve las m\u00e1s seguras \u00abno overshoot\u00bb.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/Dlloydev\/sTune\" target=\"_blank\">sTune creada por Dlloydev<\/a>. Realiza un test en lazo abierto mediante el m\u00e9todo del punto de inflexi\u00f3n sobre la curva de reacci\u00f3n. La configuraci\u00f3n es m\u00e1s exigente y nos obliga a conocer la respuesta de nuestro proceso. Al principio cuesta dar con el funcionamiento de la librer\u00eda pero como recompensa obtendremos un modelo del proceso mediante K, T0 y Tp y un juego de sinton\u00edas. Tambi\u00e9n nos da el factor de controlabilidad que en este caso es inverso a la facilidad de control comentado anteriormente.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Pod\u00e9is usar cualquiera de las tres sin problema. Si os conform\u00e1is con un resultado r\u00e1pido, las dos primeras son una buena opci\u00f3n y si quer\u00e9is invertir algo m\u00e1s de tiempo usad la tercera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Referencias\"><\/span>Referencias<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Enlaces\"><\/span>Enlaces<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\" target=\"_blank\">Arduino IDE<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/pidlab\/\" target=\"_blank\">PIDLab web<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/?p=674\" target=\"_blank\">Arduino COM Plotter<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"http:\/\/paginaspersonales.deusto.es\/jgude\/Sistemas%20Lineales\/Pr%E1ctica8.pdf\" target=\"_blank\">M\u00e9todos de sintonizaci\u00f3n en lazo abierto<\/a><\/li>\n\n\n\n<li>C\u00e1lculo manual de T1(28,3%) y T2(63,2%) [<a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/C%c3%a1lculo%20manual%20T1%20y%20T2.pdf\" target=\"_blank\">PDF<\/a>] [<a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=ml6GOEckhTI\" target=\"_blank\">Youtube<\/a>]<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/ocw.ehu.eus\/file.php\/83\/capitulo10_html\/capitulo10.html\" target=\"_blank\">Dise\u00f1o de sistemas de control. Sinton\u00eda de PIDs (UPV-EHU)<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Libros_y_publicaciones\"><\/span>Libros y publicaciones<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">[1] Tore Hagglund. Process Control in Practice, De Gruyter, ISBN: 9783111104959<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[2] Karl J. Astrom, Tore Hagglund. Control PID avanzado, Pearson, ISBN: 978-84-8322-511-0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[3] Daniel Chuck. Los sistemas de primer orden y los controladores PID, edici\u00f3n 2012. [<a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/ControladoresPID.pdf\" target=\"_blank\">Link<\/a>] [<a rel=\"noreferrer noopener\" href=\"http:\/\/dea.unsj.edu.ar\/control2\/ControladoresPID.pdf\" target=\"_blank\">Link2<\/a>]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[4] J.G. Ziegler, N.B. Nichols. Optimum Settings For Automatic Controllers, 1942 edition, American Society of Mechanical Engineers. [<a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/Z-N.pdf\" target=\"_blank\">Link<\/a>]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[5] G.H. Cohen, G.A. Coon. Theoretical Consideration of Retarded Control, 1953 edition, American Society of Mechanical Engineers. [<a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/Cohen_Coon.pdf\" target=\"_blank\">Link<\/a>] [<a rel=\"noreferrer noopener\" href=\"http:\/\/folk.ntnu.no\/skoge\/puublications_others\/Cohen%20and%20Coon%20(1953)%20-%20Theoretical%20Consideration%20of%20Retarded%20Control.pdf\" target=\"_blank\">Link2<\/a>]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[6] Daniel E. Rivera. Internal Model Control: A Comprehensive View, 1999 edition, College of Engineering and Applied Sciences. [<a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/IMC_(Rivera).pdf\" target=\"_blank\">Link<\/a>]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[7] R. Vilanova, A. Visioli. PID Control in the Third Millennium. Chapter 5, The SIMC Method for smooth PID Controller Tuning, Springer. ISBN: 978-1-4471-2424-5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[8] Guillermo J. Silva, Aniruddha Datta, S.P. Bhattacharyya. PID Controllers for Time-Delay Systems. Chapter 10, Analysis of Some PID Tunning Techniques. Birkh\u00e4user. ISBN: 0-8176-4266-8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[9] Acedo S\u00e1nchez, Jos\u00e9. Instrumentaci\u00f3n y control avanzado de procesos, Diaz de Santos, ISBN: 978-84-7978-754-7.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[10] Morilla Garc\u00eda, Fernando. \u00bfQu\u00e9 quieres controlar? \u00bfHas probado con controladores PID?. Dpto. de Inform\u00e1tica y Autom\u00e1tica UNED. [<a href=\"https:\/\/www.dia.uned.es\/~fmorilla\/MaterialDidactico\/P2015_Conferencia_PID_FMorilla_19Mayo2015.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Link<\/a>]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[11] Aidan O\u2019Dwyer. Handbook of PI and PID controller tuning rules, 3rd edition, Imperial College Press. ISBN: 978-1-84816-242-6<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci&oacute;n Actualmente, el controlador PID se erige como el m&eacute;todo dominante en la ingenier&iacute;a de control de procesos. Su extraordinaria popularidad se debe a varias razones, pero, &iquest;qu&eacute; lo distingue realmente? &iquest;C&oacute;mo ha alcanzado este algoritmo tal grado de omnipresencia que una b&uacute;squeda r&aacute;pida en Google arroja m&aacute;s de dos mil millones de resultados? La respuesta es m&aacute;s sencilla de lo que parece: el PID es un algoritmo tanto elemental como resistente. Su robustez es tal que incluso un novato&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/garikoitz.info\/blog\/2022\/05\/introduccion-al-algoritmo-pid-y-su-implementacion-en-arduino\/\"> Leer m\u00e1s<span class=\"screen-reader-text\">  Leer m\u00e1s<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1641,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","wpupg_custom_link":[],"wpupg_custom_link_behaviour":[],"wpupg_custom_link_nofollow":[],"wpupg_custom_image":[],"wpupg_custom_image_id":[],"footnotes":""},"categories":[15],"tags":[94,16,149,148,143,96,147,144,145,150,122,142,17,146,101],"class_list":["post-1566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","tag-acp","tag-arduino","tag-curva-de-reaccion","tag-derivativo","tag-i-pd","tag-identificacion-de-procesos","tag-integral","tag-lazo-abierto","tag-lazo-cerrado","tag-oscilacion-mantenida","tag-pi","tag-pi-d","tag-pid","tag-proporcional","tag-sintonia-pid"],"_links":{"self":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/1566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/comments?post=1566"}],"version-history":[{"count":131,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/1566\/revisions"}],"predecessor-version":[{"id":2295,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/1566\/revisions\/2295"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/media\/1641"}],"wp:attachment":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/media?parent=1566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/categories?post=1566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/tags?post=1566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}