Zigbee2012 发表于 2013-5-21 10:26:15

电机回零??

本帖最后由 Zigbee2012 于 2013-5-21 11:24 编辑

电机回零,什么意思啊!!下了些资料没看懂,大神些求解释哈。


我用的电机是自带512线编码器,电机回零概念刚接触 完全不懂!!比如说 我先让电机正转360,再反转360 回不到原点...误差大概10度左右,这个是不是电机回零引起的??

zouzhichao 发表于 2013-5-21 10:45:30

伺服电机一般会有两个限位开关(通常是机械触点的)
还会有一个零位置光电开关(电磁开关),用来寻找零点

zouzhichao 发表于 2013-5-21 10:47:59

限位开关主要是保护电机,防止出现电机转到头了,出现堵转,破坏机械装置

zouzhichao 发表于 2013-5-21 10:53:51

回零还有一个方向之分,主要考虑齿轮或者导轨的间隙误差,还有零位开关的一个间隙(滞回)误差
我只用过两种伺服,松下(学校实验室的,用VC写代码控制运动板卡),三菱的(也是学校的,PLC控制),可能说得也有些谬误,你参考参考就好了

Zigbee2012 发表于 2013-5-21 11:18:40

zouzhichao 发表于 2013-5-21 10:53 static/image/common/back.gif
回零还有一个方向之分,主要考虑齿轮或者导轨的间隙误差,还有零位开关的一个间隙(滞回)误差
我只用过两 ...

我用的电机是自带512线编码器,是否存在回零!!我刚接触这个概念

zouzhichao 发表于 2013-5-21 11:24:29

应该没有用编码器零位脉冲作机械零位信号的吧?你是用的伺服驱动不?

zouzhichao 发表于 2013-5-21 11:28:43

如果你用的导轨的话,导轨两端一般会有限位开关,它的信号接到伺服驱动,在限位之间装零位开关,也接到伺服,如果PLC控制的话,那些限位,回零都是底层作好的,调用功能就好,如果是运动控制板卡+伺服放大器的话,是可以有函数作一部分控制的

Zigbee2012 发表于 2013-5-21 11:30:02

zouzhichao 发表于 2013-5-21 11:24 static/image/common/back.gif
应该没有用编码器零位脉冲作机械零位信号的吧?你是用的伺服驱动不?

恩,对,就是简单电机驱动芯片!用的DRV8833,伺服驱动没用过,电机驱动玩的比较少!   
回零是怎么引起的,电机的机械特性嘛?对这个,至今不晓得。师兄,解释哈嘛

zouzhichao 发表于 2013-5-21 11:41:59

DRV8833是不是跟L298N一样,只是作功率放大啊?然后控制就是你拿MCU直接控制电机,类似于自己实现位置闭环,速度闭还?
如果是这样的话,看你要求是实现正转360度,反转360度,是可以用编码器零位脉冲作回零信号的,如果编码器没有零位脉冲输出,可以考虑用光电自己装一个零位脉冲
零位脉冲的作用主要是消除累计误差,比如说512的编码器,由于精度问题,实际只有511,
那么第一圈
511 相差1
511 相差1 + 1



511相差N
误差就大了,如果每次都用零位脉冲清零的话,累计误差会很小,跟时间长短无关,反之,时间越长,越不可靠

zouzhichao 发表于 2013-5-21 11:47:21

“先让电机正转360,再反转360 回不到原点...误差大概10度左右”
在这里角度这么小,不是累计误差的问题,(如果你用的是增量编码器的话)而是你的脉冲计数方式错误,把一些正转的脉冲算到反转的脉冲去了

zouzhichao 发表于 2013-5-21 11:55:04

还有如果是两相正交信号的话,如果速度在0附近正负抖动,也会有编码器脉冲计数处理复杂的问题,这点要注意,linux下操作不熟,贴不了图

Zigbee2012 发表于 2013-5-21 13:37:50

本帖最后由 Zigbee2012 于 2013-5-21 13:39 编辑

zouzhichao 发表于 2013-5-21 11:47 static/image/common/back.gif
“先让电机正转360,再反转360 回不到原点...误差大概10度左右”
在这里角度这么小,不是累计误差的问题, ...

谢谢,楼上的师兄。。了解了很多。我通过脉冲计数判断旋转的度数,每360度有9728个脉冲。。    “而是你的脉冲计数方式错误,把一些正转的脉冲算到反转的脉冲去了”,这个不解,我是通过按键让电机正转或者反转360度,然后在相应转回来

zouzhichao 发表于 2013-5-21 13:41:57

简单地说,你按键的时候,电机并不能立马反向,如果此时你的脉冲计数已经逆向,那么这部分脉冲计数就错了(假设你没考虑到这点的话结果就会回不了0)

zouzhichao 发表于 2013-5-21 13:43:10

确认一下,你的编码器是AB两相正交+零位输出吗?

zouzhichao 发表于 2013-5-21 13:49:27

一般来说,单向运行的话,AB两相正交+零位输出这种编码器误差还是比较小,用AB中的一个计数就好了,当然用零位脉冲 + AB中的一个更好了
单独用A/B:
很简单,直接累加,圈数 = 计数 / 512.0

零位脉冲 + A/B:
计数累加,遇到零位脉冲,圈数加1,计数清零
最后实际圈数 = 圈数 + 计数 / 512.0

如果计数很多圈,后一种好

zouzhichao 发表于 2013-5-21 13:51:32

如果双向运行,尤其是出现速度在0附近抖的情况下,处理要复杂的多,原因估计你也明白了
把AB相的脉冲图画出来基本就明白怎么处理了

Zigbee2012 发表于 2013-5-21 23:33:26

zouzhichao 发表于 2013-5-21 13:43 static/image/common/back.gif
确认一下,你的编码器是AB两相正交+零位输出吗?

恩,编码器是AB两相但没有零位输出! 我用12C5A60S2来捕获脉冲其中一路脉冲A(如果要判断正转还是反转就需要另外一路B,判断B的电平高低确定正反转).

Zigbee2012 发表于 2013-5-21 23:40:00

zouzhichao 发表于 2013-5-21 13:51 static/image/common/back.gif
如果双向运行,尤其是出现速度在0附近抖的情况下,处理要复杂的多,原因估计你也明白了
把AB相的脉冲图画出 ...

今天 下午测试了哈比如设置360度有时候是准的,但会随机出现转370的情况(毫无规律)可能程序问题!!呵呵,谢谢师兄

zouzhichao 发表于 2013-5-22 00:48:15

Zigbee2012 发表于 2013-5-21 23:40 static/image/common/back.gif
今天 下午测试了哈比如设置360度有时候是准的,但会随机出现转370的情况(毫无规律)可能程序问题! ...

不客气,慢慢检查吧
页: [1]
查看完整版本: 电机回零??