He estado estudiando e intentando implementar un controlador de realimentación PI para un BLDC.
Ahora mismo, solo para probar en unidad el código del controlador PI, conduzco dos fases con una señal PWM en un inversor MOSFET y trato de obtener una corriente prescrita observando el voltaje que se desarrolla en una resistencia sensorial.
Aquí está lo que tengo la arquitectura:
1) Un PWM tiene un valor de registro y comienza a emitir pulsos
2) Los devanados aumentan con el flujo de corriente
3) Se desarrolla un voltaje a través de una resistencia de detección 0.015R
4) Ese voltaje se aumenta 5 veces a través de un OpAmp
5) Ese voltaje se alimenta a y ADC que muestrea en el centro exacto de cada pulso.
6) Las lecturas de ADC se recopilan y promedian tan rápido como ocurren los pulsos por un periodo de 20ms
7) El controlador PID que he incluido toma medidas y ahí es donde me quedo atascado.
Enúltimainstancia,loquerealmentequieroesunvalorparamantenerloenelregistrodetiempoPWM...Quierounvalorde16bits.Pero,loqueestoyrecibiendosonvaloresdeADCde12bits.
Entonces,medijeamímismo,"no hay problema ... no estoy recibiendo lecturas actuales, pero sé cuáles son esos valores realmente, ¡así que simplemente los convertiré a actuales"!
Entonces, hice esto:
$$ I_m = \ dfrac {ADC} {R_ {sense} * 5 * \ dfrac {4096} {3.3}} $$
Entonces, eso está bien. Luego paso por el control PI, donde hacemos:
$$ I_ {err} = I_ {set point} - I_m $$
Luego, haga lo que hace en un controlador PI ... Agregue ganancias integrales a sus valores pasados, incremente las ganancias proporcionales en un escalar y luego súmelas:
$$ I_ {feedback} = P * I_ {err} + I * \ int {I_ {err}} {dt} $$
Esta es la parte en la que mi amigo y yo nos miramos y no sabíamos qué decir ... Aquí tenemos comentarios actuales en nuestras manos, medidos en Amps (y un valor bastante grande, podría agregar, gracias a las grandes ganancias que he leído que a los controladores de PI les gusta ver) ... Pero, lo que necesito hacer es poner esto en un registro de contra-comparación de PWM ... Eso es un contador de 16 bits, no un ... registro actual, sea lo que sea!
Considere este caso ... Pido 100mA y observo 200mA ... Calculo mi error de -100mA, así que necesito enfriar esto ... Intuitivamente, sé que la respuesta aquí es reducir el Ciclo de trabajo de PWM desde lo que sea ahora, hasta un valor menor.
Si paso por todo el algoritmo, debido al error negativo, ese signo menos va a propagar todo mi camino hacia mi $$ I_ {feedback} $$ ... Por lo tanto, les dejo un comentario. valor negativo. ¿Qué puedo hacer con esto? ¿Cómo debo aplicar eso a un registro PWM, que es el control output real?