电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【电机矢量控制】STM32使用TIM触发ADC,CUBEMX配置(用于电机控制电流采样)
分 享
扫描二维码分享
【电机矢量控制】STM32使用TIM触发ADC,CUBEMX配置(用于电机控制电流采样)
电流采样
TIM触发ADC
CUBEMX
KVIN
关注
发布时间: 2019-09-11
丨
阅读: 7777
# 前言 无论是做直流有刷电机的电流环,还是做BLDC方波的电流环,亦或是做FOC的电流环,都需要进行电流采样,需要精确控制采样时间与采样点,因此电流采样是电机控制的重中之重,这一个环节非常重要。电流环一般是在每个PWM周期都进行一次的,所以频率较高,有些人做了平均电流的电流环,频率低些,有些人是用瞬时电流值来做电流环,也就是电流环的周期就等于PWM的周期。电机的PWM周期一般都是15K以上(这是由于15K频率是人耳能听到的最高频率范围,超过15K,人耳就听不到那个高频的声音了,在静音方面也有这方面的原因)。 这里以BLDC方波控制的电流采样为例,详细讲述使用CUBEMX配置结合寄存器如何操作电流采样,为后续的电流环做准备。后续做FOC就是需要SVPWM的电流采样,各位不要着急,后续我会把CSDN博客的文章搬运过来,再稍作修改。 ------------ 首先,我们要明确电流环的采样点到底是在哪,如果是随机进行的ADC采样,那么电流采样点就会随机出现在相对于PWM的任意时刻,要知道,电流在PWM为高时是上升的,在PWM为低时是下降的,甚至有可能为0,如果这样操作,多组数据平均一下,就是平均电流,但这样不是我们要的电流环,我们要的电流环需要瞬时电流。因此采样点需要固定在PWM发波的高电平的中间,要知道MOS管在打开时是有一个尖端脉冲的,此时采样易受干扰,因此放在中间,示意图如下: ![](https://cf04.ickimg.com/bbsimages/201909/360f3e6777fb19ec092f6bae43fcf14e.png) 这样可以确定采样出来的电流是真实的电机电流,应该是会比平均电流大些的。因为我这边PWM产生是用TIM1的互补PWM通道,而TIM1又是由TIM3的COM事件来触发的,现在我需要有另外一个定时器来产生一个跟TIM1周期相同,但是PWM的值是TIM1的一半的波形,这里我选择的是TIM15,因此需要保证TIM15的CCR寄存器的值为TIM1的一半,因此,可以直接在TIM1的溢出中断的回调函数中更新TIM15的CCR寄存器的值: ![](https://cf04.ickimg.com/bbsimages/201909/01050838a460bc6fb3f748442d6067dc.png) 接下来就是要保证TIM1与TIM15同步了,因为TIM1是TIM3(霍尔定时器)的从定时器,那么,将TIM15也配置为TIM3的从定时器就可以了,由寄存器参考手册可知,TIM15的触发源是ITR1: ![](https://cf04.ickimg.com/bbsimages/201909/4fc9a85b2847a4a83e28fbf7d47a49f0.png) 然后将CUBEMX的触发源选择为ITR1,并且选择复位模式,选择内部时钟: ![](https://cf04.ickimg.com/bbsimages/201909/81c035d35c287d56e00ae2f0f83ce65c.png) 在配置好触发源之后,我们希望的是使用TIM15的PWM结束的时候,这样讲有些歧义吧,换个说法就是咋TIM15的计数值CNT达到CCR的值的之后,触发ADC开启采集,那也就是说TIM15需要开启主从模式,并且需要发送一个OC1REF信号(因为使用的是1通道): ![](https://cf04.ickimg.com/bbsimages/201909/80ebf5c5d86a1c3c20f711707a8f9b4b.png) 在这里需要说明一下这个OC1REF信号的产生必须是在PWM模式下的,最开始我也不清楚,连同公司的软件大佬一起搞这个问题搞了两天,依旧是发送不出来这个OC1REF信号,最后还是看到了一篇博客:http://blog.sina.com.cn/s/blog_155ff95b20102wwen.html, 里面最后一段话有提到这个: ![](https://cf04.ickimg.com/bbsimages/201909/2180e0bca921e41051ac431215772b94.png) 我之前没有配置PWM模式的CUBEMX是这样的: ![](https://cf04.ickimg.com/bbsimages/201909/e75f7232a53f0cc707798c40e5325502.png) 一个原因是因为我不知道这个知识点,另一个原因是因为确实我的引脚资源不够用了,已经没有引脚给我配置PWM了,后来看了那篇博客之后,将TIM15配置改为: ![](https://cf04.ickimg.com/bbsimages/201909/6e26314b5a30728fe462f5b91b1c467e.png) 当然理论上,配置成Output Compare No Output模式,然后TIM15的TRGO信号使用OC1信号也是可以的,这个我没有测试。也是参考了那篇博客,我将ADC改为了上升沿触发,而要使用上升沿触发,那么只需要将TIM15改为PWM2模式就可以了: ![](https://cf04.ickimg.com/bbsimages/201909/8f5379a4963d006589bf47abc91924ad.png) 接下来就是ADC那边的配置了,因为我们是要在PWM高电平的中间采集一次,下一次PWM再采集下一次,因此需要将ADC配置为单次采集,至于DMA配置的话,正常模式与循环模式都是可以的,只不过是多一句重新启动的问题,我采用的是DMA循环模式,而触发信号就选择TIM15的处罚信号,上升沿触发,配置如下: ![](https://cf04.ickimg.com/bbsimages/201909/0ff9d935eb1c39fa358bc602e9b57e8d.png) ![](https://cf04.ickimg.com/bbsimages/201909/cd9d5ac182dff7fdbea8cf673da0352c.png) 实际用示波器的电流如图: ![](https://cf04.ickimg.com/bbsimages/201909/27176839c11f22884171714b08894489.png) 方框内为发波时的电流波形,我现在把负载调小了些,所以电流小了些。 实际STM32读出来的电流波形如图:(使用了串口打印出来,每个PWM周期采集一次,即66us采集一次) ![](https://cf04.ickimg.com/bbsimages/201909/120627d763dc0e038cfcb1937e71887f.png)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
4
)
KVIN
关注
评论
(6)
登录后可评论,请
登录
或
注册
df98f16b4ce28bf8
219
天前...
您好 ,在CSDN上看到您之前发的一篇关于无感FOC的文章,想向您请教几个问题,望不吝赐教: 你用的是什么观测器啊,你开环切换的时候切换条件是什么啊,看博客里的那个波形应该是电流波形吧,切换之后速度怎么变快了,我现在用滑膜观测器,先用HALLFOC开环转,然后一切换观测出来的角度就堵转,实在搞不出来,希望能讨教一波,谢谢
0
回复
发布
KVIN
回复
df98f16b4ce28bf8
214
天前...
多谢
0
回复
发布
df98f16b4ce28bf8
回复
KVIN
214
天前...
好的 ,已经关注你的博客了哈哈
0
回复
发布
KVIN
回复
df98f16b4ce28bf8
218
天前...
不客气,以后多交流吧,按照进度,我先放弃了调试闭环与带载,最近两个月把重心放在的无感FOC的电路上,画了几版电路,在调试,STM32的出了两个板,dsPIC的出了两个板,目前项目需要,更换主控芯片为dsPIC,这周开始熟悉dsPIC芯片,后续会出一些关于dsPIC的文章吧,等程序完全移植过来就继续做闭环带载,优化代码,再出一些相关文章
0
回复
发布
df98f16b4ce28bf8
回复
KVIN
218
天前...
谢谢!我昨天调的能够切换了,我是滑模观测器+锁相环,但是不是强拖启动,是霍尔启动,阻感参数我是用RCL仪器测的,昨天加了电流环,才能从霍尔FOC的角度切换到无位置观测的角度,然后从无位置切换到速度闭环也行了,但是现在电机转的时候负载不能突变,负载突变电机就堵转 ,慢慢加载还是能稍微稳定地转一会。
0
回复
发布
KVIN
回复
df98f16b4ce28bf8
218
天前...
我用的传统方案,滑模观测器+反正切,看你描述,是想用有霍尔的FOC,来验证观测器波形对不对吗,我之前也是这么做的。我测试过两个电机,这两个电机我都不知道参数,连生产厂家都不知道,一个电机对参数不敏感,调了大概一个星期的阻感参数,就可以正常切换了,另一个对参数很敏感,调了快一个月,实在转不起来,也是从强拖切换到观测器就堵转,最后我是给了一个电机给一个代理商,他们给了Microchip的工程师,Microchip的工程师用电桥仪测出来了阻感参数,才成功转起来的,观测器的模型需要你对电机的类型有所了解,凸极式电机还是表贴式电机,对于参数是否敏感,另外无感FOC,观测器是有最小速度范围的。详细的,以后的文章我都在这个网站更新了
0
回复
发布
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交