Diseño de Controladores Digitales PI por Respuesta en Frecuencia y Método de las Raíces: Implementación en Microcontrolador
Clasificado en Informática
Escrito el en
español con un tamaño de 3,73 KB
Diseño Frecuencial Asintótico
Datos de partida: GsH(s), GsH(z), ts → ns = ts/T (muestras).
- Vt = 2/T (Hz)
- GsH(w) = (a/(w+b))·(1 - w/(2/T)); Gc(w) = k·(w + Vz/w), donde Vz es el polo.
- GH(w) = GsH(w)·Gc(w)
- Wc = 4/ts (rad/s); Vc = (2/T)·tg(Wc·T/2) (rad/s)
- Calcular k mediante |GH(jVc)| = 1
- Ti = (1/Vz) - (T/2); Kp = k·Vz·Ti
Algoritmo de la rutina de interrupción
Periodicidad de la rutina de interrupción: T = _s. La rutina de interrupción deberá ejecutar:
- Declarar las variables:
int r, v_sens, r_ant = 0, cnt = 0; float rp, rp_ant = 0, I, I_ant, e, u; - Definir constantes:
#define ti = xy#define Kp = x. - Escribir la cuenta inicial del timer para garantizar que desborde en T = _s.
- Adquirir el código de sensado:
sens. - Calcular el error:
e = r - sens. - Calcular el compensador:
I = I_ant + Kp·(T/Ti)·e; u = Kp·e + I; - Limitar
ucon anti-windup:if (u < 0) u = 0; else if (u > umax) u = umax; else I_ant = I; - Transferir
ual registro PWM:Pwm_reg = int u; - Limpiar el flag de interrupción:
TMRif = 0;
Diseño Frecuencial Analítico
Datos de partida: GsH(s), GsH(z), ts, MF, T.
- Calcular GH(w) según el método anterior.
- Wc = 4/ts; Vc = (2/T)·tg(Wc·T/2)
- Calcular Vz con MF = fase de GH(w = jVc) + 180° y, a partir del ángulo, tg(ang) = Wc/Vz.
- Imponer |GH(w = jVc)| = 1 para obtener k.
- Calcular Ti y Kp mediante las fórmulas correspondientes.
¿Se necesita prefiltro?
- Con k y Vz obtenidos, resolver 1 + GH(w) = 0; el valor de |w| corresponde a Vpz.
- Si 3·Vpz > Vz, es necesario un prefiltro.
- Vz es un cero dominante y debe cancelarse con el prefiltro: Zc = (2/T + w)/(2/T - w), siendo w negativa para cancelar el cero.
- Gp(z) = (1 - Zc)/(z - Zc) = a/(z - b)
- Se obtiene rp/r = (a·z-1)/(1 - b·z-1), es decir, rp(k) = b·rp(k-1) + a·r(k-1).
Algoritmo
Tras el paso 5 anterior, se incorpora el prefiltro: rp = b·rp_ant + a·r_ant;. Del paso 8 se guardan las variables para la siguiente ejecución del control: r_ant = r; rp_ant = rp;
Diseño por el Método de las Raíces
Datos de partida: GsH(z), ts, ns, Mp.
- Mp = e-π/tgθ; ns = ts/T; ts = 4/σ; Wd = σ·tgθ
- Polos dominantes: Ps = -σ ± jWd; Pz = ePs·T = e-σ·t(cos(Wd·T) ± j·sen(Wd·T))
- Diseño del compensador PI: Gc(z) = Kc·((z - Zc)/(z - 1)); GH(z) = GsH(z)·Gc(z); se impone FASE(GH(z = Pz)) = -180°.
- Con el ángulo Φ, calcular Zc: tgΦ = Im(Pz)/Re(Pz - Zc).
- Diseñar Kc para cumplir la condición de módulo en Pz: |GH(z = Pz)| = 1 → 1 = Kc·(|Pz - Zc|/|Pz - 1|)·GsH(z), donde en GsH(z) = a/|Pz - b|.
- Calcular Kp = Kc·Zc y Ti = T/((1/Zc) - 1).
¿Se necesita prefiltro?
- VPz = (2/T)·(|Pz - 1|/|Pz + 1|); Vz = VZc = (2/T)·(|Zc - 1|/|Zc + 1|)
- Si Vz < 3·VPz, es necesario prefiltro.
- Gp(z) = (1 - Zc)/(z - Zc) = (a·z-1)/(1 - b·z-1) = rp/r
- rp(k) = b·rp(k-1) + a·r(k-1)
Diseño Frecuencial Asintótico (Versión de Implementación)
Se repite el procedimiento del diseño frecuencial asintótico, incluyendo la rutina de interrupción, sin modificaciones en el contenido técnico.
Condición de salida: u = 0; cuando corresponda.