@Actualización : Han pasado algunos días desde que hice esta pregunta y tuve la oportunidad de investigar un poco en función de las respuestas que recibí de @R Drast y @Spehro. No estoy seguro de que esta actualización sea lo correcto, pero mis nuevas preguntas aún están relacionadas con el tema original y el título sigue siendo relevante.
No me había dado cuenta de que "Posición" y "Velocidad" son dos tipos de algoritmos que determinan cómo se trata la salida PID (probablemente obvio a partir de mis respuestas originales a continuación). Por extraño que parezca, pensé que el método incremental y relativo (velocidad) era, intuitivamente, el más apropiado para mi situación y, sin embargo, fue rechazado rotundamente en las respuestas anteriores. Por lo tanto, tengo algunas preguntas sobre el método de posición relacionado con mi configuración específica (medición de temperatura, gran tiempo muerto, etc.).
En primer lugar, quiero asegurarme de tener una comprensión correcta de cómo funciona realmente el método de posición. Entiendo que significa que asigna una salida PID a cada posición (válida) en el actuador. Por ejemplo, una salida PID de -3 V sería una extensión del actuador, digamos completamente retraído (es decir, ventana cerrada/ventilación mínima), mientras que 3 V sería el otro extremo (completamente extendido o ventilación máxima). Esto pondría cero en algún punto intermedio. ¿Tengo este derecho?
Si la comprensión anterior es correcta, eso significaría que usted predetermina el punto en el actuador cuando el error es cero. ¿Está bien?
Entonces, ¿cómo lidias con el siguiente escenario: es media mañana y 25 grados en el gh. El SP es de 25 grados y el actuador está completamente retraído, el error es 0 (así que esto pone la posición cero como: actuador completamente retraído, bastante). A medida que avanza el mediodía, la temperatura sube, el actuador abre la ventana y la temperatura en el gh vuelve a caer. Ahora tenemos una nueva posición del actuador de punto 0. No puede pedirle al actuador que vuelva a la posición cero original, ¡eso cerraría la ventana!
Obviamente, me equivoqué en alguna parte y no sigo lo que @R Drast y @Spehro han dicho a continuación. ¿Pueden ustedes (o cualquier otra persona) aclararme esto?
================================================== ================== Pregunta original :
Soy relativamente nuevo en electrónica y he estado trabajando en un controlador de temperatura para mi invernadero desde hace algún tiempo. El sistema comprende un controlador PID y un actuador lineal, todo orquestado por un microcontrolador, muy probablemente ATTiny 2313 (ver imágenes). El diagrama de bloques no lo captura, pero el actuador está controlado por un tope final y el LDR está ahí para cerrar todo por la noche. Mi intención original era hacer esto sin un microcontrolador, por lo que piezas como el DAC parecen un poco redundantes ahora (aunque espero guardar algunos pines en mi uC). Ese es el trasfondo, con la mayoría de los componentes individuales construidos y probados en esta etapa.
Mi pregunta es esta, ¿cómo debo interpretar la salida PID en un sistema cuya retroalimentación es lenta? Entiendo que la salida PID es un "comando" de control, por lo que cuando la salida PID es +2V dice "ajuste la salida del sistema en +2V para alcanzar el objetivo del punto de ajuste". Puedo entender esto por ejemplo, control de velocidad del motor donde la retroalimentación es rápida. Hay pocas posibilidades de que el sistema se estire demasiado debido a una respuesta lenta del sistema, ya que el motor responderá inmediatamente al comando PID y, en el siguiente instante, el comando habrá cambiado de manera adecuada.
Para que quede claro y en respuesta a un comentario de un respondedor, entiendo que el comando es "posicional", lo que tiene sentido ya que una salida PID de 0 significa que no se mueva de su posición actual, se obtuvo el punto de referencia.
Sin embargo, puedo ver (usando la configuración de mi prototipo, vea la imagen) que el comando del PID puede emitirse durante bastante tiempo debido a la respuesta lenta del sistema que conduce al actuador hasta el tope final. Una idea que tuve fue ralentizar la entrega del comando muestreando la salida PID (usando el uC) de vez en cuando y luego actuando en consecuencia. Este es un intento de hacer coincidir el comando con la respuesta del sistema, pero no estoy seguro de si es lo correcto. ¿Qué es lo mejor que se puede hacer aquí? (Disculpas por la calidad del diagrama del circuito del controlador PID. Fue difícil encajarlo todo en una imagen).
No debe usar la salida PID como un comando de velocidad en su sistema, ya que simplemente se volverá inestable y eventualmente oscilará entre un límite final y el otro, o no tendrá respuesta.
Usando un actuador lineal como lo está, debe usar la salida del PID como un comando de posición y hacer que el actuador siga la salida de esa manera. Al establecer los límites mínimo y máximo de PID, los interruptores de fin de carrera solo son medidas de seguridad si algo sale terriblemente mal.
Además, si detecta que su PID está en cualquiera de los límites (que podría tener que ser si la respuesta es muy lenta), desea inhibir el término integral mientras esté en un límite para que no sufra. de la liquidación del integrador.
Los PID funcionan bien en los controles de motor, es cierto, pero los uso industrialmente para controlar fácilmente las temperaturas en sistemas con varios minutos de retraso. El ajuste lo es todo... Recuerde lo básico, la ganancia proporcional solo lo llevará (aproximadamente) a la mitad o tres cuartos del punto de ajuste, la ganancia integral lo llevará el resto del camino. La derivada atempera el cambio.
Para los bucles de control de temperatura con un retraso prolongado, me resulta mucho más fácil aumentar el punto de ajuste lentamente hasta el punto de ajuste final en lugar de saltarlo de inmediato, lo que permite un ajuste más estricto del PID sin que entre en oscilación.
Su rango de afinación del término 'I' es demasiado bajo por un factor enorme.
Normalmente, desearía una constante de tiempo ajustable en minutos (quizás ajustable de 1 a 30 minutos), no segundos, rango para un sistema de control térmico más grande. Lo que ha mostrado allí solo funcionará para desestabilizar muy bien el ciclo de control. De todos modos, a menudo no necesita realmente el control I: un control proporcional con alta ganancia puede hacer mucho (y la ganancia puede ser mayor si el término I no está allí mordisqueando la estabilidad, incluso cuando está correctamente ajustado). Si insiste en usarlo, necesitará un capacitor de baja fuga mucho más grande, un amplificador operacional que sea mejor y una resistencia de valor mucho más alto o hacerlo digitalmente. También hay trucos que se pueden jugar con voltajes más bajos y amplificadores operacionales de muy baja fuga.
Por lo general, desea restablecer el integrador o al menos detener la integración cuando la salida se interrumpe o obtendrá una liquidación del integrador que causará un exceso e incluso inestabilidad a medida que la variable del proceso alcanza el punto de ajuste. El mejor método para eso depende del esquema que esté usando, pero podría ser un interruptor analógico o un relé de láminas.
Chu
Buck8pe