资料下载地址: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控制越调速度越快等等问题,最后都比较好的解决了这些问题,当然程序和设计中还存在一些问题,由于时间关系无法全部解决,在以后的学习过程中,如果有机会会继续深入学习。 |