query88 发表于 2012-8-19 05:55:17

《2812交流伺服电机驱动(程序+论文)》中这程序的作用是啥?

《2812交流伺服电机驱动(程序+论文)》
http://www.amobbs.com/thread-992814-1-1.html中的demo.c中的

这段程序的作用确定运转前电机转子的位置么?和DSP引脚连接的外围电路是怎样的?

///////////////////电机初始化函数(位置确定)////////////////////////////
void motor_init(void)
{
   switch(GpioDataRegs.GPADAT.all & 0xE000)
   {
         case 0xA000: shan_qu=0; break; //1010,0000,0000,0000
         case 0x2000: shan_qu=1; break;
         case 0x6000: shan_qu=2; break;
         case 0x4000: shan_qu=3; break;
         case 0xC000: shan_qu=4; break;
         case 0x8000: shan_qu=5; break;

                default: motor_OK = 0; break;
   }
   extent_D = 833 * shan_qu + 416 ;
         
}

hrq0521 发表于 2012-9-11 10:33:15

是的,电机带霍尔位置传感器,传回来的是UVW三个信号,可以根据这三个信号确定转子初位置。

cpholr1 发表于 2016-11-26 19:21:05

hrq0521 发表于 2012-9-11 10:33
是的,电机带霍尔位置传感器,传回来的是UVW三个信号,可以根据这三个信号确定转子初位置。 ...

我也看了代码,作者用的电机应该是2对极的,然后编码器是2500线,四倍频后是10000线。

对于一对极的无刷电机,一般静止状态下,电机会停止于6个可能的位置。

但这样处理似乎也有不妥,假如电机启动的时候,受到外力作用偏离了一些,后面的park变换和ipark变换就瞎了。

weichao4808335 发表于 2016-11-28 22:54:47

cpholr1 发表于 2016-11-26 19:21
我也看了代码,作者用的电机应该是2对极的,然后编码器是2500线,四倍频后是10000线。

对于一对极的无刷 ...

应该瞎不了,作者的这个代码在初始位置确定后就进入编码器计算电角度,即使受外力电角度也不会偏差太多。

cpholr1 发表于 2016-11-28 23:01:06

weichao4808335 发表于 2016-11-28 22:54
应该瞎不了,作者的这个代码在初始位置确定后就进入编码器计算电角度,即使受外力电角度也不会偏差太多。 ...

我是指,在上电之前,假如电机并没有停在作者想象的位置上,后面计算出来的Iq Id就都是不准的。

一般来说,对于无减速器无负载的电机来说,作者的这个写法成功率很高。
但对于有减速器,或者有偏离负载的情况下,这个写法的失败率很高。

个人认为:正确的做法,应该是用作者使用的方式先启动,然后第一次检测到霍尔中断的时候进行一次d轴角度校正,这样才能保证不管什么情况下都能使计算正确。

weichao4808335 发表于 2016-11-29 08:07:44

本帖最后由 weichao4808335 于 2016-11-29 08:09 编辑

cpholr1 发表于 2016-11-28 23:01
我是指,在上电之前,假如电机并没有停在作者想象的位置上,后面计算出来的Iq Id就都是不准的。

一般来 ...

作者用的是伺服电机,而伺服电机上是没有霍尔的,u v w都是在编码器上,一般初始相位角厂家都会提供,即使不提供也可以自己通过自动对相算出来,然后在z脉冲来的时候矫正下,(用z脉矫正是因为很多编码器都是省线编码器),矫正后就是真实角度!矫正不是因为上电之前有没有转动,而是因为u v w在60度电角度时才会变化,上电读取的状态只能判断大概角度,矫正后才会是真的角度,当然你用无刷电机通过霍尔变化可以在下一个霍尔中断时矫正,伺服电机的通用做法还是要在z脉冲中断里面矫正

catzsh 发表于 2016-11-29 11:09:08

进行转子初始位置定位

catzsh 发表于 2016-11-29 11:12:35

cpholr1 发表于 2016-11-26 19:21
我也看了代码,作者用的电机应该是2对极的,然后编码器是2500线,四倍频后是10000线。

对于一对极的无刷 ...

没有问题的,只是进行初始位置定位,角度误差正负30度,空载启动一点问题都没有;其次在正常运行过程,转子位置偏差30度以内,扇区就不会发生变化,正常运行没有问题,之前做过测试。当然只能是静差为30度以内,要是来回变化或者畸变都会很大程度上影响运行性能。

cpholr1 发表于 2016-11-29 23:46:46

catzsh 发表于 2016-11-29 11:12
没有问题的,只是进行初始位置定位,角度误差正负30度,空载启动一点问题都没有;其次在正常运行过程,转 ...

问题在于,定位不精确的话,d轴电流会偏大,这个我做过测试。

catzsh 发表于 2016-12-11 17:06:53

cpholr1 发表于 2016-11-29 23:46
问题在于,定位不精确的话,d轴电流会偏大,这个我做过测试。

这只是启动的时候才会出现角度偏差。当正常运行时,捕获到Z信号就可以进行角度修正了。

cpholr1 发表于 2017-3-5 11:28:37

catzsh 发表于 2016-12-11 17:06
这只是启动的时候才会出现角度偏差。当正常运行时,捕获到Z信号就可以进行角度修正了。 ...

这个问题我后面做过测试,原程序作者处理的方式,在使用电流环的时候没有问题。

但如果开环就要出大事了。开环是指,直接对Vq赋值,对Vd直接等于0。
页: [1]
查看完整版本: 《2812交流伺服电机驱动(程序+论文)》中这程序的作用是啥?