Tengo una situación específica en la que estoy tratando de rodear mi cabeza, pero creo que debería tener un formalismo general para abordar el problema.
He diseñado un controlador BiQuad para un conversor Buck y estoy tratando de implementar este controlador mediante una rutina de uC. El diseño del BiQuad se realiza en el dominio S y la conversión de este controlador a la forma discreta es un procedimiento bien conocido y no existe ningún misterio.
Mi preocupación es sobre la forma de la señal de error. La señal de error es una diferencia simple entre 2 señales analógicas (V_reference - V_out). Estoy usando el convertidor ADC para muestrear V_Out que lo asigna a un valor entero en el rango [0 - 65536] que corresponde a (0 - > Vcc) [vcc aquí está relacionado con el convertidor ADC].
ahora los coeficientes de punto flotante de mi controlador BiQuad discreto deben ajustarse para adaptarse al hecho de que la señal de error que estoy alimentando no es un valor real sino un valor mapeado de enteros, ¿no?
aunque puedo convertir la lectura del ADC en una representación real de punto flotante de la señal de error, pero prefiero hacer el cálculo con un valor entero para que el código del controlador se ejecute más rápido.
asumamos esto simple:
PWM_Duty = a0 * error + a1 * previous_error + b0 * previous_PWM_Duty.
error, previous_error : valor entero de 32 bits asignado desde el valor de punto flotante por el convertidor ADC.
a0, a1, b0: coeficientes de punto flotante obtenidos por el diseño del controlador.
PWM_Duty, previous_PWM_Duty: la señal de control que cambia el ciclo de trabajo del PWM, es un valor entero entre 0 y 100.
mi pregunta es cómo convertir b0, a1, a2 para hacer que la ecuación de control haga el control correcto en el mundo analógico.
con suerte estoy haciendo la pregunta correcta aquí. Me encantaría alguna referencia o libros que hablen sobre los controladores de codificación y aborden este tipo de problema.
perdón por el largo post :)