搜索
bottom↓
回复: 105

基于STM32的直流无刷电机(BLDC)双环(速度+电流)控制.

  [复制链接]

出0入0汤圆

发表于 2013-8-13 17:59:44 | 显示全部楼层 |阅读模式
本帖最后由 qq490455545 于 2013-8-13 19:25 编辑

附件是我自己写的一个基于STM32的无刷电机驱动程序,现在遇到了一下问题,求助各位高手,我写的这个程序单速度环没有问题,完全能稳定转速在+-5转,但是电流环做的不好,在堵转电机时会出现要么超调震荡,要么PI调节太软容易堵死,始终不能调节到一个合适的PI。本程序也适合新手学习无刷电机,因为本身自己也是接触不久,写的不怎么地道。欢迎大家交流学习。并希望高手不吝赐教。
哦  我的程序是基于IAR的,PWM载波频率为8K,方波控制。

程序中的文档介绍:
打开解压文件有三个文件夹:
1、EWARM文件夹。放的是工程文件以及工程输出文件,如:各种.o和.out等。
2、library文件夹。放的是IAR用到的库文件和库函数,使用3.5版的库函数。
3、usr文件夹。放的是自己写的程序文件。

在usr下有两个目录:
1、inc;  放的是头文件。
2、src;.c文件

重点文件介绍:
inc中的com_ram.h是整个程序中的变量、宏定义等的定义文件,都能在这个文件找到。
src中的
1、filter_con.c是滤波模块函数,采样一个队列数据结构写的,属于滑窗滤波,基本上不要损耗时间能够达到平均滤波效果,而且可以多用。
2、motor_pwm.c是电机控制的主要文件,里面包含电机换相、电流采样、速度采样等。
3、PIDcon.c是PID算法,SPid是速度环结构体变量、CPid是电流环结构体变量
4、sys_hardware_ini.c是整个程序的初始化函数,包含RCC、TIM1、TIM2、TIM3、ADC+DMA、中断函数优先级设置等。
5、stm32f10x_it.c是中断处理函数。

本程序是使用TIM3定时器作为HOLL捕获,TIM3的3个输入配置为XOR门,当任意输入变化,就会被捕获产生中断。TIM3的1通道配置为输入捕获,2通道配置为PWM2模式,并选择OC2REF作为TRGO触发TIM1输出载波。
这是官方芯片手册上推荐使用的方法,但是考虑到换相延时,就只拿这种方式用来获取速度和位置量。
ADC是采样单次触发扫描方式,跟随载波软件触发采样,我使用的驱动板是3相电流采样,处理方式是分时处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-8-13 18:04:12 | 显示全部楼层
本帖最后由 qq490455545 于 2013-8-13 18:09 编辑

还有示波器的波形分析

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-8-13 19:02:06 | 显示全部楼层
这张图上的电流明显看出在换相时刻出现异常,电流下降太快,原因是换相时刻有50~100us的下桥间隙,导致电流通过上桥续流二极管到达母线,对母线充电

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-8-13 19:04:22 | 显示全部楼层
本帖最后由 qq490455545 于 2013-8-13 19:05 编辑

这是对上面问题的补充,可以看到实际测得的图像,确实在换相时刻有57us的空隙。绿色线是W相相电流,黄色和红色分别是U相和V相下桥载波。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-8-13 19:06:24 | 显示全部楼层
没人来吗?  我在玩单机?

出0入0汤圆

 楼主| 发表于 2013-8-13 22:01:51 | 显示全部楼层
kmani 发表于 2013-8-13 20:46
楼主你的电机有转速传感器吗?
你用的电阻还是霍尔测的电流呢?

电机是内部有位置传感器的,用的是电流传感器,电流传感器内部是霍尔实现的

出0入0汤圆

 楼主| 发表于 2013-8-13 22:02:41 | 显示全部楼层
dxgdsx 发表于 2013-8-13 21:55
楼主用的什么驱动电路?用的驱动芯片还是分立元件?

用的是IPM模块驱动电机。

出0入0汤圆

 楼主| 发表于 2013-8-13 22:10:46 | 显示全部楼层
dxgdsx 发表于 2013-8-13 22:07
呃,好高端。我还是用的IR2130。

这也不见得就高端,只是产品设计角度考虑的

出0入0汤圆

 楼主| 发表于 2013-8-13 22:17:38 | 显示全部楼层
wajlh 发表于 2013-8-13 22:15
楼主示波器不错

公司的,好用~

出0入0汤圆

 楼主| 发表于 2013-8-13 22:27:49 | 显示全部楼层
dxgdsx 发表于 2013-8-13 22:19
请教楼主如何通过转速PID得到参考电流?实际中依据什么原则?

我其实也不懂。这个问题留待大神回答了,不过我是这么用的,速度环的输出,作为电流环的设定值,电流采样值作为电流环的采样值。

出0入0汤圆

 楼主| 发表于 2013-8-14 08:34:23 | 显示全部楼层
823032003 发表于 2013-8-13 22:40
LZ这种双环的系统,一般先调内环,想办法加负载,先把内环调好(动态,稳态)。 ...

我也尝试做了单电流环,只是没负载,用手堵转电机这样做的,发现不论怎么调都不能起到很好的效果,要么PI大了现象就是一捏捏不死,但是捏死了就出现震荡,一冲一冲,不能稳定输出电流。要么就是PI小了,一捏就死,从示波器上看电流波形就是阶梯减小。郁闷的很。

出0入0汤圆

 楼主| 发表于 2013-8-19 09:42:22 | 显示全部楼层
K.O.Carnivist 发表于 2013-8-16 18:49
内环还是要单独调好的,哪怕单一个P调节也行,不然就干脆不要电流环了直接单闭环。如果把电机捏死都不能 ...

单电流环现在已经调好了,开始是由于理解错误,以为调节不好。双环也能达到限幅的效果,只是响应太慢了点

出0入0汤圆

 楼主| 发表于 2013-8-19 09:43:15 | 显示全部楼层
djkc 发表于 2013-8-17 21:50
能否共享原理图啊?谢谢楼主了!

由于这个是公司的一个正式产品,原理图不方便给出,不好意思~

出0入0汤圆

 楼主| 发表于 2013-8-19 09:44:51 | 显示全部楼层
john78 发表于 2013-8-17 22:27
对电流采样电路很感兴趣。
用什么运放,怎么隔离?

就是用一个电流传感器采样,经过分压电路直接接到单片机的AD脚。电流传感器内部有放大电路。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 23:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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