stm32F407 实现有感BLDC 六步换相 cubemx配置及源代码(一)
六步换相是驱动BLDC最简单的方式,对于带霍尔的有感BLDC来说,六步换相就是在霍尔信号每次变化时,stm32芯片控制三相桥臂进行切换导通。
如果想了解六步换相的基本原理,可以看几篇关于六步换相的文章,本文不再多余赘述。既然是采用stm32芯片来实现六步换相,那么最简单的程序编写方式就是:
1.将六步换相代码放在霍尔中断中执行,根据当前霍尔中断中捕获到的霍尔状态,进行六步换相函数调用即可。
2.在写程序前,需要明确两个问题,第一个是开发者所用BLDC的霍尔真值与电机旋转方向对应关系。我手上的BLDC电机 在电机正转时,霍尔状态是 5-4-6-2-3-1 。电机反转时,霍尔状态是5-1-3-2-6-4 弄清楚对应关系,方便进行程序调试。第二个是所用BLDC的换相逻辑,这个需要看BLDC厂家的资料,不是所有的BLDC霍尔状态对应的相导通顺序都是一样的。
主要程序架构已经了解,下一步就是对相关的底层进行配置,首先将配置的时钟贴出来,方便大家计算定时器的频率,本文设置定时器的PWM频率为1KHz。
然后配置霍尔相关:
这里我选择TIM4作为霍尔接口,配置为异或/霍尔传感器模式,TIM4的预分频与周期重载值与电机速度有关,电机速度越小,说明两个霍尔信号之间隔的时间越长,这时候就需要较大的一个周期重载值,不然太小了会溢出。
同时不要忘记把TIM4的中断开启,这个是关键的霍尔中断。
对于发波定时器的配置如下所示:
配置完毕,具体代码放到第二篇