{"id":638,"date":"2020-05-24T09:03:07","date_gmt":"2020-05-24T09:03:07","guid":{"rendered":"https:\/\/garikoitz.info\/blog\/?p=638"},"modified":"2024-11-19T20:17:18","modified_gmt":"2024-11-19T20:17:18","slug":"sintonizar-pid-con-arduino-i","status":"publish","type":"post","link":"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/","title":{"rendered":"Sintonizar PID con Arduino &#8211; Control de temperatura"},"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\/2020\/05\/sintonizar-pid-con-arduino-i\/#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\/2020\/05\/sintonizar-pid-con-arduino-i\/#Sistema_empleado\" >Sistema empleado<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Componentes\" >Componentes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Esquema_de_conexiones\" >Esquema de conexiones<\/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\/2020\/05\/sintonizar-pid-con-arduino-i\/#Codigo_de_Arduino\" >C\u00f3digo de Arduino<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Identificacion_del_sistema\" >Identificaci\u00f3n del sistema<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Recopilacion_de_datos_en_lazo_abierto\" >Recopilaci\u00f3n de datos en lazo abierto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Facilidad_de_control\" >Facilidad de control<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Ajuste_y_simulacion_en_lazo_cerrado\" >Ajuste y simulaci\u00f3n en lazo cerrado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Resultados\" >Resultados<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#CC-10_PI\" >CC-10 (PI)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#ZN-LA-10_PI\" >ZN-LA-10 (PI)<\/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-13\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Conclusiones\" >Conclusiones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#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-15\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#Enlaces\" >Enlaces<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/#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\">Existen un mont\u00f3n de art\u00edculos sobre la implementaci\u00f3n de controladores PID con Arduino, pero en la mayor\u00eda de ellos me encuentro que la sintonizaci\u00f3n se hace con el m\u00e9todo de prueba y error. En este aspecto el algoritmo PID ha demostrado ser muy robusto, lo suficiente como para salir airoso incluso ante una \u00abmala\u00bb sintonizaci\u00f3n. Esto no quiere decir que el m\u00e9todo de prueba y error no sea v\u00e1lido, de hecho, cuando montamos algo serio por primera vez y no tenemos referencias de funcionamiento es normal recurrir a m\u00e9todos pragm\u00e1ticos, pero mi intenci\u00f3n es que teng\u00e1is una alternativa de sintonizaci\u00f3n anal\u00edtica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No voy a aburriros con conceptos matem\u00e1ticos ni espero perderme en la selva con las explicaciones, la intenci\u00f3n de este art\u00edculo es que con un breve an\u00e1lisis y con unas sencillas herramientas desarrolladas para la ocasi\u00f3n seamos capaces de evitar el uso del famoso m\u00e9todo de \u00abprueba y error\u00bb y aplicarlo a la mayor\u00eda de nuestras implementaciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sistema_empleado\"><\/span>Sistema empleado<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El sistema empleado es muy sencillo, en esencia consta de de una <strong>fuente de calor<\/strong>, un <strong>sensor de temperatura<\/strong> y <strong>un ventilador<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\" style=\"grid-template-columns:32% auto\"><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema012.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema012.png\" alt=\"Alzado y planta del sistema\" class=\"wp-image-766 size-full\"\/><\/a><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">La fuente de calor es una resistencia de 12V como las que podemos encontrar para calentar el filamento de las impresoras 3D. Ojo porque a 12V se calienta hasta 350\u00baC por lo que para nuestro sistema la alimentaremos a 4,5V obteniendo unos 120\u00baC. En el interior y pegando a la fuente de calor he situado un sensor de temperatura <a rel=\"noreferrer noopener\" href=\"https:\/\/datasheets.maximintegrated.com\/en\/ds\/DS18B20.pdf\" target=\"_blank\">DS18B20<\/a> y en la parte superior hay un ventilador de 12V capaz de girar a 7500 rpms para bajar la temperatura del sistema. El objetivo es mediante un controlador PID mantener estable la temperatura del interior aprovechando una salida PWM de Arduino.<\/p>\n<\/div><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_control02.fw_.png\"><img decoding=\"async\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_control02.fw_.png\" alt=\"\" class=\"wp-image-767\"\/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Tanto el calentador como el ventilador son dos bestias pardas y necesitan de fuentes de alimentaci\u00f3n externas. Como hemos comentado la resistencia la alimentaremos a 4,5V obteniendo 120\u00baC. El ventilador de 12V es de 4 pines por lo que aprovecharemos uno de sus pines para controlar mediante una salida PWM de Arduino la velocidad de giro. Una caracter\u00edstica com\u00fan en este tipo de ventiladores es que cuando la se\u00f1al PWM que reciben es 0, estos giran a unas revoluciones m\u00ednimas, es decir, nunca paran. En nuestro caso con PWM 0 el ventilador gira a 1200 rpms enfriando nuestro sistema de 120\u00baC a 80\u00baC.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"296\" height=\"300\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-296x300.jpg\" alt=\"\" class=\"wp-image-769\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-296x300.jpg 296w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-768x780.jpg 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-1009x1024.jpg 1009w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-1513x1536.jpg 1513w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-2018x2048.jpg 2018w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/IMG_20200523_124750-266x270.jpg 266w\" sizes=\"auto, (max-width: 296px) 100vw, 296px\" \/><\/a><figcaption class=\"wp-element-caption\">Montaje del sistema<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Componentes\"><\/span>Componentes<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:\/\/store.arduino.cc\/arduino-uno-rev3\" target=\"_blank\">Arduino UNO<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.es\/s?k=DS18B20&amp;__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;ref=nb_sb_noss_2\" target=\"_blank\">Sensor DS18B20<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.es\/gp\/product\/B07R2BG2CS\/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\" target=\"_blank\">Ventilador de 12V y 7500 rpms (4 pines)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.es\/gp\/product\/B082HV788B\/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&amp;psc=1\" target=\"_blank\" rel=\"noreferrer noopener\">Resistencia\/Calentador 12V 50W<\/a><\/li>\n\n\n\n<li>Un potenci\u00f3metro<\/li>\n\n\n\n<li>Un interruptor<\/li>\n\n\n\n<li>Una resistencia de 220 ohm<\/li>\n\n\n\n<li>Una fuente externa de 12V<\/li>\n\n\n\n<li>Una fuente externa regulable de 4,5V<\/li>\n\n\n\n<li>Cables dupont para el conexionado<\/li>\n\n\n\n<li>Una protoboard <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>El coste aproximado si tienes que comprar todos los componentes es de entre 40-50\u20ac sin contar con las fuentes externas<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Esquema_de_conexiones\"><\/span>Esquema de conexiones<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"134\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-300x134.png\" alt=\"\" class=\"wp-image-819\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-300x134.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-1024x459.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-768x344.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-1536x688.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-2048x918.png 2048w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Esquema_conexi\u00f3n_ds18b20-604x270.png 604w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">Conexiones del sistema<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Para el montaje la \u00fanica consideraci\u00f3n es que cuando trabajamos con varios voltajes las masas deben ir unidas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Codigo_de_Arduino\"><\/span>C\u00f3digo de Arduino<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"true\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/***************************************************************\n\/\/ Desarrollado por Garikoitz Mart\u00ednez [garikoitz.info] [05\/2020]\n\/\/ https:\/\/garikoitz.info\/blog\/?p=638\n\/\/ https:\/\/garikoitz.info\/blog\/?p=674\n\/\/***************************************************************\n\/\/===============================================================\n\/\/ Librer\u00edas\n\/\/===============================================================\n#include &lt;Arduino.h>\n#include &lt;OneWire.h>\n#include &lt;DallasTemperature.h>   \n#include &lt;Wire.h>\n#include &lt;LCD.h>            \n#include &lt;LiquidCrystal_I2C.h>\n#include &lt;math.h>\n#include &lt;PID_v1.h>\n\/\/===============================================================\n\/\/ Variables globales &amp; Constantes\n\/\/===============================================================\nOneWire onewire(8);\nDallasTemperature sensors(&amp;onewire);\ndouble Setpoint, Input, Output;\ndouble Kp=55, Ki=29, Kd=0;\nPID myPID(&amp;Input, &amp;Output, &amp;Setpoint, Kp, Ki, Kd, REVERSE);\nboolean modo = false; \/\/false=auto true=manual\nString modos = \"\";\nfloat OP;\nconst int pot =0; \/\/ Potenci\u00f3metro conectado al pin A0\nconst int vent =5; \/\/ ventilador conectado al pin 5\nint velocidad;\nLiquidCrystal_I2C lcd(0x3F,2, 1, 0, 4, 5, 6, 7);\n\/\/===============================================================\n\/\/ SETUP\n\/\/===============================================================\nvoid setup(void) {\n    Serial.begin(9600);\n    pinMode(vent, OUTPUT);\n    sensors.begin();\n    sensors.setResolution(0, 11);\n    lcd.begin(20,4);\n    lcd.setBacklightPin(3,POSITIVE);\n    lcd.home(); \n}\n\/\/===============================================================\n\/\/ BUCLE PRINCIPAL\n\/\/===============================================================\nvoid loop() {\n      \/\/ Interruptor Auto\/Manual\n      if (digitalRead(12) == HIGH){\n        modo=true;\n        modos=\"MANUAL\";\n        myPID.SetMode(MANUAL);\n      }else{\n          modo=false;\n          modos=\"AUTOMATICO\";\n          myPID.SetMode(AUTOMATIC);\n       }\n       sensors.requestTemperatures();\n       Input = sensors.getTempCByIndex(0);\n     \/\/ MODO MANUAL Potenci\u00f3metro ---> PWM Ventilador\n     if (modo==true){\n         velocidad = analogRead (pot);\n         OP = map(velocidad, 0, 1023, 0, 255);\n         analogWrite(vent, OP);\n         myPID.SetMode(MANUAL);\n         \/\/LCD en MANUAL\n         lcd.clear();\n         lcd.setCursor(0,0);\n         lcd.print(\"====== \");\n         lcd.print(modos);\n         lcd.print(\" ======\");\n         lcd.setCursor(0,1);\n         lcd.print(\"  T: \");             \n         lcd.print(Input,2);\n         lcd.print(\"\\337C \");\n         lcd.setCursor(0,2);\n         lcd.print(\" OP: \"); \n         lcd.print(OP*0.3921);\n         lcd.print(\" % \");\n         lcd.setCursor(0,3);\n         lcd.print(\"PWM: \");\n         lcd.print(OP,0);\n        \/\/ DEBUG PUERTO SERIE (Para Arduino COM Plotter)\n        Serial.print(\"#\");            \/\/Char inicio\n        Serial.print(0);              \/\/Dejo vac\u00edo para ACP\n        Serial.write(\" \");            \/\/Char separador\n        Serial.print(Input,2);        \/\/PV\n        Serial.write(\" \");            \/\/Char separador\n        Serial.print(OP*0.3921,0);    \/\/OP\n        Serial.println();\n     }\n     \/\/ MODO AUTOM\u00c1TICO---------------------------------------------\n     if (modo==false){\n        float set=analogRead(pot);\n        Setpoint=map(set,0,1023,60.0,40.0); \n        Input = sensors.getTempCByIndex(0);\n        myPID.SetMode(AUTOMATIC);\n        \/\/-----------------------------\n        \/\/LCD en AUTO\n        lcd.clear();\n        lcd.setCursor(0,0);\n        lcd.print(\"==== \");\n        lcd.print(modos);\n        lcd.print(\" ====\");\n        \/\/\n        lcd.setCursor(0,1);\n        lcd.print(\"PV: \");\n        lcd.print(Input,2);\n        lcd.print(\" \\337C \");\n        lcd.setCursor(0,2);\n        lcd.print(\"SP: \");\n        lcd.print(Setpoint,2);\n        lcd.print(\" \\337C \");\n        lcd.setCursor(0,3);\n        lcd.print(\"OP: \");\n        lcd.print(Output*0.3921,2);\n        lcd.print(\" %\");\n        \/\/\n        myPID.Compute();\n        analogWrite(vent, Output);\n       \/\/===============================================================\n       \/\/ DEBUG PUERTO SERIE (Para Arduino COM Plotter)\n       \/\/===============================================================\n        Serial.print(\"#\");              \/\/Char inicio\n        Serial.print(Setpoint,0);       \/\/SP\n        Serial.write(\" \");              \/\/Char separador\n        Serial.print(Input,2);          \/\/PV\n        Serial.write(\" \");              \/\/Char separador\n        Serial.print(Output*0.3921,0);  \/\/OP\n        Serial.println();\n    }\n    delay(1000);\n}\/\/Fin void loop<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Identificacion_del_sistema\"><\/span>Identificaci\u00f3n del sistema<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Recopilacion_de_datos_en_lazo_abierto\"><\/span>Recopilaci\u00f3n de datos en lazo abierto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con el controlador de temperatura en manual hacemos una serie de movimientos en la salida PWM del ventilador para ver como reacciona la temperatura.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"90\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-300x90.png\" alt=\"\" class=\"wp-image-771\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-300x90.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-768x231.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-1024x308.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-1536x462.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41-604x182.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ACP_23_05_2020_01_59_41.avif 1549w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">StepTest<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Se observa que la zona donde mejor trabaja el ventilador es en los tres primeros escalones, es decir, entre 55 y 45\u00baC. Por debajo de 45\u00baC y a medida que nos acercamos al l\u00edmite inferior el tiempo de establecimiento es cada vez m\u00e1s corto y las constantes del sistema que hemos obtenido ya no son totalmente representativas y por lo tanto nuestro control se degradar\u00e1.<\/p>\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"lyte-wrapper fourthree\" style=\"width:420px;max-width:100%;margin:5px;\"><div class=\"lyMe\" id=\"WYL_ml6GOEckhTI\"><div id=\"lyte_ml6GOEckhTI\" data-src=\"\/\/i.ytimg.com\/vi\/ml6GOEckhTI\/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\/ml6GOEckhTI\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/ml6GOEckhTI\/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>Ejemplo de c\u00e1lculo de K, To y Tp<\/figcaption><\/figure>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"121\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553-300x121.png\" alt=\"\" class=\"wp-image-773\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553-300x121.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553-768x309.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553-604x243.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185553.avif 810w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">Escal\u00f3n analizado<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185531.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"295\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185531-300x295.png\" alt=\"\" class=\"wp-image-775\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185531-300x295.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185531-275x270.png 275w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/2020-05-23_185531.avif 398w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">C\u00e1lculo de las constantes con ACP<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Con la ayuda de ACP obtenemos las siguientes constantes del sistema.<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>K<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">0,120<\/td><td>%\/%<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>To<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">8,5<\/td><td>segundos<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Tp<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">103,5<\/td><td>segundos<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Constantes del sistema<\/figcaption><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Facilidad_de_control\"><\/span>Facilidad de control<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El cociente entre To y Tp nos sugiere la facilidad de control de un sistema. En este caso estamos en la zona de muy f\u00e1cil ya que 8,5\/103,5=0,08.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ajuste_y_simulacion_en_lazo_cerrado\"><\/span>Ajuste y simulaci\u00f3n en lazo cerrado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n un resumen de las posibles sinton\u00edas ofrecidas por ACP para nuestro sistema.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"199\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5-300x199.png\" alt=\"\" class=\"wp-image-2308\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5-300x199.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5-768x510.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5-1024x680.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5-407x270.png 407w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/Sintonias_K01_2_T08_5_Tp103_5.avif 1167w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Se aprecia que los m\u00e9todos cl\u00e1sicos como el de Cohen Coon o Ziegler Nichols proponen sinton\u00edas m\u00e1s agresivas (&gt;Kc y &lt;Ti) y m\u00e1s centradas en la ganancia proporcional que los m\u00e9todos m\u00e1s modernos como el Improved SIM C de <a href=\"https:\/\/folk.ntnu.no\/skoge\/\" target=\"_blank\" rel=\"noreferrer noopener\">Skogestad<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos m\u00e9todos tienen condiciones de aplicaci\u00f3n normalmente relacionados con To y Tp. Si se da alguna condici\u00f3n, ACP nos avisar\u00e1 con una ventana emergente. Esto no significa que no lo podamos usar, sencillamente que el m\u00e9todo tiene restricciones de aplicaci\u00f3n. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Resultados\"><\/span>Resultados<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"has-black-color has-text-color wp-block-paragraph\">A continuaci\u00f3n compararemos la respuesta real del sistema con la simulaci\u00f3n en lazo cerrado de un par de sinton\u00edas cl\u00e1sicas como son Cohen Coon y Ziegler Nichols, en concreto un cambio de punto de consigna. Como se puede apreciar la simulaci\u00f3n es fiel a la respuesta real del sistema lo que indica que la identificaci\u00f3n mediante saltos escal\u00f3n ha sido aceptable. <strong><em>Siento no tener m\u00e1s gr\u00e1ficas y m\u00e1s ejemplos pero he perdido los datos de esta maqueta<\/em><\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"CC-10_PI\"><\/span>CC-10 (PI)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"91\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-300x91.png\" alt=\"\" class=\"wp-image-2310\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-300x91.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-768x234.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-1024x311.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-1536x467.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42-604x184.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_22_09_2024_12_22_42.avif 1549w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"79\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-300x79.png\" alt=\"\" class=\"wp-image-2311\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-300x79.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-768x202.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-1024x269.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-1536x404.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18-604x159.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/CC10_ACP_sim_22_09_2024_12_22_18.avif 1549w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"ZN-LA-10_PI\"><\/span>ZN-LA-10 (PI)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"91\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-300x91.png\" alt=\"\" class=\"wp-image-2314\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-300x91.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-768x234.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-1024x311.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-1536x467.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50-604x184.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN-10_ACP_22_09_2024_12_27_50.avif 1549w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><a href=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"79\" src=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-300x79.png\" alt=\"\" class=\"wp-image-2313\" srcset=\"https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-300x79.png 300w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-768x202.png 768w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-1024x269.png 1024w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-1536x404.png 1536w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51-604x159.png 604w, https:\/\/garikoitz.info\/blog\/wp-content\/uploads\/2020\/05\/ZN_10_ACP_sim_22_09_2024_12_27_51.avif 1549w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusiones\"><\/span>Conclusiones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Desde el <strong>punto de vista<\/strong> <strong>de control<\/strong> se puede decir que <strong>todos los m\u00e9todos probados<\/strong> han tenido una respuesta aceptable y por lo tanto con una dedicaci\u00f3n m\u00ednima podemos realizar una sinton\u00eda robusta de nuestros sistemas para evitar el prueba y error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puede que le llame la atenci\u00f3n al lector el \u00abpoco caso\u00bb que se le ha dado al termino derivativo, y es que <strong>en el 90% de los casos con un controlador PI es m\u00e1s que suficiente<\/strong> y por lo tanto os recomiendo que antes de usar un PID os hag\u00e1is la siguiente pregunta, \u00bfme aporta alguna mejora incluir el termino derivativo?. En nuestro caso, al incluir el t\u00e9rmino derivativo la \u00fanica diferencia ha sido que la salida se ha vuelto m\u00e1s oscilante sin una mejora notable en la respuesta de control. Como norma general <strong>no se recomienda el uso del termino derivativo<\/strong> <strong>si T0 es peque\u00f1o en comparaci\u00f3n con Tp<\/strong> (como es nuestro caso) y suele ser \u00fatil si T0 est\u00e1 en torno a Tp\/2 y siempre y cuando la PV no tenga ruido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ha quedado patente que es factible caracterizar la din\u00e1mica de un sistema relativamente sencillo por pocos datos que tengamos. A\u00fan as\u00ed, lo m\u00e1s importante que me gustar\u00eda remarcar es <strong>la importancia que tiene conocer bien el sistema que queremos controlar<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finalmente espero haber arrojado algo de luz sobre la sinton\u00eda PID y que os anim\u00e9is a utilizar ACP para evitar el m\u00e9todo prueba y error siempre que sea posible.<\/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 href=\"https:\/\/garikoitz.info\/pidlab\/\">PIDLab <\/a>(C\u00e1lculo de sinton\u00edas y Simulador online)<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/?p=674\" target=\"_blank\">Manual de 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><a rel=\"noreferrer noopener\" href=\"https:\/\/garikoitz.info\/blog\/descargas\/C%c3%a1lculo%20manual%20T1%20y%20T2.pdf\" target=\"_blank\">C\u00e1lculo manual de T1(28,3%) y T2(63,2%)<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.controleng.com\/articles\/tuning-pid-control-loops-for-fast-response\/\" target=\"_blank\">Tuning PID control loops for fast response<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.luisllamas.es\/arduino-puerto-serie\/\" target=\"_blank\">Comunicaci\u00f3n de Arduino con puerto serie<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/br3ttb\/Arduino-PID-Library\/\" target=\"_blank\">Arduino PID library by Brett Beauregard<\/a> [<a rel=\"noreferrer noopener\" href=\"http:\/\/brettbeauregard.com\/blog\/2011\/04\/improving-the-beginners-pid-introduction\/\" target=\"_blank\">01<\/a>] [<a rel=\"noreferrer noopener\" href=\"http:\/\/brettbeauregard.com\/blog\/wp-content\/uploads\/2012\/07\/Gu%C3%ADa-de-uso-PID-para-Arduino.pdf\" target=\"_blank\">02<\/a>]<\/li>\n\n\n\n<li><a href=\"https:\/\/garikoitz.info\/blog\/?p=1566\" target=\"_blank\" rel=\"noreferrer noopener\">Introducci\u00f3n al algoritmo PID y su implementaci\u00f3n en Arduino<\/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] Aidan O\u2019Dwyer. Handbook of PI and PID controller tuning rules, 3rd edition, Imperial College Press. ISBN: 978-1-84816-242-6<\/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] Chriss Grimholt, Sigurd Skogestad. The improved SIMC method for PI controller tuning, IFAC-conference PID\u201912, Brescia, Italy, March 2012. [<a href=\"http:\/\/npcw17.imm.dtu.dk\/Proceedings\/Session%207%20Control%20Theory\/The%20improved%20SIMC%20method%20for%20PI%20controller%20tuning.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Link<\/a>] <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[9] 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\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci&oacute;n Existen un mont&oacute;n de art&iacute;culos sobre la implementaci&oacute;n de controladores PID con Arduino, pero en la mayor&iacute;a de ellos me encuentro que la sintonizaci&oacute;n se hace con el m&eacute;todo de prueba y error. En este aspecto el algoritmo PID ha demostrado ser muy robusto, lo suficiente como para salir airoso incluso ante una &laquo;mala&raquo; sintonizaci&oacute;n. Esto no quiere decir que el m&eacute;todo de prueba y error no sea v&aacute;lido, de hecho, cuando montamos algo serio por primera vez y&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/garikoitz.info\/blog\/2020\/05\/sintonizar-pid-con-arduino-i\/\"> Leer m\u00e1s<span class=\"screen-reader-text\">  Leer m\u00e1s<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":780,"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,95,93,96,99,97,98],"class_list":["post-638","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","tag-acp","tag-arduino","tag-arduino-com-plotter","tag-bme280","tag-identificacion-de-procesos","tag-l298n","tag-modelado-de-procesos","tag-sintonizacion-pid"],"_links":{"self":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/638","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=638"}],"version-history":[{"count":133,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/638\/revisions"}],"predecessor-version":[{"id":2349,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/posts\/638\/revisions\/2349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/media\/780"}],"wp:attachment":[{"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/media?parent=638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/categories?post=638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/garikoitz.info\/blog\/wp-json\/wp\/v2\/tags?post=638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}