打印

STM32电机库(求助)

[复制链接]
9384|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 | 只看该作者
难道是一个单位的转换吗?

使用特权

评论回复
5
Periodic| | 2011-11-16 13:47 | 只看该作者
同问 感觉STM32的FOC库 很怪

使用特权

评论回复
6
TD3000| | 2011-11-17 21:26 | 只看该作者
32768*4

使用特权

评论回复
7
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

使用特权

评论回复
8
jsw410923| | 2014-7-22 17:07 | 只看该作者
hDeltaDuty = (u16)(hTimePhA - hTimePhB);  case1  不是该采样b、c相的电流吗? 怎么是按A、B相的值来算的。。。

使用特权

评论回复
9
小小刀| | 2014-8-13 17:44 | 只看该作者
mark,正好想问这个问题呢

使用特权

评论回复
10
虫虫好| | 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的意图什么 还是我考虑的不全呢  求教导

使用特权

评论回复
11
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的意图什么 还是我考虑的不全呢  求教导”搞清楚了吗?可以指点一下吗

使用特权

评论回复
12
悠然33| | 2017-4-11 11:04 | 只看该作者
请问楼主,这个131017的原因知道了嘛?为什么要除以这个数值

使用特权

评论回复
13
fengxiangru|  楼主 | 2017-9-9 15:50 | 只看该作者
已经想不起来当年的帖子了

使用特权

评论回复
14
倚楼等红颜| | 2022-4-28 17:47 | 只看该作者
悠然33 发表于 2017-4-11 11:04
请问楼主,这个131017的原因知道了嘛?为什么要除以这个数值

Q格式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

61

帖子

1

粉丝