Un controlador de corriente al regular el voltaje

1

Necesito una idea de qué tipo de controlador debo usar. Pero estoy pensando en un controlador PID.

Aquí está mi problema:

Tengo un circuito simple como este:

simular este circuito : esquema creado usando CircuitLab

En este circuito, la resistencia R es la variación de tiempo. Mi objetivo es tener una amplitud de corriente deseada para ser generada a través de este circuito. Mi idea es controlar la fuente de voltaje a través de un controlador PID. ¿Crees que es posible? ¿Tienes alguna otra sugerencia?

Actualización:

La característica de carga en un amplio rango de voltaje se ve así:

    
pregunta user1801381

3 respuestas

1

Tuve muy buena suerte con un circuito de 2 amplificadores operacional similar al de la Figura 10 desde aquí :

figura 10 http://www.analog.com/library /analogdialogue/archives/48-04/4804-2-FIG10.jpg

Tenía algunos resistores adicionales. La corriente se multiplexó entre los PLT de forma secuencial para medir la temperatura en diferentes puntos del sistema.

    
respondido por el MikeP
1

Ciertamente puede cerrar dicho bucle digitalmente, pero el rendimiento (el tiempo de respuesta, incluida la corrección de perturbaciones como los rápidos cambios en R), probablemente será muy inferior a tener un buen DAC y un bucle cerrado analógico.

De todos modos, si inserta deliberadamente (en forma analógica o digital) un retraso dominante que es mucho más largo que el tiempo de muestreo, puede usar reglas de ajuste de PID normales. Suponga que su frecuencia de muestreo es 1kHz y su ADC y DAC responden casi instantáneamente, entonces es posible que desee un filtro de paso bajo de corte de 10Hz en la salida.

Por otra parte, si la carga realmente se ve como una R (muy lineal), y si la frecuencia de muestreo es baja y el ADC se asienta completamente durante cada tiempo de muestra, simplemente podría calcular el R 'estimado como Vout / Imeasured y Calcule la nueva V a partir de la R estimada, quizás con un poco de acción integral. Esto no funcionará en un amplio rango si la carga es algo muy poco lineal, como un LED, y probablemente sean necesarias otras precauciones para evitar dañar dicha carga al sobrepasar.

    
respondido por el Spehro Pefhany
0

Tengo el siguiente controlador PID en C #, pero parece que no puedo encontrar la ganancia correcta para que converja. Estoy tratando de regular el voltaje para generar la amplitud de la corriente de destino. ¿Puedes ayudarme a encontrar la ganancia correcta?

class Program
{
    private double kp = 8;
    private double ki = 0;
    private double kd = 0;

    private double impedance = 2000; // Range from 200 to 200000
    private double setpoint = 3; // Target current. Range from 0 to 15    
    private double dt = 0.15; // Times elapse between iteration 150 ms = 0.15 s
    private double outputVoltage = 0;// Output voltage
    private double error = 0; // Error between measured current and target current
    private double previous_error = 0;
    private double measured_value = 0; // Measured current
    private double derivative = 0;
    private double integral = 0;
    private double previous_outputVoltage = 0;
    static void Main(string[] args)
    {
        Program p = new Program();
        p.PID();
    }
    private void PID()
    {
        while (true)
        {
            measured_value = outputVoltage / impedance; // measured current I                                             
            error = (setpoint - measured_value); // error = setpoint - I                                 
            integral = integral + error * dt; // dt = 150 ms = 0.15 s                                         
            derivative = (error - previous_error) / dt;// dt = 150 ms = 0.15 s                                              
            outputVoltage = kp * error + ki * integral + kd * derivative; // output Voltage             
            previous_error = error;//
            previous_outputVoltage = outputVoltage;
            Console.WriteLine(error);
            Thread.Sleep(150); // wait 150 ms
        }
    }
}
    
respondido por el user1801381

Lea otras preguntas en las etiquetas