1.位置信息
无刷电机的控制不可脱离转子的位置信息。知道转子的位置反馈是对无刷电机控制的前提。通常分为有感和无感。
有感:即为有位置传感器,像霍尔、光电增量式编码器、旋转变压器、磁编等等。
无感:则是电机不需要位置传感器,通过电机自身的信息计算或则估计转子的位置。
2.无感的方法
基于模型法的位置/转速观测器有三部分,反电动势、磁链信息观测、位置误差信号解耦位置/转速观测。反电动势或磁链信息观测方法的不同,模型有自适应法、扩展卡尔曼滤波器法、磁链观测法、状态观测法、滑膜观测法。
反电动势过零检测法应用广泛,实现简单、技术成熟。
3.反电动势过零检测
3.1反电动势过零检测法基本原理:
忽略电动机电枢反应,无刷直流电动机在稳态运行过程中,通过检测关断相的反电动势过零点获得转子的位置信号,进行对逆变器开关导通顺序切换,控制电机运动。
3.2缺点:
电机静止和低速时,反电动势很小或者为0,无法获取转子位置信号,电机低速时性能较差,启动时需要开环启动。
针对这个问题,一般采取以下措施:
1.产生一个外力,把转子拉到指定位置,通常使用两个方向上的力
2.对于一些不能随便改变转子位置的应用场景来说
3.3常见电路
正向反电动势过零点变化:
反电动势零点 | 变化趋势 |
---|---|
C- | C相反电动势又正到负 |
B+ | B相反电动势又负到正 |
A- | A相反电动势又正到负 |
C+ | C相反电动势又负到正 |
B- | B相反电动势又正到负 |
A+ | A相反电动势又负到正 |
4.代码实现
4.1获取反电动势AD值
U相
/*获得EU电压*/
float AD_GetEU()
{
uint16_t i;
uint32_t EU_AD[64];
uint32_t EU_AD_Sum;
uint32_t EU_AD_Avg;
float EU;
for(i = 0; i < 64; i++)
{
EU_AD[i] = adc_channel_sample(ADC_CHANNEL_2);
EU_AD_Sum += EU_AD[i];
}
EU_AD_Avg = EU_AD_Sum / 64;
EU_AD_Sum = 0;
EU = EU_AD_Avg * 3.3f / 4095.0f * 37; //获得电压值
return EU;
}
4.2ADC+DMA
因为数据量过多,单通道选择来获取太慢,所以配置成ADC+DMA
参考
无刷直流电机反电动势过零检测TI电机库源码王崇卫的博客-CSDN博客_无刷电机反电动势检测
TI无感无刷参考设计.PDF
TI无感无刷参考设计.rarBLDC反电动势过零无刷无感电机凌鸥方波-网络攻防代码类资源-CSDN文库