说明:本次采用的是v1.1h版的GRBL,默认开启模拟主轴功能,默认管脚定义如下
13 | Spindle direction |
12 | Z limit |
11 | Spindle EN |
10 | Y limit |
9 | X limit |
关于上拉电阻和下拉电阻的说明_zhigedali的博客-优快云博客
采用内部上拉电阻功能,针对NC和NO开关,接线方式如下:
说明:
对于NC开关,开关串联,常态下管脚为低电平,如果碰到一个开关,则电平就会被拉高,且一旦线路有断开的情况,立马就能检测到,更安全。
对于NO开关,开关并联,常态下管脚为高电平,如果碰到一个开关,则电平就会被拉低,该接线方式虽然简单,但是却无法检测线路是否有断开状态。
如何解决限位开关瞬间动作时的高低压电平抖动问题
由于限位开关的机械特性,它并不是简单地开关,在波形上看,开关瞬间有剧烈的抖动,高低电平可能会出现好多次,这会导致机器做出错误响应,对此有两种解决办法:
硬件防抖:可以在开关信号输入到Arduino前进行低通滤波,因为开关抖动频率相对开关方波频率高得多,所以加入低通滤波会使波形变得平缓。可以用最简单的RC滤波来实现。如外接一个4.7K的电阻到5v,再接一个100nF的电容到GND,额外的上拉电阻和电容有明显的抑制噪声的作用。
软件防抖:可以在第一次收到开关变化的信号时,添加一个短暂延时(几十毫秒),观察这段时间的累积结果。Grbl是用看门狗定时器来完成这部分工作的,这一部分功能是在limits.c中实现。部分代码注释如下