文章目录
openpnp - 修改伺服参数(base 10000步/mm),提高控制精度
概述
openpnp的控制精度,最小为0.01mm.
设备伺服设置的每圈步数也是对应于100步/mm.
这就导致齿隙矫正后的总体精度只有0.0138, 这就导致JOG面板控制没法精确的走0.01mm了。
尝试修改伺服参数/冰沙主板配置/openpnp设置,让运动的最高精度变为小于0.01mm(e.g. 0.001mm),这样JOG面板就能走出0.01mm的精确距离了。
上次基于20000步每圈改了一次(openpnp - 修改伺服参数(base 20000步/mm),提高控制精度), 最终的设备运行速度有点慢, 丝杠线性运动偏差的拟合度误差也没有每圈10000步高。
这次按照10000步每圈改一次。
笔记
伺服JAWD7502参数修改
JAWD7502为双轴同步控制(同时控制2个Y轴的同步),两个轴的参数要一起改。
刚性参数的修改
出厂值为13,设备当前值为10,修改为13
听厂家同学说,如果刚性参数小了,有可能发生过冲(走多了).
现在刚性10,也无异常,不过还是改为厂家默认的出厂值好些。
一般刚性参数小一些,是给电机带皮带用。
如果刚性参数大一些,是给电机带丝杠用。
参数如果设置的过大,会引起电机的啸叫。厂家给的刚性默认值,是适合一般场景的,不管是电机带皮带,还是电机带丝杠,都不会出问题。
圈数的步数修改
如果伺服是自己刚买回来,要配置的,还要考虑确定电子齿轮比。
电子齿轮比和伺服电机的编码器位数,减速比,丝杠导程有关。
现在我是在已有配置上改,那么我只需要关心电机转一圈的脉冲数就行。
原来的设置为2000,对应轴走100步/mm
现在我想让轴走500步/mm, 这个值就要改成10000
伺服IS620PS2R8I-IAB-C参数修改
IS620PS2R8I-IAB-C只控制一个X轴
必须先读取参数
如果不读取参数,就修改,有可能看到的是模板给出的初始值。
H00/H01要自己逐个勾选,才能读出。
其他参数页,可以一次性读出。
有效的值是暗黑色背景,说明这是从设备读出的值,且和出厂值不同。
无效的值或者和出厂值相同的值是白色的背景,是否为无效的值需要看读取结果的提示框信息。
刚性参数的修改
出厂值为12,设备当前值为10,修改为15(因为官方文档推荐丝杠的刚性参数为最小为15)
圈数的步数修改
要改的值在0507和0509这2个参数。
对于正常运行的设备0507是不用动的,这和编码器的位数有关。
只改0509就行
0509原来的设置为2000,对应轴走100步/mm
现在我想让轴走500步/mm, 这个值就要改成10000,这个值还没看怎么算的,厂家同学说的。
冰沙配置文件的修改
将配置文件中的X轴/Y轴的每mm步数改为1000
# ---------------------------------------------------------------------------------------------------------------------------------
# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
# See http://smoothieware.org/stepper-motors
alpha_steps_per_mm 500 # Steps per mm for alpha ( X ) stepper X轴步进电机每毫米步数
beta_steps_per_mm 500 # Steps per mm for beta ( Y ) stepper Y轴步进电机每毫米步数
gamma_steps_per_mm 100 # Steps per mm for gamma ( Z ) stepper Z轴步进电机每毫米步数
将设备和主板断电再上电
为了防止参数不生效,需要将设备和冰沙主板断电再上电
先退出openpnp软件。
关掉设备前面板的停机按钮
关掉设备电源总开关。
拔掉电脑上的USB冰沙主板线。
等几秒,再插入电脑上的USB冰沙主板线
打开设备电源总开关
启动设备前面板的停机按钮,使设备开机
启动openpnp软件
在openpnp软件中的参数修改
X/Y轴的每mm步数改为500
进给量和加速度可以根据实际速度进行调整,要调整成不吓人(运动起来速度飘逸自如, 声音悦耳/静音,没有刺耳的声音)的速度就行。
我在100步/mm时,进给量为1000, 加速度为500
修正基准值(步数/每圈)
将openpnp做到 bk_openpnp_2024_1028_1026_node1_基本轴里程碑完成_每圈500步.7z
将计量钢尺架在设备平台上,用顶部相机移动100mm为单位,来看误差,然后调整步数/每圈。
使大部分的100mm的节点是准的就行。
调整后的值如下
IS620PS2R8I-IAB-C
运动方向 | 790mm | 690mm | 590mm | 490mm | 390mm | 290mm | 190mm | 90mm |
---|---|---|---|---|---|---|---|---|
从左向右 | 0 | 0 | 0 | 0 | 0 | +0.05 | 0 | -0.1 |
从右向左 | 0 | 0 | 0 | 0 | 0 | +0.05 | 0 | -0.1 |
JAWD7502
运动方向 | 790mm | 690mm | 590mm | 490mm | 390mm | 290mm |
---|---|---|---|---|---|---|
从上到下 | 0 | +0.05 | +0.05 | +0.05 | 0 | -0.05 |
从下到上 | 0 | +0.05 | +0.05 | +0.05 | 0 | -0.05 |
实验了,当微调伺服每圈步数时,并不是让起点(0mm)和终点(700mm)完全拟合最好。
而是选择一个合适的每圈步数, 使整个行程上每100mm节点处的拟合度最好,这才是合适的每圈步数。
因为设备的工作区,一般在起点(x = 0, y = 0)到设备前中区域(x = 400, y = -400), 这个区域用于夹板子/贴片/home点归零/吸嘴同心度校验,行程尾巴部分反而不重要。
飞达摆放区也不重要。
只有板子载入后,需要用到的坐标区域最重要,只要这个区域的伺服运行拟合好了,贴片效果就会好。
关于丝杠精度
丝杠因为制作精度的问题,导程并不一定会特别准(e.g. 1520,1620的丝杠,走100mm, 多走了0.05 ~ 0.1mm)。
好丝杠的标准
- 丝杠运动行程的线性度好(e.g. 每走100mm, 都稳定的多走0.1mm. 那么走到400mm时,就多走了0.4mm)
- 丝杠运行行程的往复一致性好(e.g. 从左往右,到了某个100mm整除节点A,多走了0.2mm, 那么在丝杠最右边,再从右往左左,到了A节点位置,还是多走了0.2mm)
符合以上2点,就是好丝杠。
好丝杠如果导程和标称稍微差点(e.g. 标称导程为20mm, 实际可能为20.02mm), 那么这个导程导致的运动误差,是可以通过微调伺服每圈步数来调整的。
备注
改过的伺服参数值自己看一下,只要在该参数的有效范围内就行。
重新标定一次设备, 看看是否有效果
实验了,设备的最高速度被伺服参数限制住了。
现在进给量填的1000,进给量再给大了,也快不了多少。
但是进给量调低,可以降低设备的总(100%)速度。
加速度我只设置了进给速度的1半,为500。
矫正后
齿隙参数
丝杠都是一样的, X轴一根,2个Y轴一个轴一根。
可以看出双Y轴的伺服(JAWD7502)精度比单X轴的伺服(IS620P)高些。
底部相机高级校正完成后, 底部相机的十字在吸嘴中间
这次特意注意了一下,底部相机高级校正完成后,将NT1/NT2都带到底部相机中心,可以看到相机十字都在吸嘴内部的黑色区域内。
备注
速度慢点,对我影响不大。
速度慢了,运行的声音也更小了。
这次改为500步/mm,速度快了一些。
高级校验完,拿钢尺看了一下,伺服步进的精度和openpnp设备校验前一样, 并没有因为openpnp校验影响伺服控制丝杠的精度效果。
备注
通过实验, 用伺服默认的10000步数/每圈为基础,调出来的丝杠运动精度比较高。可以达到最多5个丝的误差
用伺服最高精度(1um)20000步数/每圈为基础,调出来的丝杠运动精度反而不如默认的10000步数/每圈。可以达到最多100mm行程/0.1mm的误差.
猜测伺服厂家设置的默认参数,都是他们精确标定过的。如果不是默认参数值,伺服控制精度的实际情况反而会变差。
并不是伺服参数设置的越精密,控制的就越精细。
所以,如果用伺服控制丝杠+电机,如果有可能,还是在厂家给的默认参数基础上,设计反推自己要采用的丝杠导程。
备注
做底部相机初次校验时,将NT1吸嘴降到了-9mm, 虽然比PCB平面高了11mm. 但是为了防止在底部相机高级矫正时运行范围过大,吸嘴和底部相机灯光附近的高度相碰撞,只能是-9mm, 不会和附近的任何东西相碰撞.
如果有条件,做底部相机初次校验时,最好将吸嘴降到PCB平面高度再校验,这样贴片时会很准。
因为机械安装总是存在偏差(垂直度差个0.1mm很正常), 所以做底部相机初次校验时,最好将吸嘴降到PCB平面高度再校验。
因为垂直度有偏差,就会导致从归零位置落到PCB高度时,X/Y坐标就差好多. 垂直度差个0.1mm, 吸嘴落下来20mm, X/Y就差了0.2mm.
将吸嘴落到PCB高度,再做底部相机初步校验,就可以保证在PCB高度没有误差。
这个要点在openpnp的UI的提示信息中有写,我以前就没注意看过,吃亏了。
现在的配置将吸嘴下降了-9mm, 还远未到PCB平面高度,可以看出,已经偏了0.1mm ~ 0.2mm之间
尝试将吸嘴落到底部相机上方的PCB高度(-21.5mm), 再回到归零位置,可以看到,偏差了大约0.4mm.
可以看到贴头安装的机械垂直度偏移间接影响到吸嘴的垂直度,偏差挺大的。
从这里看出,官方在底部相机初步校验时的提示信息"将吸嘴落到PCB平面的大概高度"是多么的重要。
所以有条件的话,还是将吸嘴落到PCB平面高度,再做底部相机高级校验。
如果没条件,也要向底部相机的方向多落一些高度(保证吸嘴平面移动不会撞到其他东西),然后再进行底部相机初步校验。
底部相机灯光的选择
底部相机灯光组件的高度尽量小,离吸嘴尽量远。
这次自己做了底部相机灯光(用1mm的不锈钢钣金 + COB灯带), 相机灯光组件的高度就可以降到PCB平面以下了,等后续改完灯光,就可以将吸嘴降到PCB平面高度再校验了。
在淘宝上有好多成品的相机环形灯光源,但是组件高度/厚度都很高,不满足自己设备的需求,只能自己做个简易灯光。
备注
如果载入坐标文件后,浏览元件时,误差达到0.1mm以上,这并不说明丝杠运动的不准。
因为板厂对焊盘的制作精度也有公差(+0.13mm/-0.08mm), 只要板子上大部分(95%)元件的顶部相机定位精度在5个丝,就说明丝杠的运动精度没问题。
对于个别定位不准的元件(由于板厂焊盘公差的问题引起的偏差), 可以单独修改这几个元件的坐标,也不麻烦。
如果所有元件的顶部相机定位都不准,那就要考虑以下点:
- PCB被夹具夹住后,是否在openpnp中的JOB页,准确进行了PCB板子的定位?
- 坐标文件本身不准(检查allegro出的坐标文件和PCB元件焊盘位置是否准?)
- 伺服对丝杠行程控制的线性拟合度不好(改伺服每圈步数, 最好在默认参数(e.g. 10000)基础上微调)
- 板厂焊盘制作引起的公差(只要板厂焊盘的公差一致性好(所有元件的焊盘位置都差了那么多(e.g. 都偏了0.08mm)), 就没有问题)
补充 - 换了X丝杠之后的参数调整
补充笔记 - openpnp - 丝杠距离误差的矫正