求助,安川伺服电机在停止运转后,编码器输出脉冲
最近在使用安川200w的SGMAH伺服电机,使用位置控制,编码器为2048线的增量式的,用MC3486差分接收器接收伺服驱动器的PAO/PBO,然后用HCTL2032采集MC3486输出的A相/B相脉冲。电机运转时,MCU能够准确读到HCTL2032采集到的电机转动量(即编码器的输出脉冲量)。现在的问题是:停止运转的电机(停止对伺服驱动位置控制的输入脉冲,电机处于使能状态),HCTL2032一直采集到脉冲,也就是说,编码器一直在输出脉冲,HCTL2032读到的脉冲数一直在增加。如果使电机禁止然后使能但电机还是停止,这时候编码器就没有输出了。电机停止后,编码器一直在输出同向的脉冲,是干扰的原因?振动的话有可能,但是如果是振动的话,脉冲应该是有正向和反向的哈。各位有经验的达人帮分析哈。 上示波器看看到底是啥东西 伺服电机停止的时候不是完全停止的,而是在一个小范围内正反转动。所以HCTL2032能够接收到脉冲,但是是有正有负的,你可以同时检测下HCTL2032的方向信号就知道了 huangxiaolpbany 发表于 2014-5-28 10:59
伺服电机停止的时候不是完全停止的,而是在一个小范围内正反转动。所以HCTL2032能够接收到脉冲,但是是有正 ...
一直是一个方向的,所以很纳闷 HCTL2032的方向输出也是一个方向的? huangxiaolpbany 发表于 2014-5-28 11:17
HCTL2032的方向输出也是一个方向的?
是的,而且换了几个电机,也一样 ddqq 发表于 2014-5-28 10:56
上示波器看看到底是啥东西
确实要用示波器看看 为什么不用AM26LS32C呢 本帖最后由 RobotRD 于 2014-5-28 18:51 编辑
看波形,是4*模式吗 “抖动”???看看波形,应该是不合法的正交脉冲吧 RobotRD 发表于 2014-5-28 18:48
看波形,是4*模式吗
1x 模式,2x模式 都一样,4x模式没试过 szmachine 发表于 2014-5-28 17:37
为什么不用AM26LS32C呢
用过AM26LS32C,效果差不多,据说AM26LS32C与安川的sn75174与AM26LS32C配合会丢脉冲,没验证过 jswd0810 发表于 2014-5-28 17:17
lz没有换个驱动器看看?
换了,一样的效果 john78 发表于 2014-5-28 20:37
“抖动”???看看波形,应该是不合法的正交脉冲吧
应该是,是得上示波器看看了 爬行,控制器的问题 楼主可以查看驱动器的诊断,看电机编码器有没有在计数,如果驱动器显示也有脉冲累加,那可能是的位置控制的上位机有问题,干扰什么的。如果驱动器上电机编码器不动,那是你的计数问题。 编码器计数必须4*才对 编码器 计数方法有问题吧 不知勿笑 发表于 2014-5-29 00:20
爬行,控制器的问题
电机轴没有任何转动,没有爬行,但不排除抖动 RobotRD 发表于 2014-5-29 08:18
编码器计数必须4*才对
你是说HCTL2302必须采用4x模式? 只有4*模式计数才正确,另外还要看伺服驱动器输出端子的上升沿、下降沿的宽度, 沿触发 换个编码器重新试下 kingie2006 发表于 2014-5-29 09:40
电机轴没有任何转动,没有爬行,但不排除抖动
怎么知道轴没转动?1024个脉冲停止后有多少呢,将编码器脱开,看还有增加么? 楼主的电机在哪里买的,多少前? 是不是测量的时间不够?抖动会有十几个或几十个脉冲吧。 SON信号使能,脉冲信号不给的话,电机轴其实是高频振荡的。
你用1*,2*模式采集脉冲不可能锁住位置。用4*模式计数可以解决问题。
伺服本身没问题,要是编码器错误,老早报故障了。 xss_2082 发表于 2014-6-2 15:03
楼主的电机在哪里买的,多少前?
x宝上的二手货 heky 发表于 2014-6-3 06:59
SON信号使能,脉冲信号不给的话,电机轴其实是高频振荡的。
你用1*,2*模式采集脉冲不可能锁住位置。用4*模 ...
用了4*模式,确实可以了,多谢。另外加了减速机,1*、2*、4*都正常了。应该是高频振荡的原因 楼主,你好,请问你的HCTL2032的电路是怎么样的?我也在用HCTL2032,用30MHZ有源晶振提供时钟信号,输入10KHZ的相位固定的正交信号,但是方向引脚U/D输出的脉冲信号,而不是高低电平,不知道是怎么回事,单片机读出的数据一直是0。请帮忙分析一下,万分感谢! 楼主,你好,请问你的HCTL2032的电路是怎么样的?我也在用HCTL2032,用30MHZ有源晶振提供时钟信号,输入10KHZ的相位固定的正交信号,但是方向引脚U/D输出的脉冲信号,而不是高低电平,不知道是怎么回事,单片机读出的数据一直是0。请帮忙分析一下,万分感谢 rossih 发表于 2014-6-28 18:19
楼主,你好,请问你的HCTL2032的电路是怎么样的?我也在用HCTL2032,用30MHZ有源晶振提供时钟信号,输入10K ...
我采用单片机ECLK输出频率给到HCTL2032的时钟脚。读数脉冲失败和你的电路及程序都有关系,你帮你的电路和程序放上来,可以帮你看看 电机停止后,把伺服使能关闭,看看还有脉冲输出吗? cpu100 发表于 2014-6-29 10:16
电机停止后,把伺服使能关闭,看看还有脉冲输出吗?
谢谢,这个问题已经解决了,原因是电机的高频振荡引起的。关闭使能肯定是OK的,现在我的选择了HCTL2032的4*模式来解决这个问题的。 电路图是这样接的,问题还没解决,明天上班把测试波形也贴上来,请帮忙赐教,谢谢!
rossih 发表于 2014-6-29 21:26
电路图是这样接的,问题还没解决,明天上班把测试波形也贴上来,请帮忙赐教,谢谢!
...
首先测量你的CLK时钟波形是否正确,确保时钟OK
然后把你的电路如下更改:
1 Pin 23 -- Test 直接接地或悬空
2 Pin17 和Pin19 悬空
3 确保正常运行状态时 Pin11和Pin12为高电平 还是不行,测试波形贴上,芯片应该没问题吧?
你是采用的4*模式?看起来已经猜到脉冲了。检查了程序呢? rossih 发表于 2014-6-30 10:47
还是不行,测试波形贴上,芯片应该没问题吧?
你是采用的4*模式?看起来已经采到脉冲了。检查了程序呢 你好,我用的是4*模式。CNTDECx的信号是正常的。但是U/Dx信号不正常,不知道为什么?
程序没应该没问题,现在芯片的方向信号是脉冲输出,工作不正常。
OE1(1);
XY1(1);
SELA1(1);
SELB1(1);
nRST1(1);
nRST2(1);
OE1(0);
SELA1(0);
SELB1(1);
cnt1 = PDL_Read();
SELA1(1);
SELB1(1);
cnt2 = PDL_Read();
SELA1(0);
SELB1(0);
cnt3 = PDL_Read();
SELA1(1);
SELB1(0);
cnt4 = PDL_Read();
OE1(1); rossih 发表于 2014-6-30 13:08
你好,我用的是4*模式。CNTDECx的信号是正常的。但是U/Dx信号不正常,不知道为什么?
程序没应该没问题,现 ...
在下面两条语句间延时25ms左右看看,你可以参考下官方的参考程序。我开始没有延时,也读不出数据
nRST2(1);
OE1(0);
至于U/Dx信号不正常,感觉很奇怪。
mark,伺服电机,备用 还是喜欢用德国的,除了伺服放大器麻烦一点。 检杳一下电源怎么样,原来碰过坏伺服的和谐波有关,当然各地电网情况不同,加隔离变就好了。
页:
[1]