当前位置:   article > 正文

ST电机库v5.4.4源代码分析(5): 每个扇区里面如何选择采样哪二相电流_st的电机库

st的电机库

编者:沉尸 (5912129@qq.com)

问题的提出:

      1)ST电机库中电流采样的实现

      2)每个电角度周期,共跨越6个sector,STM32F407中有两个ADC(ADC1和ADC2),所以在同一个时刻,可以采样UVW三路中的二路(另一路可以推导出来),这些电流值带着符号,那么:源码中每个sector采集哪二路呢?

一)针对电流采样的ADC触发的软件流程描述

stm32f407中TIM1 的ch1~ch3用来输出互补型6路pwm分别控制上下臂的6个mos管;ch4用来控制ADC触发的位置

 

二)电流采集选择哪二相?

首先源代码中的sector对应的值和Hall传感器对应的状态机的值不是一回事

源代码中sector顺序编码,是这样的:

 源代码“Src\mc_parameters.c”中,配置在不同的sector采集不同的两路相电流:

 “MCLib\F4xx\Inc\r3_2_f4xx_pwm_curr_fdbk.h”文件中定义有:

根据设置,可以知道

CH3对应U

CH4对应V

CH6对应W

全部的sector都构造成固定采集A相和B相,不香吗?这样设计有何考虑呢?

下面的图4可以查阅《马达控制之FOC原理.docx》,是第I扇区波形图

图5摘自《ST MC SDK 5.x 相电流检测与重构 位置速度信息获取.pdf》第8页

结合表1、图4和图5,很容易看出规律:

在第I扇区,“A+相”相比于B+和C+,它处于高电平的时间最长,那么反过来说,“A-相”处于低电平的持续时间最短,所以在第I扇区,不要采集A相,时间太短,对采集点的要求就高了很多,因为采集点要避开管子开关的时间等等。

其它的各扇区依次类推。

采样时间点的选择:

可以参考ST的培训资料,另一个渠道是从硬石公司的资料中可以进行理解

 下面我截屏其中的部分

注明: 本图片版权完全属于“硬石公司”,这里引用,如果有侵权,请联系本人,本博文目的完全是给技术控们贡献一点点自己的理解,没有半点商业行为!

图中绿色阴影部分,也就是C相的下桥臂导通的时间,如果它比“hTafter”时间长2倍,因为C相导通的时间段里有充裕时间进行ADC的采集

在ST马达库 “r3_2_f4xx_pwm_curr_fdbk.c”的源代码中,进行了推而广之:如果三相中下臂桥导通时间最短的那个(也许是A相或者B相),只要满足上面的条件,我们都固定去采集A相和B相,反正时间都足够!

图中B段的时间无法满足进行ADC采样(< hTafter * 2),因为我们只需要采集两相电流,那么我们可以不考虑C相(C相下臂桥导通时间太短了),仅仅采集A相和B相,但是需要满足图中的时间段 A > B

此时将采样区间从C相下桥臂的开通点向前提前,避开“B时间段”

为什么满足了  “A时间段”> “B时间段”, 那么采样点就可以设置在hCntPhc – hTBefore 处呢?

我觉得应该满足的条件是:

hDeltaDuty > (hTafter + hTbefore)

从已知条件:

B < 2* hTafter

hDeltaDuty > B

也推不出我希望的条件!!!

上面第(3)种,无法避开所有干扰,只能硬着头皮采样了...

具体源代码请查阅:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/103147
推荐阅读
相关标签
  

闽ICP备14008679号