参考:
https://www.zhihu.com/question/20330720
https://zhuanlan.zhihu.com/p/30553006
https://www.cnblogs.com/soroman/archive/2006/07/27/509602.html
https://blog.csdn.net/tlvc/article/details/4913397
https://blog.csdn.net/u010141928/article/details/79514514
往期回顾:
第一篇:grbl控制3轴机械臂 原理 实现 (一) 之2D机械臂模拟及实现
第二篇:grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现
步进电机

这里机械臂上所用的步进电机是常用的42步进电机,每个电机控制一个关节,步进角度1.8度,全步模式下,200个脉冲走360度。这里我们在步进电机上面加了减速器,减速比是1:10,即转子真正走一圈是要2000个脉冲,每个脉冲是走0.18度。
前面我们用运动学逆解求出了机械臂的三个角度,那么我们让机械臂对应的电机转动所求得的角度就能得到机械臂的最终姿态了。由于是转动固定角度,要最终姿态保持和预料的一样的话,那么机械臂的初始位置就很重要,要确保机械臂的初始位置已知与准确。比如,大臂的初始位置处于30度,最终姿态是要跑到60度的位置,即步进电机要增加30度,如果初始位置不是处于30度的位置,那么增加30度后最终位置就不会是60度。所以我们在机械臂上电初始化时,就要有个变量保存三个角度的值,以及一个初始位置的校准,确保实际机械臂的角度和变量中的角度值是对应与准确的。
知道上面的知识后,那么要控制机械臂就简单了。说白了就是控制X,Y,Z这3个电机走相应的角度。这里与原版的笛卡尔坐标系控制电机就有点不一样了,在笛卡尔坐标系下,每个电机都对应一个轴,要走到对应的坐标点,分别给对应轴对应的值就行了。比如坐标系的目标点在(0,0,10),那么只要Z轴电机移动10就行了。
而机械臂要走空间坐标系的话就不是这种对应关系,更具逆解的值,要对应的操作3个电机移动不同的角度。所以我们这里要做一些相应的转换。将距离、角度、步数(步进电机要走的步数,即脉冲数)对应起来。
公式: 此轴总共要走的脉冲数 = 角度 * 多少脉冲每1度
这里角度我们已经知道了,而多少脉冲每1度(根据电机驱动设置的细分值,和对应电机的步进角度,以及减速器决定)举例:如果电机的细分为全步,就是1细分,步进角度为1.8度,减速器为1:10。
那么 一个脉冲所走度数 = 细分*步进角度*减速比
多少脉冲每1度 = (360度 / (细分*步进角度*减速比)) / 360度
代入即得 得出值是5.5555555555....
由此得出每个轴要走的脉冲数,控制电机走对应的脉冲就行了。
关于所走的距离,可以通过运动学正解求出

本文围绕GRBL控制3轴机械臂展开,先介绍了机械臂步进电机的参数及控制方法,包括角度、脉冲数的转换。接着阐述插补概念,详细介绍直线插补的DDA和Bresenham算法,圆弧插补的直线逼近法,圆插补的中点画圆法及改进的Bresenham算法,最后提及GRBL源码修改以驱动机械臂。
8116

被折叠的 条评论
为什么被折叠?



