GrblHAL 1.1 归零配置问题及解决方案

一、问题导入

最近在研究grblHAL控制板,相对于基于arduino的grbl,grblHAL有着更出色的性能表现以及更高级的配置。我选择使用主芯片为STM32F401的grbl控制板,上位机选择开源的LaserGrbl,用来制作激光雕刻机。然而在实际配置中遇到不少问题。

其他配置不算难,与grbl一致,重点就几个方向、步数有关的参数。很快,只要不考虑机器绝对坐标,雕刻机就算完成了。

但是研究归零功能的时候,一直报错,不知道问题出在哪里。关键是网站关于grblHAL相关资料太少,没有足够多的案例。因此我在结合源码阅读和Github评论区案例基础上,花了几周的时间,终于搞懂了一些细节,整理了以下总结。

二、grblHAL与归零有关的setting参数配置

在Lasergrbl中,打开grbl配置即进去各类参数配置界面,比较坑的是界面中其中一部分参数没有解释介绍,所以花了一段时间从源码和实践中搞清楚作用。

  • $5 Invert limit pins
  • 翻转所有限位开关限位触发信号,mask格式(Lasergrbl显示是boolean格式,但是源码使用是mask,应当是grbl版本问题),这个配置应当因为电路板决定,是高电平触发还是低电平触发,默认是高电平触发。mask格式,即转化为八位二进制来表示,格式为00000ZYX。假如需要Y轴和X轴均反转,则需要的值为00000011,换算成10进制为3,那该项就需要填写3。
  • $22 Homing cycle enable
  • 使能归零功能,boolean类型,设置为1则使能。设置此选项后LaserGrbl将会在下方显示回零按钮。
  • $23 Homing direction invert
  • 翻转各个轴的回零运动方向,改参数与限位开关的安装位置有关。mask格式,即转化为八位二进制来表示,格式为00000ZYX。假如需要Y轴和X轴均反转,则需要的值为00000011,换算成10进制为3,那该项就需要填写3。
  • $24 Homing locate feed rate
  • 定位进给速度,mm/min,该速度是某一轴在精确定位时的移动速度,通常比第一次移动速度慢,发生在首次回零撞到限位开关后,拉开一定距离,然后再次向限位开关移动的速度。
  • $25 Homing search seek rate
  • 寻找限位开关移动速度,mm/min,收到回零指令后首次寻找开关而移动的速度,通常会比$24快一些。
  • $26 Homing switch debounce delay
  • 限位开关消抖,毫秒,类似于按键延时消抖,防止限位开关误触发,只有延时该时间后依然检测到触发才算有效。
  • $27 Homing switch pull-off distance
  • 回拉距离,在寻找限位开关移动结束后,即第一次碰到限位开关后,改轴立即回拉的距离,该距离需要足够释放限位开关的触发状态,跟结构有关,对于机械式限位开关,应该在6mm以上。
  • $43 Homing Locate Cycles
  • 回拉重新回零次数,整数,在寻找限位开关移动结束后,即第一次碰到限位开关后,回拉一定距离再次回零的次数,通常设置为1。有更高的精度要求可以设置为多次。注:该参数以及后面的参数lasergrbl就没有什么解释,甚至连标签都没有。
  • $44 Homing Cycle_1
  • 首个周期先回零的轴,从$44到$49分别对应Homing Cycle_1到Homing Cycle_6,用来设置回零先后顺序,格式为mask,加入先回Y轴,则就设为00000010(十进制2),填入2。可以同时填写多个轴(二进制的不同位置1),但是两个轴不能干涉,建议每个周期只归零一个轴。
  • $45 Homing Cycle_2
  • 第二个周期回零的轴,设置方法同$44,建议只填写一个轴。
  • $46 Homing Cycle_3
  • 第三个周期回零的轴,如果有三个轴,则填写第三个轴的mask。如果只有两个轴,比如我的激光雕刻机只有两个轴,那么$46-$49参数均填写0即可。
  • 三、其他问题

    如果像我一样,需要自行更改源码做grblHAL移植,还需要几点注意事项:

    1. 在关于board引脚映射的头文件,如果是基于现有的board文件引脚映射微调的,一定要注意更改的引脚与剩下的引脚不能冲突,否则会产生莫名其妙的问题,引脚初始化可能被覆盖,发挥不了作用。
    2. 引脚的给定不是随便指定的,参考源代码中样例板的文件,同一功能类型的端口(比如三个step,三个DIR,三个limit)需要设定为同一GPIO PORT,否则容易跟一些函数冲突。
    3. 几个引脚模式要注意,STEP_OUTMODE,DIRECTION_OUTMODE,LIMIT_INMODE,这个模式的定义关系到各个引脚初始化以及读取方式,如果某些具体功能不正常,需要检查这些定义。比如LIMIT_INMODE,如果选取的引脚是连续的三个PIN,比如PB6、PB7、PB8,那么LIMIT_INMODE可以选择GPIO_SHIFT6,可以高效率读取引脚状态,如果是无序的就得选择GPIO_BITBAND。

    作者:洛小白2233

    物联沃分享整理
    物联沃-IOTWORD物联网 » GrblHAL 1.1 归零配置问题及解决方案

    发表回复