找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5160|回复: 2
收起左侧

使用STM32高级定时器驱动无刷电机

[复制链接]
ID:516874 发表于 2019-12-13 14:29 | 显示全部楼层 |阅读模式
三相永磁同步无刷电机驱动电路形式有几种,其中比较高效的是上三下三六路输出形式。
下图为其中一种一相的驱动电,其它二路与之相同。其中CH1为高电平导通,CH1N为低电平导通,这样做是为了避免单片机在复位时,驱动引脚同时为相同电平,导致上下管同时导通,导致损坏开关管。
3.PNG
关于三相六路驱动无刷电机的时序,可以自行百度,本文只讨论如何用STM32的高级定时器产生控制时序。
1.设定定时器的输出引脚,用STM32CubeMX。用这个软件可以不关注芯片型号,可移植性很强。配置如下图.
001.PNG
002.PNG
在引脚配置图中设定输出引脚后,首先要设定引脚的GPIO状态。需设定为全部输出管为截止状态,这样就保证驱动开关管在上电复位至配置好GPIO期都不会导通。接下来要配置PWM输出,这是驱动时序的重点。Stm32的高级定时器功能很多,使用起来比一般的定时器配置要复杂。用作产生控制无刷电机的六步换相时序,需要用到其中的三个模块:时基产生模块,PWM信号生成模块和三路互补输出模块。时基产生模块与PWM模块与其它单机的定时器区别不大,也很容易设置。三路互补输出比较复杂,这里依照我的理解写出来供参考。先看下输出电路框图输出电路控制位有好几位,只有使用好它们的组合控制功能,才能输出想要的时序。
004.png
1.DBTR->MOE 主输出使能位。当为0时,定时器断开。引脚状态为GPIO设定的状态。
设为1时,输出才会接入输出引脚。这时的引脚输出状态由比较器的输出模式,CCER相应位的值,以及OSSI位的值决定。还有一种情况是,DBTR->OSSR为1时,PWM信号已经输出(电机已经启动),这时MOE由1变0(等同输入刹车信号),这时先输出一个死区时间,在死区时间的电平为GPIO配置,然后各输出引脚电平等同CR2的OSIx,OSIxN位的设置。
2.在MOE=1时,pwm输出连至输出引脚,CCRM1和CCRM2中的OCMx[2:0]设定四种输出模式(强制高,强制低,PWM模式1,PWM模式2),CCER中的CCxP,CCxNP设定每一相中上下开关管的驱动输出极性。CCxE,CCxNE为输出允许位,设1接到定时器输出,设0为GPIO设定的状态。如果DBTR->OSSI位为1时,当CCxE,CCxNE为0时,引脚输出为“低电平”经过CCxP,CCxNP相位选择后的电平。OSSI在一般情况下设为0。例如:需要在A相的上开关管输出PWM,C相的下开关管导通,各输出寄存器配置:
CCMR1=0x0060,CCMR2=0x0040,CCER=0X0401.接着MOE位置1。

3.三相同时换相,使能换相预装载位(设定CR2->CCPC位为1),然后预先设定好下相的输出信号。在要换相时,设EGR->COMG位为1,三相导通状态可按预先设定的同时转换。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:532513 发表于 2019-12-13 15:21 | 显示全部楼层
我也在学习stm32,很有用
回复

使用道具 举报

ID:445750 发表于 2021-10-15 13:19 | 显示全部楼层
正在学STM32 驱动 无刷,很不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表