找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3077|回复: 13
收起左侧

小弟用PLC,控制步进电机PLC内部有当前坐标用来定位,用单片机怎样定位呢?

[复制链接]
ID:490006 发表于 2019-3-16 11:45 | 显示全部楼层 |阅读模式
请教各位前辈
回复

使用道具 举报

ID:491577 发表于 2019-3-16 13:03 | 显示全部楼层
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最大处,当最大限位开关打开时这就是步进电机的最大点。每次重新启动单片机都需要重新寻找0点和最大点。如果不想每次开机都重新寻找0点和最大点可以在单片机关机前将当前位置数据保存在EEPROM中,下次启动直接从EEPROM中读取当前位置数据。
回复

使用道具 举报

ID:490006 发表于 2019-3-16 15:04 | 显示全部楼层
hhh402 发表于 2019-3-16 13:03
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控 ...

大哥你好 请问单片机该怎么记录当前位置呢  这个当前位置的数值从哪里记录
回复

使用道具 举报

ID:490006 发表于 2019-3-16 15:40 | 显示全部楼层
hhh402 发表于 2019-3-16 13:03
步进电机本身是没有定位的,需要定位时要使用两个限位开关,最大、最小处各一个限位开关。单片机启动时先控 ...

那步进电机定位的当前值这个数据我怎么知道呢
回复

使用道具 举报

ID:234075 发表于 2019-3-16 21:40 | 显示全部楼层
一扥的家 发表于 2019-3-16 15:40
那步进电机定位的当前值这个数据我怎么知道呢

步进了多少步,这个是可以控制的
回复

使用道具 举报

ID:491577 发表于 2019-3-16 23:40 | 显示全部楼层
单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最大处,当最大限位开关打开时这就是步进电机的最大点。记录这个最大值(设为a);整个步进电机的范围就是0-a;这时候步进电机的坐标就是a,假如我想让步进电机走到30%的地方那我就控制步进电机往最小处走ax70%步,这是步进电机的坐标就是ax30%;如果想走到40%的地方就控制电机往最大处走ax(40%-30%),这是坐标为ax40%;如果这个时候要关机,就将当前坐标ax40%写入EEPROM中,下次重启读取EEPROM中数据就可以知道当前坐标为ax40%
回复

使用道具 举报

ID:490006 发表于 2019-3-17 07:49 | 显示全部楼层
hhh402 发表于 2019-3-16 23:40
单片机启动时先控制步进电机走到最小处,当最小限位开关打开时这就是步进电机的0点;再控制步进电机走到最 ...

所以说走到最大的点这个值怎么计算,PLC我知道有系统已经提供的当前坐标,单片机肯定是自己计算,那该怎么计算呢
回复

使用道具 举报

ID:490006 发表于 2019-3-17 07:49 | 显示全部楼层
zhb2004xp 发表于 2019-3-16 21:40
步进了多少步,这个是可以控制的

怎么控制呢,有没有以前做过的案例推荐给小弟看看
回复

使用道具 举报

ID:491577 发表于 2019-3-17 10:06 | 显示全部楼层
步进电机走到0后,单片机控制电机往最大方向走,每走一步累加器+1,同时检测检测最大限位开关信号,当第一次检测到最大限位开关信号时累加器的数值就是最大值。
回复

使用道具 举报

ID:490006 发表于 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  我理解的意思对吗
回复

使用道具 举报

ID:490006 发表于 2019-3-17 12:18 | 显示全部楼层
zhb2004xp 发表于 2019-3-16 21:40
步进了多少步,这个是可以控制的

以ULN2003为例,正转时依次动作0X01 0X02 0X04 0X08 当动作完以后计数值计1,走到最大是用code存入芯片内部,此时的计数值就是最大坐标 当反转时动作0X08 0X04 0X02 0X01 4个动作完以后减1  我理解的意思对吗
回复

使用道具 举报

ID:491577 发表于 2019-3-17 12:43 | 显示全部楼层
对的,坐标的原点就是最小值0,最大值就是a,也可以用百分比表示
坐标.JPG
回复

使用道具 举报

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

使用道具 举报

ID:490006 发表于 2019-3-17 13:44 | 显示全部楼层
hhh402 发表于 2019-3-17 12:59
完成一次正转就+1,完成一次反转就-1,需要注意的是运行一段时间后需要进行0位校准,避免步进电机出现丢步 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表