|
|
发表于 2026-8-9 11:35:32
|
显示全部楼层
B_Timer2_OverFlow = 0;
PhaseTime = 18000; //换相时间最大8ms, 2212电机12V空转最高速130us切换一相(200RPS 12000RPM), 480mA
} else {
PhaseTime = (((u16)T2H << 8) + T2L); //单位为1us
if (PhaseTime >= 8000) PhaseTime = 8000; //换相时间最大8ms, 2212电机12V空转最高速130us切换一相(200RPS 12000RPM), 480mA
}
T2H = 0;
T2L = 0;
AUXR |= 0x10; //开定时器
commutation_time[TimeIndex] = PhaseTime; //保存一次换相时间
if (++TimeIndex >= 4) TimeIndex = 0; //累加8次
for (PhaseTime = 0, i = 0; i <= 3; i++) PhaseTime += commutation_time; //求换相时间累加和
PhaseTime = PhaseTime >> 3; //换相时间的平均值的一半, 即30度电角度
if ((PhaseTime >= 30) && (PhaseTime <= 15000)) TimeOut = 2; //堵转超时
else PhaseTime = 30;
我用kv值5800的电机测试,理论11.1V应该能上6W转,实际上我把占空比加到90也只有1万6左右的转速。不知道是哪里限制了最高转速。 |
|