Explicación práctica del principio y el código del bucle de enganche de fase monofásico

El principio del programa de bucle de enganche de fase monofásico se muestra en la siguiente figura

inserte la descripción de la imagen aquí

Principio del bucle de enganche de fase monofásico

Un bucle de bloqueo de fase (PLL) es un circuito o algoritmo digital comúnmente utilizado en los campos de sincronización, demodulación y procesamiento de señales.Su función principal es hacer coincidir con precisión la fase y la frecuencia de una señal de entrada con una señal de referencia. Aquí explicamos brevemente el principio y el análisis del bucle de enganche de fase monofásico.

En un bucle de bloqueo de fase monofásico, la señal de entrada es un voltaje de CA monofásico y el objetivo del bucle de bloqueo de fase es generar un ángulo de fase que siempre esté sincronizado con la señal de entrada. El principio de funcionamiento de todo el bucle de bloqueo de fase se puede simplificar en tres bloques principales: detector de fase, filtro de paso bajo y controlador.

El detector de fase (detector de fase) es el primer bloque en el bucle de bloqueo de fase. Su función principal es comparar la diferencia de fase entre la señal de entrada y la señal de referencia, y convertir la diferencia de fase en una señal de voltaje. En el bucle bloqueado de fase monofásica, podemos usar un detector de fase de doble frecuencia (multiplicador de frecuencia PLL) donde la señal de entrada y la señal de referencia se igualan multiplicándolas por el multiplicador de frecuencia para que sea más fácil calcular la diferencia de fase.

La función del filtro de paso bajo es eliminar los componentes de ruido de alta frecuencia en la señal de diferencia de fase para suavizar la salida del bucle de enganche de fase. En un lazo de enganche de fase monofásico, generalmente se usa un filtro de paso bajo RC simple para implementar esta función.

El controlador es el último módulo en el bucle de enganche de fase. Su función principal es ajustar la fase de la señal de salida de acuerdo con la señal de diferencia de fase. En un lazo de enganche de fase monofásico, podemos usar un controlador PID para lograr esta función, que ajusta la fase de la señal de salida de acuerdo con la magnitud y la tasa de cambio de la diferencia de fase para sincronizarla con la señal de entrada.

En términos generales, el principio de un bucle de bloqueo de fase monofásico es relativamente simple, pero solo puede lograr la coincidencia de fase entre la señal de entrada y la señal de referencia, y no puede bloquear completamente la frecuencia de la señal. Por lo tanto, en aplicaciones prácticas, necesitamos usar una estructura de bucle de bloqueo de fase más compleja para lograr un bloqueo de señal de mayor precisión.

Código fuente del programa de bucle de bloqueo de fase monofásico

El siguiente es un programa simple de bucle de enganche de fase monofásico, implementado usando funciones, el voltaje de entrada Ui, el ángulo de fase de salida Sita y la frecuencia de muestreo es de 20 kHz.


#include <stdio.h>
#include <math.h>

// Constants
const float sampling_freq = 20000.0;  // Sampling frequency in Hz
const float omega_grid = 2 * M_PI * 50.0;  // Grid frequency in rad/s (50Hz)
const float kp_pll = 10.0;  // Proportional gain for PLL
const float ki_pll = 100.0; // Integral gain for PLL
const float ts = 1.0 / sampling_freq; // Sampling time

// Variables
float v_in;  // Input voltage
float theta_pll = 0.0;  // Phase angle of PLL
float sin_pll = 0.0;  // Sine component of PLL output
float cos_pll = 1.0;  // Cosine component of PLL output

// Functions
void calculate_pll(void);

int main()
{
    
    
    while (1)
    {
    
    
        // Read input voltage from sensor
        v_in = read_voltage_S();

        // Calculate PLL angle
        calculate_pll();

        // Output result
        printf("PLL angle: %.2f\n", theta_pll);
    }
    return 0;
}

void calculate_pll(void)
{
    
    
    float v_d, v_q, theta_err;
    v_d = v_in;
    v_q = 0.0;
    theta_err = omega_grid * ts;
    theta_pll += kp_pll * theta_err + ki_pll * theta_err * ts;
    sin_pll = sin(theta_pll);
    cos_pll = cos(theta_pll);
}

El resultado de la salida de simulación del bloqueo de fase: la posición de bloqueo de fase es una posición de ángulo de 90 grados
inserte la descripción de la imagen aquí

En el programa anterior:

read_voltage_S() se usa para leer el voltaje de entrada, que se puede modificar de acuerdo con su situación real.
La función de cálculo_pll recibe el voltaje de entrada y emite el ángulo de fase de acuerdo con la frecuencia de la red y los parámetros PID.
Cabe señalar que dado que el PLL monofásico no tiene entradas de voltaje trifásico, solo se necesita un voltaje de entrada para el cálculo.

En la función principal, llamamos repetidamente a la función anterior para simular un PLL monofásico. Damos salida al ángulo de fase actual para que podamos visualizar el resultado del bloqueo de fase utilizando herramientas de depuración.

En aplicaciones prácticas, también es necesario procesar el ángulo de salida, como filtrado de paso bajo o cálculo promedio, para obtener resultados más confiables.

El programa de bucle de bloqueo de fase mejorado se muestra en la siguiente figura

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/AQRSXIAO/article/details/131978365
Recomendado
Clasificación