FOC的双电阻采样电流对应的stm32中的硬件配置(有图有真相)

一、双电阻采样电流法

 采样时机

原理说明



在U相和V相的下桥分别串联一个功率电阻,通过一个运放电路连接至A/D。

采样时机放在PWM的下溢中断进行,U V两相电阻上的电流即为电机U V相的线电流。

在软件设计的时候,采用下溢中断(处于第7段和第1段零矢量区域中),将电流采样的任务安排在一个PWM周期的开始处,在比较匹配到来之前的期间,U、V两相的上桥臂都是关断的,也就是说下桥臂是导通的,这样就可以在每个PWM周期顺利采样一次两个相电流值。

关于电流采样请参考: https://wenku.baidu.com/view/cc3f81fa10a6f524cdbf85bd.html

二、FOC的软件架构

 用定时器产生PWM波形,在计数器的下溢事件时触发AD转换,当AD转化完成时产生EOS中断,在这个中断中放入FOC的算法。

运行FOC开环程序发现JSCOPE采集的电流如下,正弦度很差。

 用示波器观察GPIO口和控制器输出的U相和W相波形,得到的如下图

图中黄色的线表示TIMx中断程序中的GPIO反转输出的波形。

图中蓝色的线表示U相输出的驱动波形

图中紫色的线表示V相输出的驱动波形

将反转的拐点用红线连接,它代表的就是TIMx定时器的计数值。从图上可以看到一个周期中产生了两个拐点,进行了两次AD转换,运行了两次FOC算法。所以构建出来的电流不是在开关管为000的状态下采集的,所以正弦度不好,此时不能用作FOC的计算。

三、问题出在哪里呢 

查找TIM的手册:

In center-aligned mode, the counter counts from 0 to the auto-reload value (content of the TIMx_ARR register) – 1, generates a counter overflow event, then counts from the autoreload value down to 1 and generates a counter underflow event. Then it restarts counting from 0.

在中心对齐模式下,计数器从0计数到自动重新加载值(TIMx_ARR寄存器的内容)–1,生成计数器溢出事件,然后从自动加载值计数到1,并生成计数器下溢事件。然后从0开始重新开始计数.

就是说:定时器每个周期都会生成一次上溢中断和一次下溢中断。哪如何正确得到采样的时间点呢

用cubeMX生成的TIMx的初始化函数中(下图)

图中画圈的位置表示:当上溢和下溢次数的和等于该值时才产生中断。等于0表示每次都产生中断。将该值设置成( htim1.Init.RepetitionCounter = 1;)表示为当溢出事件计数为1的时候产生一次中断。重复以上实验:得到的电流波形如下

 得到的反转GPIO和U/W相的时序如下图

 将反转的拐点用红线连接,它代表的就是TIMx定时器的计数值。从图上可以看到一个周期中产生了一个拐点,并且拐点的位置都出现在下桥关闭的点。此时采样的电流重建出一个正弦的电流图。

 

  • 16
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值