大家好,我是『芯知识学堂』的SingleYork,前一篇文章给大家介绍了“SYK-0806-A2S1 工业自动化控制之【11-步进电机转动指定圈数】”,这一篇中,笔者要给大家介绍如何让步进电机实现精确定位。
其实,这一讲内容跟上一讲比较类似,最大的区别就是电机带负载时的位移跟传动机构有关,所以大家要学会不同的传动机构如何计算距离。笔者以下图所示最常见的同步带传动结构来进行讲解:
假设,如上图所示,电机细分为800,同步带轮的直径为30mm,想要让工件M在同步带上移动1000mm,那么需要给电机发送多少个脉冲?
刚接触这块的小伙伴们乍一看是不是感觉有点懵?别慌,我们来一步一步分析。
首先,同步带是跟同步带轮连在一起的,工件是在同步带上,那么工件所移动的距离即是同步轮在同步带上转动的距离。我们现在知道了同步带轮的直径为30mm,那么,同步带轮转一圈距离就是同步带轮的周长,根据圆的周长计算公式:c=πd,这里的d即使30mm,π取3.14,那么周长c=3.14*30mm。
接下来分析电机,已知电机细分为800,即电机转一圈需要800个脉冲,那么,一个脉冲同步带轮转动的距离为:L=3.14*30/800mm。
那么,要让同步带轮移动1000mm的距离,所需要的脉冲数就是:M0_Max_PUL = 1000/(3.14*30/800mm)个,这里我们不用直接计算出来,可以直接将算是写到程序中即可:
- #define M0_Max_PUL 1000/(3.14*30/800) //电机运行1000mm所需要的脉冲数
复制代码
弄清楚了这个计算的方法,代码就简单了,跟上一讲代码一样,笔者就不逐一分析了,直接将app.c文件中的完整代码贴出来了,相信大家一看就明白了:
复制代码
好了,关于使用本节内容笔者就介绍到这里了,有疑问的小伙伴们可以给笔者留言或者直接参与评论,下一节笔者将给大家介绍“串口的基本使用”,详见“SYK-0806-A2S1 工业自动化控制之【13-串口收发单个字符】”,感谢大家的支持!
本章附件:
【STC15系列】SYK-0806-A2S1- 12-步进电机精确定位.rar
(68.11 KB, 下载次数: 2)
|