¿Lógica detrás de un controlador PID?

0

Tengo problemas para entender la lógica detrás de un controlador PID utilizado para el control de la temperatura. Si tuviera que implementarlo con un SSR y un Arduino, por ejemplo, mi objetivo es que el valor PID sea cero, ¿es correcto? ¿Algo diferente a cero y el relé se activaría y calentaría el elemento de calefacción hasta que el error llegue a cero? ¿Es posible calcular cuánto tiempo debe activarse el relé para alcanzar la temperatura o es mejor activarlo en intervalos muy pequeños y verificar el error?

    
pregunta Lucas S.

3 respuestas

1
  

¿Algo diferente a cero y el relé se activaría y haría que el elemento de calefacción se calentara hasta que el error llegue a cero?

Esto no es control proporcional, es bang-bang o on-off .

Normalmente, desearía tener una pequeña banda de error alrededor de su temperatura objetivo para evitar un cambio excesivo de su actuador, y usaría histéresis en el control.

Por ejemplo, si su objetivo es 50 C, entonces puede encender el calentador solo si la temperatura cae por debajo de 47 C, y apagarlo solo cuando la temperatura supera los 53 C.

  

¿Es posible calcular cuánto tiempo debe activarse el relé para alcanzar la temperatura o es mejor activarlo en intervalos muy pequeños y verificar el error?

Si intentas calcular el tiempo necesario, eso no es realmente un sistema de control, es simplemente un "cálculo de cuentas". Dependiendo de qué tan bien esté controlado y caracterizado su entorno térmico, incluso podría funcionar.

Pero normalmente enciendes el calentador y continúas monitoreando la temperatura mientras lo dejas encendido, hasta que tu ley de control te indique que lo apague.

En un controlador proporcional (P), variaría la potencia del calentador según la distancia a la que se encuentre la temperatura real del objetivo. La relación exacta entre la diferencia de temperatura y la potencia del calentador es una constante de proporcionalidad que debe elegir para optimizar su diseño.

En un controlador PID también consideraría el historial de mediciones de errores pasados y la rapidez con la que el error cambia al determinar la potencia del calentador. Ahora tiene 3 constantes de proporcionalidad que puede ajustar para optimizar su sistema de control.

Como dice la respuesta de Jeroen3, si desea variar la potencia del calentador proporcionalmente usando solo un SSR para controlarlo, tendría que usar un esquema de PWM de algún tipo. Desearía tener la constante de tiempo térmico del objeto mucho más larga que el intervalo mínimo para el que se puede encender y apagar el calentador.

    
respondido por el The Photon
1
  

... mi objetivo es que el valor PID sea cero, ¿es correcto?

No del todo. Espera que el error sea cero.

  

¿Cualquier cosa diferente a cero y el relé se activaría y haría que el elemento de calentamiento se caliente hasta que el error llegue a cero?

No siempre. El controlador PID puede suprimir la salida si la salida aumenta a una velocidad que lo haría sobrepasar, incluso aunque esté por debajo del punto de ajuste en este momento.

  

¿Es posible calcular cuánto tiempo debe activarse el relé para alcanzar la temperatura o es mejor activarlo en intervalos muy pequeños y verificar el error?

En general, estará limitado por el número de ciclos de conmutación que el relé puede tolerar. Puede decidir que el cambio de una vez cada 5 a 10 s sea lo suficientemente lento para prolongar la vida útil del relé, pero lo suficientemente rápido para que la respuesta térmica de la carga no permita que la temperatura varíe demasiado.

Una vez hecho esto, aplica el control de tiempo proporcional al relé. Digamos que usted decide un ciclo de 5 s, si la salida PID es del 20%, la salida está activada durante 1 s de 5 s. Para el 60% son 3 s de 5 s, etc.

Figura3.LafunciónclásicadecontrolPID.Fuente: Wikipedia - controlador PID .

Como se explica en una de mis respuestas vinculadas a continuación, a medida que la acción integral corrige la salida, el error cae a cero, por lo que la contribución del control proporcional también cae a cero. La salida cuando el error es cero se mantiene únicamente por la acción integral.

Vea mis respuestas a las preguntas a continuación para obtener más información sobre el tema.

De los comentarios:

  

Cuando dice, por ejemplo, "si la salida PID es del 20%, la salida está activada durante 1 s de 5 s", ¿el 20% está en relación con qué? El punto de ajuste? Porque pensé que la salida era un valor numérico.

El 20% será el porcentaje de salida PID de escala completa (o máxima). Para el control de crucero en su automóvil, este máximo sería el pedal del acelerador presionado hasta el piso; para un sistema de refrigeración estaría la válvula de refrigeración completamente abierta; para el control de la dirección de un barco sería 100% timón; para su calentador es 100% de salida.

La salida de su PID será un número entre 0 y un máximo. Si está trabajando con un micro de 8 bits, entonces puede ser de 0 a 255 (2 8 -1), mientras que para un micro de 16 bits puede ser 2 16 -1 = 65535. Mientras tanto, para un micro con capacidad de punto flotante, puede configurarlo de 0 a 1.0.

El valor de las salidas PID se debe convertir a un porcentaje de su ciclo de trabajo del calentador, 5 s en nuestro ejemplo. Esta parte es simplemente matemática.

    
respondido por el Transistor
0

Un controlador PID con un actuador de encendido / apagado aún puede proporcionar más que solo el control de encendido / apagado.
Ver la salida del bucle PID como ciclo de trabajo. Por lo tanto, 0.0 a 1.0 significa 0 a 100% del ciclo de trabajo del relé dentro de un período de tiempo configurable.

Por ejemplo, una salida de 0.5 podría significar que el relé debe activar el 50% de un período de 60 segundos, 30 segundos encendido, 30 segundos apagado.

Como Felthry advierte correctamente, es posible que el período no sea demasiado corto. Por ejemplo, si está controlando un calentador de 10 kW, no debe usar un período de 1 segundo. Será la muerte de cualquier relé mecánico en unas pocas horas, y causará estragos en su red eléctrica. Pero tampoco debe hacerlo demasiado largo, de lo contrario la función no sirve para nada.

Esto significa que debe considerar el tiempo mínimo de encendido / apagado de la salida bit .

    
respondido por el Jeroen3

Lea otras preguntas en las etiquetas