这章简单讲述下机械臂的原理,我这里要做的是并联臂,这是在工业中使用的非常多的一种手臂,还有一种是关节式的机械臂,相对与并联臂灵活度更高,但是成本和操作难度更大。
手臂本质是一种几何解算,无论是并联臂还是关节臂,为了达到目标位置可以分别用两种方案——自动解算和手工编程。自动解算对机械臂的上位机也就是控制台的要求很高,当然也可以放在下位机,我们的marlin固件使用sd卡加工时读取g代码来实现脱机打印本质上就是将自动解算放在单片机中,在笛卡尔坐标系中对坐标解算要求不高。
atmega2560就能胜任低速的解算,但是手臂因为多解性,2560有时候并不能有效的解算,特别是我第一次制作手臂时没有经验我拿了块2012版本的2560,那块2560还在使用8位的mcu。。。还没有启动就死机了,后面我换了16位的mcu才勉强动起来;还有一种方案是手工编程,这种方法实际上正常工业生产中使用的最多的方案,自动编程更多的应用在高灵活场景,手工编程本质就是提前准备好机械臂运动所需要的一切,对控制台和下位机要求低非常多。
但是随着工厂的技术水平不断的提升,技术更新换代,精度的不断提高,工厂对机械臂的要求越来越高,完全手工编程已经没办法满足工厂的需求了,因此诞生了半预制编程,简单来说就是动作的主体是提前编程完成,到达目标位置时再进行盈补,可以有效的减少对主板和上位机的性能的要求,但是这就要涉及机器视觉和人工智能了,毕竟白条条也是成本,对我这个编程苦手来说并不友好。
然后是手臂的数学模型,为了方便全电子方向的极客方便理解,我配了个简单的图,源文件我会放在附件里面,要用GeoGebra来打开模拟(这是一个数学几何画板,挺好玩的,对于喜欢这些的人来说)简单的理解下就是通过2个固定的驱动点来驱动。原理简单看下,基本上是初中数学的水平。通过数学模型可以非常明显的看到同一结果有大量的解,那么就意味着我们的328p可能会撑不住运算的压力,即使能够撑住,极端不稳定的控制效果对我们来说也是不能接受的。
关于步进电机如何驱动的问题,简单解释下就是mcu提供pwm信号,驱动驱动芯片,解算出步进电机需要的脉冲型号,这样的解释是极度不严谨的,但是为了方便简单理解也只能这样了,具体可以看看这个帖子,是步进电机详细原理和应用还包括4988的讲解。
|