本帖最后由 张一工 于 2020-8-13 21:47 编辑

【APM32F103VB 开发板】PWM输出驱动直流电机

1 应用STM32CubeMX构建程序框架
由于APM32系列MCU与STM32系列MCU的高度兼容性,在以前试验成功的基础上,仍然应用“STM32CubeMX”生成程序框架。
ST公司的系列MCU,充分考虑了电机驱动的需求,在片上设置了面向电机驱动控制的功能完善的PWM输出接口。APM32F103VB 开发板因其采用的MCU与STM32F系列高度兼容,用来驱动有刷直流电机应该非常容易。
运行STM32CubeMX,另存已经做过的Project(点灯和键处理),然后在其上做修改(免去了选择芯片等操作)。
进入管脚配置界面:
Fig1.png
选择PE8-PE11管脚,这几个管脚可以配置为TIM1的通道输出,而TIM1是所谓的“高级控制计时器”(Advanced-Control Timer),可以实现完善的用于驱动电机的PWM信号(多种PWM输出类型、可编程的死区时间(Dead-Time)插入等等)。将这几个管脚配置成关联TIM1的输出对(CHx和CHxN)。
进入片上外设配置界面:
Fig2.png
配置通道、Current Period(自动重装载周期,决定PWM载波频率)、Pulse(脉冲(宽度),决定PWM的占空比)等。
然后生成代码,代码生成后,选择进入调试环境。

2 调试
选择在某宝上淘到的电机驱动模块DRV8833,置于MCU和直流电机之间作为驱动。连接小电机:
Fig3.jpg
在生成的程序框架上还要加上启动PWM的命令:
Fig4.png
在修改程序的过程中,发现STM32FCubeMX生成的程序框架中居然没有定义CHxN通道(也可能是我没找到?),查资料小费周折后,电机终于转了。为了电机的旋转效果明显,我在电机的轴上放了个硬纸片。电机带减速器,所以纸片转得不太快。
test.gif



3 体会
由于APM32F1xx系列的MCU与STM32F1xx系列高度兼容性,充分利用ST公司提供的工具和资源以及前人在STM系列MCU平台上所做的工作,是开发项目的事半功倍之路。事实上,ST公司推出了面向多种应用的解决方案,比如功能强大的电机驱动开发工具和库。本试验仅仅是验证了一下APM32F103 mini 开发板的功能,如果开发实际工程项目,充分利用已有的资源才是明智的选择。