PWM sinusoidal que ejecuta el motor BLDC en lazo abierto

0

He empezado a trabajar en la estabilización de un cardán de un solo eje con un Arduino y un motor sin sensor BLDC.

He leído muchos ejemplos sobre este tema, pero tengo una pregunta sobre el uso del PWM sinusoidal aplicado al puente del inversor que impulsa el motor BLDC.

Por ejemplo, considere la generación de PWM sinusoidal de la siguiente manera

sineSize = 1024;
sineScale = 32767;

int sinTable[1024];

for (int i = 0; i < sineSize ; i++)
{
    float x = i * (2*pi)/1024;
    sinTable[i] =  round(sin(x) * 32767);
}

Estoy usando un controlador P simple (y ficticio) que obtiene la orientación del eje (ángulo de balanceo) del motor desde una IMU de la siguiente manera

setpoint = 0; // degrees

float error = setpoint + rollAngle;

Pout = Kp * error;

Y estoy calculando los valores que deberían aplicarse a las entradas PWM de mi puente inversor (L6234 desde ST) para estabilizar el motor al punto de ajuste cuando el eje se mueve

// 180  : Maximum value which the IMU returns (+/- 180 angles)
// 1024 : Dimension of the sin(.) array
// 255  : Maximum value accepted from Arduino analogWrite(.,.)

int offset= round(Pout / 180 * 1024);

int pwm[3];

// Forcing offset into array range
offset = offset % 1024;

if (offset < 0)
    offset = 1024 + offset;

uint16_t pwr= 5 * power;

index = offset % 1024;

// Evaluating PWM value based on the sin(.) look up table values
pwm[0] = (sinTable[index]*pwr + (32767/2))/32767 + (255/2);

index = (offset + (1024/3)) % 1024;

// Evaluating PWM value based on the sin(.) look up table values
pwm[1] = (sinTable[index]*pwr + (32767/2))/32767 + (255/2);

index = (offset + ((2 * 1024) / 3)) % 1024;

// Evaluating PWM value based on the sin(.) look up table values
pwm[2] = (sinTable[index]*pwr + (32767/2))/32767 + (255/2);

Todos los PWM se aplican a los pines de entrada de mi puente inversor para girarlo.

Hay un punto que realmente no entiendo, cuando pwr es alto, el motor BLDC toma corrientes como 0.8 A a 12 V. El motor BLDC utilizado se puede encontrar aquí (http: // www.dys.hk/ProductShow.asp?ID=109), pero no hay una hoja de datos detallada.

(sinTable[index]*pwr + (32767/2))/32767 + (255/2)
  1. ¿Qué significa sinTable [index] * pwr en términos de poder?
  2. ¿Podría explicar la relación entre la salida del controlador y el índice utilizado en la matriz sin (.)? (Me refiero a cuál es la relación lógica entre el Pout y el índice usado para elegir el valor discreto de la PWM en el vector sintable).

El código se basa en un proyecto que se puede encontrar en GitHub, a saber, EvvGC

pregunta starScream

1 respuesta

0
  

¿Qué significa sinTable [index] * pwr, en términos de poder?

Las formas de onda de voltaje del motor de CA se crean a partir de CC utilizando PWM. pwr escala los valores de la tabla sinusoidal de modo que a plena potencia la relación PWM varía de 0% a 100%, lo que crea una onda sinusoidal que va de 0V a 12V (cuando se usa una fuente de alimentación de 12V). Si se reduce el valor de pwr , se reduce la amplitud de la onda sinusoidal, por lo que el motor obtiene menos voltaje de CA y consume una corriente proporcionalmente menos.

  

¿cuál es la relación lógica entre Pout y el índice utilizado para   elegir el valor discreto de la PWM en el vector sintable.

No hay relación entre el índice y la potencia de salida. El propósito de index es simplemente crear una onda sinusoidal variable de tiempo de amplitud nominal (-1 a +1) que luego se desplaza y se escala para producir un rango de relaciones PWM que varía de 0-100% a plena potencia.

  

Hay un punto que realmente no entiendo, cuando pwr es alto el BLDC   El motor toma corrientes como 0.8 A a 12 V.

Esto es de esperar. Su motor tiene una resistencia interna de 5.5 & ohm; por fase (11 & ohm; entre dos terminales cualquiera). A 12 V, la tensión aplicada por fase es de 12 V pico a pico, lo que equivale a 4,24 V rms . Corriente = voltaje / resistencia, por lo que la corriente rms por fase es 4.24V / 5.5 & ohm; = 0.77A, y potencia = voltaje x corriente, por lo que cada fase consume 4.24 V * 0.77A = 3.26W.

Dado que las 3 fases se alimentan de manera similar, el consumo total de energía es 3.26W * 3 = 9.78W. Corriente = alimentación / voltaje, por lo que el consumo de corriente DC esperado de la fuente de alimentación es 9.78W / 12VDC = 0.815A.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas