请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BOOSTXL-DRV8305EVMThread 中讨论的其他器件:DRV8305、 MOTORWARE
工具/软件:
您好:
我正在尝试为 36V BLDC 电机实现 FOC。 但我无法达到稳定的速度。 因此、我尝试使用开环(无负载)来查看速度是否稳定。 但速度仍然抖动。
theta_elec += 0.000628; //Increase angle every ISR loop (10kHz)
theta_elec = fmodf(theta_elec, 2.0f * 3.14159265359f);
if (theta_elec < 0.0f) {
theta_elec += 2.0f * 3.14159265359f;
} // reset angle when it exceeds 2pi
vd = 0;
vq = 0.5; //Open loop constant voltage vectors
sin_theta = sinf(theta_elec);
cos_theta = cosf(theta_elec);
v_alpha = vd * cos_theta - vq * sin_theta;
v_beta = vd * sin_theta + vq * cos_theta;
Va = v_alpha;
Vb = -0.5f * v_alpha + 0.866f * v_beta;
Vc = -0.5f * v_alpha - 0.866f * v_beta;
Va = 0.5f + Va / 36; // Just some normalization of the voltages
Vb = 0.5f + Vb / 36;
Vc = 0.5f + Vc / 36;
Va = 1.0f - Va; // Need to invert them, because I have center aligned PWM (count up then down)
Vb = 1.0f - Vb; // So duty cycle is 0% when CMPA is TBPRD and 100% when CMPA is 0
Vc = 1.0f - Vc;
Va = fminf(fmaxf(Va, 0.0f), 1.0f); // make sure its within [0,1]
Vb = fminf(fmaxf(Vb, 0.0f), 1.0f);
Vc = fminf(fmaxf(Vc, 0.0f), 1.0f);
v_offset = (Va + Vb + Vc) / 3.0f; // Just checking that my 3-phase is balanced
EPwm1Regs.CMPA.half.CMPA = Va * EPWM1_TIMER_TBPRD; // Apply duty
EPwm2Regs.CMPA.half.CMPA = Vb * EPWM2_TIMER_TBPRD;
EPwm3Regs.CMPA.half.CMPA = Vc * EPWM3_TIMER_TBPRD;电机确实会达到稳定的速度、但会抖动。 我只是不明白什么可能会导致抖动。
对于编码器、我使用 AMT102-V、 https://www.sameskydevices.com/product/resource/amt10-v.pdf?srsltid=AfmBOopzeZD5O_iFLEs7LClAbDyvhAYRlTbcETgZ_nwnSlppNVfU2lTk
电机为: https://docs。rs-online.com/fc1a/0900766b8162b79a.pdf
我正在使用 DRV8305 评估板和具有 F28069 的 C2000 LaunchPad。
下面是一个编码器输出的示例。 脉冲序列不是常规的:


