根据《大话BLDC驱动:为什么可以根据HALL信号换相?》文中内容,我们知道HALL信号实时反应了电机转子的位置,所以,针对有感BLDC,我们当然可以根据HALL信号进行换相。那么,问题来了,根据HALL信号换相的方法及其步骤是什么?
有什么细节?有什么要注意?本文就来梳理一下。
1. 有感BLDC 8线接口定义
3线驱动接口:U_V_W
5线HALL接口:3线霍尔接口:Ha_Hb_Hc,2线电源接口:5v(3.3v)_GND
2. 根据HALL信号换相的方法与步骤
步骤1,
固定电机3线HALL信号线和电机3线UVW信号线的线序。电机3线HALL信号线以任意顺序连接到驱动板的HALL接口;电机3线UVW信号线也以任意顺序连接到驱动板的UVW接口。一旦连接后,就不要再改变。即,驱动板HALL接口上的HALL信号线序和驱动板UVW接口上的UVW信号线序,存在一一对应关系。比如:HaHbHc与UVW对应,HaHbHc与WUV对应,HaHcHb与WUV对应,HaHcHb与VWU对应等等。
步骤2,
分别确定正转和反转的HALL信号的输出值及其顺序。根据《大话BLDC驱动:为什么可以根据HALL信号换相?》文中内容,一方面,可知HALL信号实时反应了电机转子的位置;另一方面,可知在60°HALL中,HALL信号的输出值为:6_4_7_3_1_0;在120°HALL中,HALL信号的输出值为:5_4_6_2_3_1。即,这一串数字分别代表了电机转子的位置。本文后续仅以120°HALL为例做说明。
因此,120°HALL在正转或者反转时,HALL信号的输出值的顺序是:5_4_6_2_3_1…或者4_5_1_3_2_6_4…
如何确定正转和反转时,HALL信号的输出值?确定方法:首先将HALL接口的2线电源接口供电,然后用手或者其他工具分别正转或者反转电机,在示波器端观察3线霍尔接口的输出并记录下数字(当然只会读到5_4_6_2_3_1_5…或者4_5_1_3_2_6_4…)。
步骤3,
确定逆变电路的导通顺序。根据《大话BLDC驱动-如何确定六步换相法两两导通的顺序?》文中的内容,可知在六步换相法中,逆变电路两两导通顺序只能是:AC_AB_CB_CA_BA_BC__AC…或者 CB_AB_AC_BC_BA_CA_CB……。为了方便沟通,我们将AC_AB_CB_CA_BA_BC分别编号为1_2_3_4_5_6。在六步换相法中,我们又称这一串编号为电机转子的相位phase,比如相位phase1,相位phase2,相位phase3…。即,phase1导通AC,phase2导通AB,phase3导通CB,phase4导通CA,phase5导通BA,phase6导通BC。那么据此编写源码1如下:
/*-----www.zhugedz.com------*/
switch(phase)
{
case 1:
PWM_ON_AC;
break;
case 2:
PWM_ON_AB;
break;
case 3:
PWM_ON_CB;
break;
case 4:
PWM_ON_CA;
break;
case 5:
PWM_ON_BA;
break;
case 6:
PWM_ON_BC;
break;
default:
PWM_OFF;
break;
}
步骤4,
分别确定HALL值(5_4_6_2_3_1和4_5_1_3_2_6)与相位值(1_2_3_4_5_6)的对应关系。即,要解决读取到HALL某个值时,导通相位几的问题。
那么怎么确定HALL值和相位值的对应关系呢?
方法1:电机厂家会给出hall表的驱动图
方法2:排除法。
首先固定HALL值的顺序(5_4_6_2_3_1),然后分别用相位值(phase1_phase2_phase3_phase4_phase5_phase6)、(phase2_3_4_5_6_1)、(phase3_4_5_6_1_2)、(phase4_5_6_1_2_3)、(phase5_6_1_2_3_4)、( phase6_1_2_3_4_5)分别做测试。编写测试源码2如下:
/*-----www.zhugedz.com------*/
switch(HALL)
{
case 5:
phase = 1;
break;
case 4:
phase = 2;
break;
case 6:
phase = 3;
break;
case 2:
phase = 4;
break;
case 3:
phase = 5;
break;
case 1:
phase = 6;
break;
default:
phase = 0;
break;
}
以上测试结果会有两种。第一种,6次中有1次是正确的(通过观察电机运行状态,或者观察端电压和相电流的关系);
第二种,6次都错误。那么分别改用相位值(phase3_phase2_phase1_phase6_phase5_phase4)、( phase2_1_6_5_4_3)、( phase1_6_5_4_3_1),(phase6_5_4_3_2_1)、(phase5_4_3_2_1_6)、(phase4_3_2_1_6_5)、再测试一遍,一定可以找到一组正确的相位值。记录下HALL值对应的相位值,比如,HALL值(4_6_2_3_1_5)对应相位值(phase3_4_5_6_1_2)。
然后,再固定HALL值的顺序(4_5_1_3_2_6),按上面的方法再进行测试。比如,测试结果为HALL值(4_5_1_3_2_6)对应相位值(pashe6_5_4_3_2_1)。这样便找到了HALL值和相位值分别在正反转情况下的对应关系。测试完毕后,编写源码3如下:
/*-----www.zhugedz.com------*/
if(dir == CCW)
{
switch(HALL)
{
case 4:
phase = 3;
break;
case 6:
phase = 4;
break;
case 2:
phase = 5;
break;
case 3:
phase = 6;
break;
case 1:
phase = 1;
break;
case 5:
phase = 2;
break;
default:
phase = 0;
break;
}
}
else
{
switch(HALL)
{
case 4:
phase = 6;
break;
case 5:
phase = 5;
break;
case 1:
phase = 4;
break;
case 3:
phase = 3;
break;
case 2:
phase = 2;
break;
case 6:
phase = 1;
break;
default:
phase = 0;
break;
}
}
可见,源码3和源码1便将HALL值和相位值一一对应起来了,并实现了正确的逆变电路的开关控制。此刻,如给适当大小PWM的占空比,你的电机就转起来了。
方法3:观察法。
使用工具带动电机分别做正反转动,在示波器端观察HALL值和UVW端电压的相位关系。会很容得到HALL值和相位值的对应关系。