标题: 小弟用PLC,控制步进电机PLC内部有当前坐标用来定位,用单片机怎样定位呢? [打印本页]

作者: 一扥的家    时间: 2019-3-16 11:45
标题: 小弟用PLC,控制步进电机PLC内部有当前坐标用来定位,用单片机怎样定位呢?
请教各位前辈
作者: hhh402    时间: 2019-3-16 13:03
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最大处,当最大限位开关打开时这就是步进电机的最大点。每次重新启动单片机都需要重新寻找0点和最大点。如果不想每次开机都重新寻找0点和最大点可以在单片机关机前将当前位置数据保存在EEPROM中,下次启动直接从EEPROM中读取当前位置数据。
作者: 一扥的家    时间: 2019-3-16 15:04
hhh402 发表于 2019-3-16 13:03
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控 ...

大哥你好 请问单片机该怎么记录当前位置呢  这个当前位置的数值从哪里记录
作者: 一扥的家    时间: 2019-3-16 15:40
hhh402 发表于 2019-3-16 13:03
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控 ...

那步进电机定位的当前值这个数据我怎么知道呢
作者: zhb2004xp    时间: 2019-3-16 21:40
一扥的家 发表于 2019-3-16 15:40
那步进电机定位的当前值这个数据我怎么知道呢

步进了多少步,这个是可以控制的
作者: hhh402    时间: 2019-3-16 23:40
单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最大处,当最大限位开关打开时这就是步进电机的最大点。记录这个最大值(设为a);整个步进电机的范围就是0-a;这时候步进电机的坐标就是a,假如我想让步进电机走到30%的地方那我就控制步进电机往最小处走ax70%步,这是步进电机的坐标就是ax30%;如果想走到40%的地方就控制电机往最大处走ax(40%-30%),这是坐标为ax40%;如果这个时候要关机,就将当前坐标ax40%写入EEPROM中,下次重启读取EEPROM中数据就可以知道当前坐标为ax40%
作者: 一扥的家    时间: 2019-3-17 07:49
hhh402 发表于 2019-3-16 23:40
单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最 ...

所以说走到最大的点这个值怎么计算,PLC我知道有系统已经提供的当前坐标,单片机肯定是自己计算,那该怎么计算呢
作者: 一扥的家    时间: 2019-3-17 07:49
zhb2004xp 发表于 2019-3-16 21:40
步进了多少步,这个是可以控制的

怎么控制呢,有没有以前做过的案例推荐给小弟看看
作者: hhh402    时间: 2019-3-17 10:06
步进电机走到0后,单片机控制电机往最大方向走,每走一步累加器+1,同时检测检测最大限位开关信号,当第一次检测到最大限位开关信号时累加器的数值就是最大值。
作者: 一扥的家    时间: 2019-3-17 11:09
hhh402 发表于 2019-3-17 10:06
步进电机走到0后,单片机控制电机往最大方向走,每走一步累加器+1,同时检测检测最大限位开关信号,当第一 ...

以ULN2003为例,正转时依次动作0X01 0X02 0X04 0X08 当动作完以后计数值计1,走到最大是用code存入芯片内部,此时的计数值就是最大坐标 当反转时动作0X08 0X04 0X02 0X01 4个动作完以后减1  我理解的意思对吗
作者: 一扥的家    时间: 2019-3-17 12:18
zhb2004xp 发表于 2019-3-16 21:40
步进了多少步,这个是可以控制的

以ULN2003为例,正转时依次动作0X01 0X02 0X04 0X08 当动作完以后计数值计1,走到最大是用code存入芯片内部,此时的计数值就是最大坐标 当反转时动作0X08 0X04 0X02 0X01 4个动作完以后减1  我理解的意思对吗
作者: hhh402    时间: 2019-3-17 12:43
对的,坐标的原点就是最小值0,最大值就是a,也可以用百分比表示

坐标.JPG (11.29 KB, 下载次数: 31)

坐标.JPG

作者: hhh402    时间: 2019-3-17 12:59
完成一次正转就+1,完成一次反转就-1,需要注意的是运行一段时间后需要进行0位校准,避免步进电机出现丢步时的错误,具体做法是反转a+10步(有最小限位开关不会出问题),这时就是真正0点。然后在正传回到你需要的地方。太长时间不做0位校准有出错的风险。
作者: 一扥的家    时间: 2019-3-17 13:44
hhh402 发表于 2019-3-17 12:59
完成一次正转就+1,完成一次反转就-1,需要注意的是运行一段时间后需要进行0位校准,避免步进电机出现丢步 ...

明白了 多谢多谢 好人一生平安




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1