liu553824989 发表于 2018-8-21 18:07:14

最近在看st2.0的电机库,那个hall电角度怎么计算出来

小弟最近在看电机库,是利用定时器3捕获hall信号,但是看代码不是很明白,为什么计算电角度跟hall值1,2,4无关呢,只是判断3,5,6这几个hall值bPrevHallState = bHallState;
    bHallState = ReadHallState();
#if (HALL_SENSORS_PLACEMENT == DEGREES_120)   
    switch(bHallState)
    {
      case STATE_5:
            if (bPrevHallState == STATE_5)
            {
            //a speed reversal occured
                if(bSpeed<0)
                {
                  bSpeed = POSITIVE_SWAP;
                }
                else
                {
                  bSpeed = NEGATIVE_SWAP;
                }
            }
            else if (bPrevHallState == STATE_6)
            {
                bSpeed = POSITIVE;
            }
            else if (bPrevHallState == STATE_3)
            {
                bSpeed = NEGATIVE;
            }
            // Update angle
            if(bSpeed<0)
            {
                hElectrical_Angle = (s16)(S16_PHASE_SHIFT+S16_60_PHASE_SHIFT);
            }
            else if(bSpeed!= ERROR)
            {
                hElectrical_Angle = S16_PHASE_SHIFT;
            }
      break;也不是很明白bSpeed 的作用,hElectrical_Angle 这个计算值是怎么出来的,有研究的坛友,希望指点一下。

feixiang20 发表于 2018-8-22 01:11:20

用户手册里有计算公式的吧,找找看电机控制同步电角度测试说明.pdf

xyl-346973 发表于 2018-8-22 10:08:18

坐等高人指点:)

子曰好人 发表于 2018-8-22 10:44:18

bSpeed是用来判定电机正反转方向的,电角度的计算时通过初始相位偏差加上当前hall对应的角度值计算过来的,不清楚的地方可以看UM0492这个文档,有中文版的

qy2110000 发表于 2018-8-22 16:08:02

初始位置偏差+加上霍尔变化时计算出来的,初始位置偏差应该手动量出来的,但是霍尔这种方式精度比较差,实际应用中不具备可行性的

粗通文墨 发表于 2018-11-6 15:41:25

路过,打个酱油。

lanmanck 发表于 2018-11-9 14:33:58

qy2110000 发表于 2018-8-22 16:08
初始位置偏差+加上霍尔变化时计算出来的,初始位置偏差应该手动量出来的,但是霍尔这种方式精度比较差,实 ...

卵你就知道,现在占20%出口额的电动车/扭扭车都是用霍尔+FOC方式!

chenbaizhi 发表于 2019-6-1 22:21:14

求用户手册,中文的,感谢
页: [1]
查看完整版本: 最近在看st2.0的电机库,那个hall电角度怎么计算出来