打印

问下电机精确控制的问题

[复制链接]
1294|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lx911gt|  楼主 | 2014-4-22 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在用单片机控制直流电机带一个物体移动,用电位器采样获知物体当前处在的位置,但是如果预先给定一个值,当物体运行到给定值的地方后,电机会抖,如果降低了AD精度,物体有时候就会超过或没达到应该停在的位置,后来换用了编码器,效果好多了,但是总有个超过然后又往后退一点的过程,是因为直流电机惯性的原因吧。可是如果系统断电了,移动了物体,再上电,屏幕显示的仍然是没有移动物体前的位置,这个问题也好解决,多设几个参考点或者上电自动对下零就可以了,如果不设参考点和对零的话有办法解决这个问题么?

换成绝对值编码器虽然是个好办法但是价格太贵,问下各路高手有没有别的东西能代替绝对值编码器的?电位器不大想用了
沙发
yewuyi| | 2014-4-22 14:13 | 只看该作者
1、增加主供电回路掉电检测并增加后备蓄能电容或电池,在检测到主供电回路掉电后,MCU使用EEPROM或者FLASH等非易失存储体记录此时的马达位置,然后MCU转入待机状态,直至主供电回路再次上电后恢复工作。
2、没有必要使用绝对值编码器,有第一步的位置记录功能后,使用普通的相对值编码器即可完成。
3、运动过程中,应当根据距离目标位置的距离来控制马达加速或者减速,当接近目标位置时,马达应当慢慢减速,此时达到目标时,过冲就可以控制到很小。

使用特权

评论回复
板凳
lx911gt|  楼主 | 2014-4-22 15:02 | 只看该作者
yewuyi 发表于 2014-4-22 14:13
1、增加主供电回路掉电检测并增加后备蓄能电容或电池,在检测到主供电回路掉电后,MCU使用EEPROM或者FLASH ...

恩,你说的这些我现在基本都实现了,我是用了一些大电容,当拔掉电源时,有个让单片机延时断电的过程,大概也就不到2秒吧,将位置读取出来后存入EEPROM里,但是单片机没有转入待机状态,因为没有后备的蓄能装置,大电解放完电后单片机也就彻底断电了,上电后屏幕也能正常显示出断电后存入的位置读数。过冲现象也控制了,但个人总觉得不太理想,过冲位置并不多,外表看也看不出来明显动作,但是确实能听见直流电机减速时发出那种吱吱声,也就一两下,动作很小。现在主要的问题是彻底断电后如果我人为的将物体移动了,再次上电后显示的就不是现在的位置读数了,是上次断电时的读数,这点很讨厌,不像电位器那样检测一下当前电压算出当前物体的位置,编码器断电时动了系统也检测不到它曾经动过啊,如果是绝对值的话那就好说了,但是也贵的太离谱了吧,囧.....请问大神有什么好招法教教小弟呗:lol

使用特权

评论回复
地板
yewuyi| | 2014-4-22 15:11 | 只看该作者
lx911gt 发表于 2014-4-22 15:02
恩,你说的这些我现在基本都实现了,我是用了一些大电容,当拔掉电源时,有个让单片机延时断电的过程,大 ...

马达带动并且**位置的方式,也并不是不需要极限位置点检测、堵转检测、。

如果有极限位置点检测的话,如果发生人恶意改变了位置,导致**位置和实际位置不符时,此时就要通过极限位置检测来实现自动位置校正。

使用特权

评论回复
5
lx911gt|  楼主 | 2014-4-22 15:24 | 只看该作者
yewuyi 发表于 2014-4-22 15:11
马达带动并且**位置的方式,也并不是不需要极限位置点检测、堵转检测、。

如果有极限位置点检测的话, ...

哦,还是需要个上电重新对零,或者多加几个参考点是吧。

对了再请教个问题,我现在选的直流电机带动物体时,启动都会抖个几下然后才能平稳运行,是因为软启动没做好么?我是通过LM18200T驱动的直流电机,这个片子上有个PWM引脚,PWM值也是随时间一点点++的,是不是前期电压值太小不足以带动负载(个人理解像是死区之类的范围)一旦过了某个临界值后带负载就轻松了呢?这种情况是不是需要换个功率大点的电机?或者干脆就不用直流电机了?我这个东西也只是产品试验没有定型的,现在改的话要容易很多,机械部分还只是框架,如果机械部分完成了,改动电机这个地方可能会有点问题了

使用特权

评论回复
6
lin13a321| | 2014-4-22 15:29 | 只看该作者
我觉得你还不如,先给定一个值,让电机先到达实际位置,这个时候有惯性是吧,你再AD读一下电机实际位置,在把差值算出来,重新给电机一个位置,比如后退一点,这个位置很短,惯性就没了吧!!!!!!

使用特权

评论回复
7
yewuyi| | 2014-4-22 17:18 | 只看该作者
lx911gt 发表于 2014-4-22 15:24
哦,还是需要个上电重新对零,或者多加几个参考点是吧。

对了再请教个问题,我现在选的直流电机带动物体 ...

1、不要想当然,谁让你每次上电都对零了呢?
2、只要MCU在工作,就要始终检测传动机构是否达到极限位置,如果达到极限位置,则立即停止马达,然后在该位置附近低速寻找到最佳零点或最佳极点。
3、寻找到极限位置并判断出是零点还是极点后,校正MCU中光电编码器计数,实现系统异常状态的纠偏。
4、正常工作中如果没有发生人为恶意搞乱马达位置或者是MCU因为强干扰造成位置计数不准等异常现象时,这个寻找极限点并纠偏系统的代码根本就不会被执行。所以,自然就不要每次通电都先将马达对零这种操作。
5、使用PWM等来控制直流马达,要注意马达有一个最小启动力矩的问题,所以,PWM值不能从0%开始增加,应该赋予一个初始值,这个初始值的大小要看你系统负载的要求。
6、马达启动时的抖动也可能是你马达控制程序造成的,例如不恰当的位置计数程序,例如不恰当正反转控制等等都可能造成。

使用特权

评论回复
8
g_mark| | 2014-4-22 20:48 | 只看该作者
断电后,相对值编码器失效,无法记录工作台位置被移动的事件(脉冲数变化);
数控机床上采用相对值编码器的话,每次上电后必须令工作台回原位,即建议坐标原点;
位置控制在目标位置附近有抖动或过冲,都是因为速度过大。
位置控制工作过程是按照加速、稳速、减速、爬行、到位停止等阶段运行的。每段均有各自的加速度和脉冲数设定,最后一段有误差脉冲允许值设定。

使用特权

评论回复
9
闲来玩玩| | 2014-4-23 18:48 | 只看该作者
改步进不得了。

使用特权

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

本版积分规则

16

主题

62

帖子

0

粉丝