Anda di halaman 1dari 10

Controladores PID

Proporcional-Integral-Derivado (PID) es un algoritmo básico en la teoría de control. El algoritmo PID sin problemas y
controla con precisión un sistema, como la temperatura en un horno o la posición de una superficie de control en un
avión. Un PID El controlador funciona calculando una cantidad de error basada en la diferencia entre un valor
establecido y un comentario valor, y proporciona un ajuste a la salida para corregir ese error. El control y la decisión del
ajuste es hecho en matemáticas en lugar de puro control lógico, como si ... las declaraciones de else. Los controladores
PID tienen muchos tipos de usos, incluyendo control de robótica, temperatura, velocidad y posicionamiento. Lo básico,
configuración de codificación y ajuste de PID los controladores para la plataforma Arduino se discuten en este capítulo.

Las matemáticas
Configurar un controlador PID implica calcular constantemente un algoritmo. La siguiente ecuación es la suma de tres
partes de PID: proporcional, integral y derivada. La ecuación para el algoritmo PID intenta disminuir la cantidad de
diferencia entre un punto de ajuste (el valor deseado) y un valor medido, también conocido como retroalimentación.
La salida se altera para que se mantenga el punto de referencia. Los controladores PID pueden trabajar fácilmente con
sistemas que tienen control sobre una salida variable.
Las variables de la ecuación son
• E: el error calculado que se determina al restar la entrada del punto de ajuste (Sp - Entrada)
• t: El cambio en el tiempo desde la última vez que se ejecutó la ecuación
• Kp: la ganancia para el componente proporcional
• Ki: la ganancia para el componente integral
• Kd: la ganancia para el componente derivado

La declaración proporcional
El P en PID es una declaración proporcional del error, o la diferencia entre la entrada y el valor del punto de ajuste. Kp es
el valor de ganancia y determina cómo reacciona la declaración P para cambiar en error; cuanto menor sea la ganancia,
menor será el sistema reacciona a un error Kp es lo que sintoniza la parte proporcional de la ecuación. Todos los valores
de ganancia son establecidos por el programador o dinámicamente a través de una entrada de usuario. La declaración
proporcional ayuda en el control de error de estado estacionario al tratar siempre de mantener el error es mínimo. El
estado estable describe cuándo un sistema ha alcanzado el punto de ajuste deseado. La primera parte de la el código
proporcional calculará la cantidad de error y aparecerá algo como esto:

La segunda parte del código multiplica el error por la variable de ganancia:


Pout = Kp * error;
La instrucción proporcional intenta disminuir el error calculando el error a cero donde input = setpoint. Un controlador
proporcional puro, con esta ecuación y código, no se establecerá en el punto de ajuste, pero generalmente en algún
lugar debajo del punto de ajuste. La razón por la que la declaración proporcional se establece por debajo del punto de
referencia es porque la el control siempre trata de alcanzar un valor de cero, y la solución es un equilibrio entre la
entrada y la retroalimentación. Los declaración integral es responsable de lograr el punto de referencia deseado.

Nota Si Kp está configurado demasiado alto, el sistema se volverá inestable. El valor de ganancia cuando esto sucede
es diferente para cada sistema.

La declaración integral
El I en PID es para una integral; este es un concepto importante en cálculo, pero las integrales no dan miedo. En pocas
palabras, integración es el cálculo del área bajo una curva. Esto se logra al agregar constantemente un área muy
pequeña a un total acumulado Para un repaso de algunos cálculos, el área se calcula por longitud × ancho; para
encontrar el área debajo de curva, la longitud está determinada por el valor de la función y una pequeña diferencia que
luego se agrega a todas las demás funciones valores. Como referencia, la integral en este tipo de configuración es similar
a una suma de Riemann.
El algoritmo PID no tiene una función específica; la longitud está determinada por el error y el ancho de el rectángulo es
el cambio en el tiempo. El programa agrega constantemente esta área según el error. El código para el
integral es
errorsum = (errorsum + currenterror) * timechange;
Iout = Ki * errorsum;
La integral reacciona a la cantidad de error y la duración del error. El valor de error aumenta cuando la entrada
el valor está por debajo del punto de ajuste, y disminuye cuando la entrada está por encima del punto de ajuste. La
integral se mantendrá en el punto de referencia cuando el error se vuelve cero y no hay nada que restar o agregar.
Cuando la integral se agrega a proporcional declaración, la integral corrige la compensación del error causado por la
resolución de la declaración proporcional. La integral controlará qué tan rápido el algoritmo intenta alcanzar el punto de
ajuste: los valores de ganancia más bajos se acercan a una velocidad más lenta; los valores más altos se acercan al punto
de ajuste más rápido, pero tienen la tendencia a rebasarse y pueden causar zumbidos constantemente rebasamiento
por encima y por debajo del punto de ajuste y nunca asentamiento. Algunos sistemas, como los hornos, tienen
problemas para regresar desde sobreimpulsos, donde el controlador no tiene la capacidad de aplicar una potencia
negativa. Está perfectamente bien usar solo la parte PI de una ecuación PID para control, y algunas veces un controlador
PI es satisfactorio.

Tenga en cuenta que la integral aumentará o disminuirá constantemente según el tiempo que haya un error y, en
algunos casos, esto puede llevar a la liquidación. El arrollamiento ocurre cuando la integral sale del rango de salida
factible e induce un retraso. Esta se puede corregir comprobando si Iout sale del rango de salida. Para corregir esto,
marque Iout y reinícielo al atado lo excedió.

La declaración derivada
El D en PID es la derivada, otro concepto de cálculo, que es solo una instantánea de la pendiente de una ecuación. los
la pendiente se calcula como un aumento sobre la carrera: el aumento proviene del cambio en el error o del error actual
restado de el último error; la carrera es el cambio en el tiempo. Cuando el aumento se divide por el cambio de tiempo, la
velocidad a la que se ingresa cambiando es sabido. El código para el componente derivado es
Derror = (Error - lasterror) / timechange;
Dout = Kd * Derror;
Derror = (Entrada - lastinput) / timechange;
Dout = Kd * Derror;
La derivada ayuda en el control de la sobrecarga y controla el timbre que puede ocurrir desde la integral. Alto los valores
de ganancia en la derivada pueden tener una tendencia a causar un sistema inestable que nunca alcanzará un estado
estable. Los dos versiones de código funcionan, y en su mayoría cumplen la misma función. El código que usa la
pendiente de la entrada reduce la patada derivada causada cuando se cambia el punto de ajuste; esto es bueno para
sistemas en los que el punto de ajuste cambia regularmente. Al usar la entrada en lugar del error calculado, obtenemos
un mejor cálculo sobre cómo está cambiando el sistema; el código que se basa en el error tendrá un mayor cambio
percibido y, por lo tanto, se agregará una pendiente más alta al salida final del controlador PID

Agregando todo
Con las partes individuales calculadas, la proporción, la integral y la derivada deben sumarse para lograr
una salida utilizable. Una línea de código se usa para producir el resultado:
Salida = Pout + Iout + Dout;
La salida puede necesitar normalizarse para la entrada cuando la salida equivale a potencia. Algunos sistemas necesitan
la salida es cero cuando se alcanza el punto de referencia (por ejemplo, hornos) para que no se agregue más calor; y
para motor controles, la salida puede tener que ir negativa para invertir el motor.
Hora
Los controladores PID usan el cambio en el tiempo para calcular el orden en que se ingresan los datos y se relaciona
cuando el PID es calculado y cuánto tiempo ha pasado desde la última vez que el programa calculó el PID. El sistema
individual la implementación determina el tiempo necesario para el cálculo. Sistemas rápidos como aviones controlados
por radio puede requerir tiempo en milisegundos, los hornos o los refrigeradores pueden tener sus diferencias de
tiempo calculadas en segundos, y los sistemas químicos y HVAC pueden requerir minutos. Todo esto se basa en la
capacidad del sistema para cambiar; al igual que en la física, Los objetos más grandes se moverán más lentamente a una
fuerza dada que los más pequeños con la misma fuerza.
Hay dos formas de configurar el cálculo del tiempo. El primero toma la hora actual y resta la de la última hora y utiliza el
cambio resultante en el cálculo de PID. El otro espera una cantidad de tiempo determinada para aprobar antes de
calculando la siguiente iteración. El código para calcular basado en el tiempo es el siguiente y estaría en un bucle:

// lazo
ahora = millis ();
timechage = (ahora - la última vez);
// cálculos de pid
última vez = ahora;

Este método es bueno para sistemas rápidos como servocontroladores, donde el cambio en el tiempo se basa en qué
tan rápido el código corre a través de un bucle. Algunas veces es necesario muestrear en un intervalo de tiempo mayor
al que se ejecuta el código o tiene más consistencia entre el tiempo que calcula el PID. Para estas instancias, se puede
asumir el cambio de tiempo ser 1 y se puede eliminar del cálculo para los componentes I y D, guardando la
multiplicación continua y división del código. Para acelerar el cálculo de PID, el cambio en el tiempo se puede calcular
contra las ganancias en lugar de calcularse dentro del PID. La transformación del cálculo es Ki * settime y Kd / settime.
El código se ve así, con ganancias de .5 recogidas como un punto inicial general sin ajustar:
// preparar
settime = 1000; // 1000 milisegundos es 1 segundo
Kp = .5;
Ki = .5 * settime;
Kd = .5 / settime;
// lazo
ahora = millis ();
timechage = (ahora - lasttime);
if (timechange> = cambio de hora) {
error = Setpoint - Entrada;
errorsum = errorsum + error;
Derror = (Entrada - Última entrada);
Pout = Kp * error;
Iout = Ki * errorsum;
Dout = Kd * Derror;
Salida = Pout + Iout + Dout;
}
Configuración del controlador PID
Ahora que las matemáticas y el marco están fuera del camino, es hora de configurar un sistema PID básico en un
Arduino. Esta ejemplo utiliza un filtro de paso bajo RC (del Capítulo 6) con un potenciómetro adicional para simular una
perturbación externa.
Cableado del hardware
Configure un Arduino según la Figura 7-1. Después de configurar Arduino con los componentes, cargue el código en el
Listado 7-1.
Listado 7-1. Bosquejo básico de Pdu Arduino
Flotante Kp = .5, Ki = .5, Kd = .5; // valores de ganancia PID
flotar Pout, Iout, Dout, Salida; // variables de salida final PID
flotar ahora, lasttime = 0, timechange; // hora importante
float Entrada, lastinput, Setpoint = 127.0; // variables basadas en entrada
error de flotación, errorsum = 0, Derror; // salida de los componentes PID
int settime = 1000; // esto = 1 segundo, por lo que Ki y Kd no necesitan modificación
void setup () {
Serial.begin (9600); // configuración en serie para verificación
} // fin de configuración vacía () {
void loop () {
ahora = millis (); // obtener milisegundos actuales
timechange = (now - lasttime); // calcular la diferencia
if (timechange> = settime) {// ejecuta PID cuando la hora está en el tiempo establecido
Entrada = (analogRead (0) /4.0); // leer Entrada y normalizar al rango de salida
error = Setpoint - Entrada; // calcular error
errorsum = errorsum + error; // agregar error de curado a la ejecución de un total de error
Derror = (Entrada - Última entrada); // calcular la pendiente de la entrada
Pout = Kp * error; // calcular ganancias de PID
Iout = Ki * errorsum;
Dout = Kd * Derror;
if (Iout> 255) // verifica el ciclo integral y corrige
Iout = 255;
if (Iout <0)
Iout = 0;
Salida = Pout + Iout + Dout; // prepara la variable de salida
if (Output> 255) // control de cordura del resultado, manteniéndolo dentro del
Salida = 255; // rango de salida disponible
if (Salida <0)
Salida = 0;
lastinput = Entrada; // guarda la entrada y el tiempo para el siguiente ciclo
lasttime = now;
analogWrite (3, Salida); // escribe la salida al pin 3 de PWM
Serial.print (Setpoint); // imprimir información al monitor serial
Serial.print (":");
Serial.print (entrada);
Serial.print (":");
Serial.println (Salida);
} // end if (timechange> = settime)
} // end void loop ()
806/5000

Verificando el Código
Ejecute el código cargado en el Arduino e inicie el monitor en serie. El código imprimirá una línea que
contiene el Setpoint: Input: valores de salida e imprime una línea por iteración del PID en ejecución
aproximadamente cada segundo. Los el sistema se estabilizará alrededor de un valor del punto de
referencia, el primer valor de cada línea impresa en el monitor serie. Sin embargo, debido al ruido
inherente en el filtro RC, nunca se establecerá directamente en el punto de referencia. El uso de un
circuito RC es uno de las formas más fáciles de demostrar un controlador PID en acción, junto con el
ruido que simula una posible inestabilidad en el sistema. El potenciómetro se usa para simular una
perturbación externa negativa; si la resistencia en el potenciómetro es aumentado, el controlador
aumentará la salida para mantener la entrada en el punto de ajuste.

Nota Si el Arduino fuera lo suficientemente rápido y tuviera una mayor precisión en el PWM, sería posible eliminar el
fluctuación en el filtro RC con un controlador PID.

Sintonizador PID
Para representar gráficamente los diferentes controladores en tiempo real y en el hardware real, hay una aplicación
llamada sintonizador PID disponible en el repositorio de libros github (https://github.com/ProArd/Pidtuner). El
sintonizador PID implementa P, I y D tipos de controladores con la combinación openFrameworks-and-Firmata (como en
el Capítulo 3). Figuras 7-2 a 7-4 se hicieron desde la aplicación PID Tuner (ver la siguiente sección, en la que
comenzaremos a examinar diferentes tipos de controladores) con más detalle). La aplicación PID Tuner fue desarrollada
para proporcionar una interfaz gráfica funcional para Arduino hardware e implementar algunos algoritmos de control
para fines de prueba y ajuste. Con PID Tuner, es posible pruebe muchos valores de ganancia diferentes sin tener que
cargar un nuevo boceto al Arduino cada vez.
Después de descargar el archivo, haga lo siguiente:
1. Descomprímelo en la carpeta openFrameworks apps / myapps.
2. Cambie la conexión del puerto serie para conectarse a un Arduino configurado como se muestra en
Figura 7-1 y cargado con el boceto estándar de Firmata.
3. Abra la carpeta PID y compile el proyecto.

Una vez que el sintonizador PID está compilado y ejecutándose, y el Arduino está configurado como se muestra en la
Figura 7-1, el programa controla el pin PWM para el controlador PID y simula un aumento lineal y un tiempo de caída
para ON / OFF y una BANDA MUERTA controlador; la aplicación usa comandos de teclas individuales para establecer el
ajuste.
• Las teclas o, y y h activan o desactivan un solo tipo de controlador:
• o = PID
• y = ON / OFF
• Las teclas c, r y z borran, restablecen y ponen a cero el gráfico:
• c = claro
• r = reinicio
• z = cero
• Las teclas S y S aumentan y disminuyen el primer punto de referencia, y A y a aumentan y disminuyen
segundo setpoint que se usa para el controlador DEAD BAND.
• Las teclas M y M aumentan y disminuyen la salida de PWM en el Arduino.
• Las teclas p, iyd activan y desactivan las declaraciones individuales del controlador PID.
• Las teclas Q, W y E aumentan los valores de ganancia individuales para el controlador PID en incrementos de .01.
q, w y e disminuyen las ganancias:
• Q = Kp + .01
• q = Kp - .01
• W = Ki + .01
• w = Ki - .01
• E = Kd + .01
• e = Kd - .01
• La barra espaciadora inicia y detiene la lectura de los controladores y detiene la salida del gráfico.

Nota A parte de la redacción de este libro, la aplicación PID Tuner está en desarrollo preliminar; puede ser un poco
defectuoso, y requiere que la conexión se cambie manualmente en el código. La aplicación también se ejecuta a la
velocidad de ejecución más rápida y asume un tiempo no ajustable de 1.

Comparando controladores PID, DEAD BAND y ON / OFF


Con un controlador PID básico configurado y funcionando, es hora de discutir un par de otros métodos de control
comunes y cómo se comparan con PID. Los controladores DEAD BAND y ON / OFF son de la familia de controladores
lógicos, lo que significa usan controles lógicos como las sentencias if / else para determinar cómo cambiar la salida.
El controlador DEAD BAND es común para termostatos, donde se establecen valores altos y bajos. Si la entrada es
debajo del valor bajo, el controlador enciende la salida, y viceversa para el valor alto, creando un rango de salida
debe mantenerse dentro.

El controlador ON / OFF es muy parecido al controlador DEAD BAND, pero usa solo un punto de ajuste único. Cuando la
entrada está por debajo del valor, la salida está activada y luego se apaga cuando está por encima del punto de
referencia. La Figura 7-2 es el gráfico de un PID que usa el filtro RC; las ganancias son iguales a .5 para este ajuste y
configuración particular.
Se produce un pequeño sobreimpulso, pero el sistema alcanza rápidamente un estado estable, con un estado
estacionario aproximado error de +/- 4. Esto es normal para el ruido producido en el sistema.

La Figura 7-3 muestra un controlador ON / OFF que tiene un aumento más alto y una caída más lenta por cada paso del
programa; esta simula cómo podría funcionar un termostato. Este controlador está configurado con los mismos
componentes que la Figura 7-2, solo usa código diferente Una de las mayores comparaciones entre el ON / OFF y el PID
es que el estado estacionario contiene mucho más perturbaciones y no hay control directo sobre cuánto tiempo el
sistema permanecerá en el punto de referencia.
La Figura 7-4 muestra un controlador DEAD BAND que usa la misma configuración que los gráficos anteriores. La banda
muerta está formado por un punto de referencia alto y un punto de ajuste bajo. La ventaja que esto proporciona sobre
un ENCENDIDO / APAGADO básico es que el ciclo la frecuencia se reduce para disminuir la cantidad de encendido del
estado activado o desactivado. Este es el estilo de controlador promedio para sistemas HVAC, donde encender y apagar
puede conducir a un mayor consumo de energía y un aumento de la fatiga mecánica.

Las desventajas principales de estos dos controladores lógicos es que el control de la salida es discreto. Con el control de
salida encendido o apagado, no hay predicción sobre el cambio de la salida que permita nosotros para determinar qué
tan lejos están de los puntos de ajuste. Sin embargo, los controladores lógicos son generalmente más fáciles de
configurar y implementar que los controladores PID, por lo que es más común ver estos controladores en productos
comerciales.
Los controladores PID, sin embargo, tienen una clara ventaja sobre los controladores lógicos: si se implementan
correctamente, PID los controladores no agregarán más ruido a un sistema y tendrán un control más estricto en un
estado estable. Pero después de las matemáticas, es el implementaciones que hacen que los controladores PID sean un
poco más difíciles de trabajar.
PID puede controlar
Hay muchas formas de implementar un PID con una coincidencia adecuada con un sensor y un método de salida. La
matemática permanecer constante de fiabilidad. Sin embargo, puede ser necesario algún control de lógica adicional
para lograr un sistema deseado. La siguiente sección proporciona una idea de otras implementaciones de PID y algunas
ideas posibles. Es común que los controladores PID se utilicen en posicionamiento para controles de vuelo, robots de
equilibrio y algunos CNC sistemas. Una configuración común es tener un motor para la salida y un potenciómetro para la
entrada, conectado a través de un serie de engranajes, de la misma forma en que se configura un servo. Otra
implementación común es usar un sensor de interrupción de la luz y un disco ranurado como entrada, como se
encontraría en una impresora. Esta implementación requiere un poco de lógica adicional para contar, almacenar y
manipular los pasos de la entrada. La lógica se agregaría para controlar el avance o retroceso del motor movimiento
cuando se cambian los conteos. También es posible usar codificadores rotativos o sensores flexibles para la entrada.
Muchos tipos del sistema de manipulación física se puede crear a partir de motores de tipo eléctrico y actuadores
lineales, por ejemplo, aire y sistemas hidráulicos.
Los sistemas que controlan la velocidad necesitan sensores que calculen la velocidad a la potencia de salida, como en los
cruceros automotrices control, donde la velocidad es controlada por la posición del acelerador. En una aplicación
automotriz, un controlador lógico ser poco práctico para controlar suavemente el acelerador.
El control de los sistemas de temperatura puede requerir otra lógica para controlar los elementos de calentamiento y
enfriamiento, con discretos salida como relés. Los controladores PID son bastante simples de planificar cuando el
resultado es variable, pero en sistemas que proporcionan solo salida on-off, esta planificación puede ser más
complicada. Esto se logra de la misma manera que PWM carga un compositor para producir una salida de voltaje que un
ADC puede leer. El controlador PID necesita un poco de lógica para controlar el tiempo en el que se enciende el
elemento. Con los controladores PID basados en temperatura, las ganancias pueden tener que ser negativo para lograr
un controlador que se enfría a un punto de referencia. Con un tipo de sensor adecuado y una forma de controlar la
salida, se puede implementar un PID para sistemas químicos, tales como como controlar el valor de pH de una piscina o
jacuzzi. Cuando se trata de sistemas que funcionan con productos químicos, es importante que el tiempo de reacción se
tenga en cuenta para saber cómo y cuándo se agregan los reactivos. Otros sistemas PID pueden controlar los caudales
de fluidos, como el uso de válvulas eléctricas y medidores de humedad para controlar regar un jardín o césped. Si hay un
sensor que puede medir y cuantificar, y una forma de control, un PID puede ser implementado.
Sintonización
El ajuste de un PID puede ser donde se gasta la mayor parte del tiempo de configuración; semestres enteros se pueden
gastar en clases sobre cómo sintonizar y configurar controladores PID. Hay muchos métodos y modelos matemáticos
para lograr una melodía que trabajo. En resumen, no existe una sintonía correcta absoluta, y lo que funciona para una
implementación puede no funcionar para otra. Cómo funciona una configuración en particular y reacciona a los cambios
será diferente de un sistema a otro, y las reacciones deseadas de el controlador cambia la forma en que todo está
sintonizado. Una vez que la salida es controlable con el loopback y el algoritmo, hay tres parámetros que ajustan el
controlador: las ganancias de Kp, Ki y Kd. Las Figuras 7-5 a 7-7 muestran el diferencias entre baja ganancia y alta
ganancia utilizando la misma configuración de antes en el capítulo. Las ganancias de control proporcional controlan qué
tan agresivamente el sistema reacciona al error y la distancia desde el punto de referencia en el que se establecerá el
componente proporcional. A la izquierda de la Figura 7-5, usando una ganancia de 1, el sistema se estabiliza a
aproximadamente el 50 por ciento del valor de referencia. Con una ganancia de 7 (el lado derecho de la Figura 7-5), el
sistema se vuelve inestable. Para sintonizar una ganancia decente para un sistema de reacción rápida, comience con la
proporción, configure la integral y la derivada.

a cero, y aumentar el valor de Kp hasta que el sistema se vuelva inestable; luego retrocede un poco hasta que se
estabilice nuevamente. Este sistema particular se vuelve estable en torno a un valor de Kp de 2.27. Para un sistema más
lento o uno que necesita un lento reacción al error, se requerirá una ganancia menor. Después de configurar el
componente proporcional, avance a la integral.

La Figura 7-6 demuestra la adición del componente integral, lo que hace que un controlador PI. El lado izquierdo de la
figura muestra que una ganancia menor de Ki produce un controlador más lento que se acerca al punto de referencia sin
sobreimpulso. El derecho El lado de la figura, con una ganancia de 2, muestra un gráfico con un aumento más rápido,
seguido de un sobrepico y un timbre antes de establecerse en el punto de referencia. Establecer una ganancia adecuada
para esta parte depende de las necesidades del sistema y la capacidad de reaccionar ante excederse. Un sistema de
temperatura puede necesitar una ganancia menor que un sistema que controla la postulación; se trata de encontrar un
Buen balance.

El valor derivado es un poco más difícil de sintonizar debido a la interacción de los otros dos componentes. los
derivada es similar a un amortiguador que intenta limitar el sobreimpulso. Está perfectamente bien omitir la parte
derivada y simplemente usa un controlador PI Para ajustar la derivada, el balance de las porciones de PI debe ser lo más
cercano posible a la reacción requerido para la instalación. Una vez que hayas logrado esto, puedes cambiar lentamente
la ganancia en la derivada para proporcionar amortiguación extra. La Figura 7-7 muestra un PID completamente
funcional con el programa PID Tuner. En este gráfico, hay un pequeña cantidad de sobreimpulso, pero la función
derivada corrige y permite alcanzar el punto de ajuste rápidamente.

Biblioteca PID
Hay una biblioteca creada por el usuario de Arduino Playground que implementa todas las matemáticas y el control para
establecer un controlador PID en un Arduino (ver www.arduino.cc/playground/Code/PIDLibrary/). La biblioteca lo hace
simple tener múltiples controladores PID ejecutándose en un solo Arduino. Después de descargar la biblioteca,
configúrela descomprimiendo el archivo en la carpeta de bibliotecas de Arduino. Para usar un PID controlador en código
Arduino, agregue #include <PID_v1.h> antes de declarar las variables Setpoint, Input y Output. Después la biblioteca y
las variables están configuradas, necesita crear un objeto PID, lo cual se logra mediante la siguiente línea
de código:
PID myPID (& Input, & Output, & Setpoint, Kp, Ki, Kd, DIRECT);
Esto informa al nuevo objeto PID sobre las variables utilizadas para Setpoint, Input y Output, así como las ganancias
Kp, Ki y Kd. El parámetro final es la dirección: use DIRECT a menos que el sistema necesite caer a un punto de ajuste.
Después de que todo esto esté codificado, lea la entrada antes de llamar a la función myPID.Compute ().
Funciones de la biblioteca PID
A continuación se encuentra una lista de las funciones básicas importantes para la biblioteca PID:
• PID (& Input, & Output, & Setpoint, Kp, Ki, Kd, Direction): Este es el constructor
función, que toma la dirección de las variables Input, Output y Setpoint, y
ganar valores
• Compute (): Llamar a Compute () después de leer la entrada realizará las operaciones matemáticas necesarias para
producir un valor de salida
• SetOutputLimits (min, max): establece los valores que la salida no debe exceder.
SetTunings (Kp, Ki, Kd): esto se usa para cambiar las ganancias dinámicamente después de que el PID ha sido
inicializado
• SetSampleTime (milisegundos): establece la cantidad de tiempo que debe transcurrir antes de la
La función Compute () ejecutará el cálculo PID nuevamente. Si el tiempo establecido no ha pasado cuando
Se llama a Compute (), la función vuelve al código de llamada sin calcular el PID.
• SetControllerDirection (dirección): Esto establece la dirección del controlador. Use DIRECTO
para movimientos positivos, como en control de motor u hornos; use REVERSE para los sistemas
como refrigeradores.
El Listado 7-2 es una versión modificada del ejemplo básico de PID usando la biblioteca PID dada en el Arduino de la
biblioteca Página web de Playground (www.arduino.cc/playground/Code/PIDLibrary/). Las modificaciones al boceto
incluyen una salida en serie para mostrar lo que está sucediendo. Hay una pérdida en el rendimiento cuando se usa la
biblioteca en comparación con la directa implementación del Listado 7-1, y las ganancias tuvieron que ser rechazadas en
comparación mientras se usaba el mismo hardware configuración como en la Figura 7-1. La biblioteca puede manejar
fácilmente sistemas de reacción más lenta; para simular esto un condensador lager se puede usar en el circuito RC.
Listado 7-2. PID impelido con la biblioteca PID
#include <PID_v1.h>
punto de ajuste doble, entrada, salida;
flotante Kp = .09;
flotante Ki = .1;
flotante Kd = .07;
// configurar las ganancias del PID y el enlace a las variables
PID myPID (& Input, & Output, & Setpoint, Kp, Ki, Kd, DIRECT);
void setup () {
Serial.begin (9600);
// configuración variable
Entrada = analogRead (0) / 4; // calcular la entrada para que coincida con los valores de salida
Setpoint = 100;
// activa el PID
myPID.SetMode (AUTOMATIC);
// myPID.SetSampleTime (100);
}
void loop () {
// leer entrada y calcular PID
Entrada = analogRead (0) / 4;
myPID.Compute ();
analogWrite (3, Salida);
// imprimir valor al monitor serie
Serial.print (Setpoint) ;.
Serial.print(" : ");
Serial.print (Salida);
Serial.print (":");
Serial.println (Entrada);
}

Resumen
Este capítulo proporcionó la información básica para configurar un controlador PID en un Arduino y enumeró algunos
posibles aplicaciones. Hay muchas configuraciones diferentes que un PID puede cumplir, y algunas pueden ser difíciles
de lograr. Sin embargo, con algo de experimentación y exploración, puede aprender a usar controladores PID para su
ventaja.

Anda mungkin juga menyukai