STM32电机库(求助)

[复制链接]
10368|13
 楼主| fengxiangru 发表于 2011-7-27 16:47 | 显示全部楼层 |阅读模式
在ST的PMSM的电机库里,在 SVPWM_3ShuntCalcDutyCycles
这个子程序里,是计算PWM的占空比的,有这么一段:


  switch(bSector)
  {  
    case SECTOR_1:
                hTimePhA = (T/8) + ((((T + wX) - wZ)/2)/131072);
    hTimePhB = hTimePhA + wZ/131072;
    hTimePhC = hTimePhB - wX/131072;
               
                // ADC Syncronization setting value            
                if ((u16)(PWM_PERIOD-hTimePhA) > TW_AFTER)
                {
                  hTimePhD = PWM_PERIOD - 1;
                }
                else
                {
                  hDeltaDuty = (u16)(hTimePhA - hTimePhB);
                  
      // Definition of crossing point
                  if (hDeltaDuty > (u16)(PWM_PERIOD-hTimePhA)*2)
                  {
                      hTimePhD = hTimePhA - TW_BEFORE; // Ts before Phase A
                  }
                  else
                  {
                      hTimePhD = hTimePhA + TW_AFTER; // DT + Tn after Phase A
                     
                    if (hTimePhD >= PWM_PERIOD)
                    {
                      // Trigger of ADC at Falling Edge PWM4
                      // OCR update
                     
                      //Set Polarity of CC4 Low
                      PWM4Direction=PWM1_MODE;
                     
                      hTimePhD = (2 * PWM_PERIOD) - hTimePhD-1;
                    }
                  }
请问这里的131017是哪里来的数据,是干什么用的?

                }
香水城 发表于 2011-7-27 17:12 | 显示全部楼层
我只知道 131072 = 0x20000
caner_hn 发表于 2011-7-27 20:36 | 显示全部楼层
生气了吧!
 楼主| fengxiangru 发表于 2011-7-28 08:54 | 显示全部楼层
难道是一个单位的转换吗?
Periodic 发表于 2011-11-16 13:47 | 显示全部楼层
同问 感觉STM32的FOC库 很怪
TD3000 发表于 2011-11-17 21:26 | 显示全部楼层
nike27 发表于 2013-11-13 17:01 | 显示全部楼层
(2^15)*4 = 32768*4 = 131072
#define T  (PWM_PERIOD * 4),这里有一个4倍的放大。
然后电流采用了Q15表示(左对齐),2^15 = 32768。
所以最后计算需要除以131072。
nike27@126.com
jsw410923 发表于 2014-7-22 17:07 | 显示全部楼层
hDeltaDuty = (u16)(hTimePhA - hTimePhB);  case1  不是该采样b、c相的电流吗? 怎么是按A、B相的值来算的。。。
小小刀 发表于 2014-8-13 17:44 | 显示全部楼层
mark,正好想问这个问题呢
虫虫好 发表于 2014-11-16 13:56 | 显示全部楼层
香水城 发表于 2011-7-27 17:12
我只知道 131072 = 0x20000

dvDutyValues.hTimePhA = (T/8) + ((((T + wX) - wZ)/2)/131072) T=4*Tperiod  化简后 dvDutyValues.hTimePhA = (Tperiod/2) + (Tperiod(1 + wX) - wZ)/2)/32768  WZ wx虽然Q15格式 但是Tperiod 不是Q15的  

和um0492    hTimePhA = (T/2) + ((T/2 + wX) - wZ)/2   感觉不一样;如果dvDutyValues.hTimePhA = (T/8) + (((( wX) - wZ)/2)/131072/Tperiod )改成这样感觉 和um0492 一样了,也许一个几千的数/32768 为零  但是不知道st的意图什么 还是我考虑的不全呢  求教导
150625 发表于 2016-9-11 20:54 | 显示全部楼层
虫虫好 发表于 2014-11-16 13:56
dvDutyValues.hTimePhA = (T/8) + ((((T + wX) - wZ)/2)/131072) T=4*Tperiod  化简后 dvDutyValues.hTim ...

问一下大神,你以前问的这个“dvDutyValues.hTimePhA = (T/8) + ((((T + wX) - wZ)/2)/131072) T=4*Tperiod  化简后 dvDutyValues.hTimePhA = (Tperiod/2) + (Tperiod(1 + wX) - wZ)/2)/32768  WZ wx虽然Q15格式 但是Tperiod 不是Q15的  
和um0492    hTimePhA = (T/2) + ((T/2 + wX) - wZ)/2   感觉不一样;如果dvDutyValues.hTimePhA = (T/8) + (((( wX) - wZ)/2)/131072/Tperiod )改成这样感觉 和um0492 一样了,也许一个几千的数/32768 为零  但是不知道st的意图什么 还是我考虑的不全呢  求教导”搞清楚了吗?可以指点一下吗
悠然33 发表于 2017-4-11 11:04 | 显示全部楼层
请问楼主,这个131017的原因知道了嘛?为什么要除以这个数值
 楼主| fengxiangru 发表于 2017-9-9 15:50 | 显示全部楼层
已经想不起来当年的帖子了
倚楼等红颜 发表于 2022-4-28 17:47 | 显示全部楼层
悠然33 发表于 2017-4-11 11:04
请问楼主,这个131017的原因知道了嘛?为什么要除以这个数值

Q格式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

61

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部