资料下载地址:ucosii+STM32 BLDC电机控制器设计 附源程序Proteus仿真
嵌入式,现在把我的程序和设计思路分享给大家。 软件所用版本如下 Proteus版本 SP 8.7 STM32CubeMX 版本 5.4.0 HAL固件库版本 1.8.0 Keil 版本 uVison5 一、设计思路:
使用STM32CubeMX软件进行资源初始化(Cube资源配置很方便),使用HAL库进行程序设计。
图1 资源配置图
二、系统功能介绍:
三、软件设计说明:
6、使用ucosii进入分功能多任务处理。
四、调试及运行结果
图2 电机刚启动,速度未达到最小速度500
速度未达到最小速度时加载很快,大概加载到300rpm左右开始pid控制。
图3 仿真过程中
图4 仿真过程中
图5 反转时的调速过程
仿真过程中可以看到定时器PWM输出之间的切换以及脉宽的变化。
图6 接近稳定时
图7 反转时接近稳定
图8 稳定后增大转速
由于proteus中stm32 的定时器计时很坑,延时根本不对,需要修改芯片的时钟源频率,改大了仿真慢,改小了又不准,所以ADC采样值和转速之间只能近似转换,也造成了目标转速和实际转速的误差。
图9 整体电路图
五、心得体会
在这次设计过程中,期间遇到许许多多问题,对电机的控制不熟悉导致换向失败,仿真过程不收敛,定时器不起作用,引脚之间相互干扰,输入捕获无法同时进行,pwm模式设置错误导致pid控制越调速度越快等等问题,最后都比较好的解决了这些问题,当然程序和设计中还存在一些问题,由于时间关系无法全部解决,在以后的学习过程中,如果有机会会继续深入学习。
|