求助,无刷直流电机波形异常问题
我用的电机是6对极,额定转速为6200转。程序是用AD采集过零点,采回来之后滤波,计算,捕捉到过零点马上换向,相当于提前换向了。
为什么在低速时波形都不对称的?在差不多到额定转速时反电动势才正常。而且电机运行没力,一捏就停了。 我的滤波函数,每次PWM采集一次AD值
unsigned char filter_table={0,1,1,2,1,2,2,3};
tableA = ADRES00;//将AD值存到TABLE中
tableB = ADRES01;
tableC = ADRES02;
tableM = ADRES03;
V_Cnt++;
Tab_Cnt++;
if(Tab_Cnt>=5){
Tab_Cnt = 0;
}
if(V_Cnt>=5)
{
Voltage_A = (tableA+tableA+tableA+tableA+tableA)/5;//取平均值
Voltage_B = (tableB+tableB+tableB+tableB+tableB)/5;
Voltage_C = (tableC+tableC+tableC+tableC+tableC)/5;
Voltage_M = (tableM+tableM+tableM+tableM+tableM)/5;
if(Voltage_A>=Voltage_M ){//如果大于中点则某位为1否则为0
filter_phase_A = (filter_phase_A<<1)|0x01;
}else{
filter_phase_A = (filter_phase_A<<1);
}
if(Voltage_B>=Voltage_M ){
filter_phase_B = (filter_phase_B<<1)|0x01;
}else{
filter_phase_B = (filter_phase_B<<1);
}
if(Voltage_C>=Voltage_M ){
filter_phase_C = (filter_phase_C<<1)|0x01;
}else{
filter_phase_C = (filter_phase_C<<1);
}
//判断过零否
//由滤波数filter_phase_A的高三位的1/0的个数与第三位1/0的个数比较得出
filter_cnt++;
if(filter_cnt>=6){
tmp_filter = filter_phase_A;
num_low = filter_table;
num_high = filter_table[(tmp_filter>>3)&0x07];
if((num_high<=1)&&(num_low>=2)){//A相上升过零点
if(control_flags.dir==CW){//正反转标志
tmp_sector = 0;
}else{
tmp_sector = 1;
}
}else if((num_high>=2)&&(num_low<=1)){//A相下降过零点
if(control_flags.dir==CW){
tmp_sector = 3;
}else{
tmp_sector = 4;
}
}
tmp_filter = filter_phase_B;
num_low = filter_table;
num_high = filter_table[(tmp_filter>>3)&0x07];
if((num_high<=1)&&(num_low>=2)){//B相上升过零点
if(control_flags.dir==CW){
tmp_sector = 2;
}else{
tmp_sector = 3;
}
}else if((num_high>=2)&&(num_low<=1)){//B相下降过零点
if(control_flags.dir==CW){
tmp_sector = 5;
}else{
tmp_sector = 0;
}
}
tmp_filter = filter_phase_C;
num_low = filter_table;
num_high = filter_table[(tmp_filter>>3)&0x07];
if((num_high<=1)&&(num_low>=2)){//C相上升过零点
if(control_flags.dir==CW){
tmp_sector = 4;
}else{
tmp_sector = 5;
}
}else if((num_high>=2)&&(num_low<=1)){//C相下降过零点
if(control_flags.dir==CW){
tmp_sector = 1;
}else{
tmp_sector = 2;
}
}
}
} 自己顶下{:sad:} 坐等大神{:sad:} 低速时 如果电机不好,波形这样也可以理解。
但是听你的描述,你忘了一个问题,
假设在某个过零点,因为某个干扰,导致你很长一段时间没有监测到过零事件(相对电周期)。这个时候你没有采取强制换相,那么在过零点后的一段时间内,你的电机是在产生阻力。这就是你电机没力的原因。也是一捏就停的原因。
过零事件必须要求在某段相对时间内出现。否则就必须采取措施。 lixin91985 发表于 2014-3-28 21:31
低速时 如果电机不好,波形这样也可以理解。
但是听你的描述,你忘了一个问题,
假设 一切都正常的情况下, 直接换向就是超前30度 , 转矩肯定没有延时30度换向那么大 , 但不会导致电机没力的情况出现 , 是么 lixin91985 发表于 2014-3-28 21:31
低速时 如果电机不好,波形这样也可以理解。
但是听你的描述,你忘了一个问题,
谢谢你的回答。 实验去{:smile:} AXB 发表于 2014-3-28 21:44
假设 一切都正常的情况下, 直接换向就是超前30度 , 转矩肯定没有延时30度换向那么大 , 但不会导致电机 ...
多米若骨牌效应啊 。 说下这次做无刷的总结:
1、波形不对称是因为没有延时30°换相。
2、高速时捏停是因为捏的过程中造成消磁时间加大,等待消磁时间不足,造成吧消磁事件检测成过零事件了。
3、换相过后等待一段时间再去检测过零点是为了避免消磁的影响,这一段时间究竟取多久为合适呢,建议是30°时间的0.6倍。
4、对比于之前用hall传感器所做的无刷电机,虽然启动较慢,但运行效果差别不大。
5、一些资料所说的快速启动法,还没有尝试。 楼主的波形有很多不正常的高电平尖峰毛刺 最后解决了吗?
页:
[1]