// Enables and configures parking motion methods upon a safety door state. Primarily for OEMs
// that desire this feature for their integrated machines. At the moment, Grbl assumes that
// the parking motion only involves one axis, although the parking implementation was written
// to be easily refactored for any number of motions on different axes by altering the parking
// source code. At this time, Grbl only supports parking one axis (typically the Z-axis) that
// moves in the positive direction upon retracting and negative direction upon restoring position.
// The motion executes with a slow pull-out retraction motion, power-down, and a fast park.
// Restoring to the resume position follows these set motions in reverse: fast restore to // 拉出位置,超时加电,然后以 较慢的拉出速度跳回原始位置。 // 注意:仍在进行中。机器坐标必须在所有负空间中, // 在启用 HOMING_FORCE_SET_ORIGIN 的情况下不起作用。停车运动也只在 // 正方向移动。 // #define PARKING_ENABLE // 默认禁用。取消注释以启用
// Configure options for the parking motion, if enabled.
我刚刚一直在做 grbl。
我需要帮助才能在没有 Z 轴的情况下进行归位。
我无法归位。
我目前只有 xy 轴连接到板上。此外,限位开关仅连接到 xy 轴。
我在为 $H 归位时遇到以下错误
如果即使未连接 z 轴也开始归位,则 z 轴值增加并且 alram 9 显示在 xy 轴上。
这是我的 grbl 配置
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=1
$22=1
$23=0
$24=200.000
$25=2000.000
$ 26 = 250
$ 27 = 1.000
$ 30 = 1000
$ 31 = 0
$ 32 = 0
$ 100 = 250.000
$ 101 = 250.000 $ 102 =
250.000 $ 110
= 500.000 = 500.000
$ 111 = 500.000 $
112 = 500.000 200.000
这是我的 config.h 源代码
/*
config.h – Grbl 的编译时配置
部分
版权所有 (c) 2012-2016 Sungeun K. Jeon for Gnea Research LLC
版权所有 (c) 2009-2011 Simen Svale Skogsrud
Grbl 是免费软件:您可以根据自由软件基金会
发布的 GNU 通用公共许可证条款重新分发和/或修改它,许可证
版本 3,或
(由您选择)任何更新版本。
Grbl 的分发是希望它有用,
但不提供任何保证;
甚至没有针对特定用途的适销性或适用性的默示保证。有关详细信息,请参阅
GNU 通用公共许可证。
您应该
随 Grbl 一起收到 GNU 通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/。
*/
// 此文件包含 Grbl 内部系统的编译时配置。在大多数情况下,
// 用户不需要直接修改这些,但它们是出于特定需要,即
// 性能调整或针对非典型机器进行调整。
// 重要提示:此处的任何更改都需要完全重新编译源代码才能传播它们。
#ifndef config_h
#define config_h
#include “grbl.h” // 用于 Arduino IDE 兼容性。
// 定义 CPU 引脚映射和默认设置。
// 注意:OEM 可以避免维护/更新 defaults.h 和 cpu_map.h 文件的需要,并且只使用
// 一个配置文件,方法是将其特定的默认值和引脚映射放在该文件的底部。
// 如果这样做,只需注释掉这两个定义并查看下面的说明。
#define DEFAULTS_GENERIC
#define CPU_MAP_ATMEGA328P // Arduino Uno CPU
// 串口波特率
// #define BAUD_RATE 230400
#define BAUD_RATE 115200
// 定义实时命令特殊字符。这些字符是直接从
// 串行读取数据流中“挑选出来”的,不会传递给 grbl 行执行解析器。选择
不存在且不得存在于流式 g 代码程序中的字符。
// 如果每个用户设置可用,则可以使用 ASCII 控制字符。此外,扩展的 ASCII 代码 (>127),从来
不在 // g 代码程序中,可能会被选择用于接口程序。
// 注意:如果更改,请手动更新 report.c 中的帮助消息。
#define CMD_RESET 0x18 // ctrl-x。
#define CMD_STATUS_REPORT ‘?’
#define CMD_CYCLE_START ‘~’
#define CMD_FEED_HOLD ‘!’
// 注意:所有覆盖实时命令必须在扩展的 ASCII 字符集中,从
字符值 128 (0x80) 开始到 255 (0xFF)。如果实时命令的正常集,
//例如状态报告、进给保持、复位和循环启动,被移动到扩展集
//空间,serial.c 的 RX ISR 将需要修改以适应变化。
// #define CMD_RESET 0x80 //
#define CMD_STATUS_REPORT 0x81
// #define CMD_CYCLE_START 0x82
// #define CMD_FEED_HOLD 0x83
#define CMD_SAFETY_DOOR 0x84
#define CMD_JOG_CANCEL 0x85
#define CMD_DEBUG_REPORT 0x86 // 只有当调试报告启用时, ‘ 牙套。
#define CMD_FEED_OVR_RESET 0x90 // 将进给覆盖值恢复为 100%。
#define CMD_FEED_OVR_COARSE_PLUS 0x91
#define CMD_FEED_OVR_COARSE_MINUS 0x92
#define CMD_FEED_OVR_FINE_PLUS 0x93
#define CMD_FEED_OVR_FINE_MINUS 0x94
#define CMD_RAPID_OVR_RESET 0x95 // 将快速覆盖值恢复为 100%。
#define CMD_RAPID_OVR_MEDIUM 0x96
#define CMD_RAPID_OVR_LOW 0x97
// #define CMD_RAPID_OVR_EXTRA_LOW 0x98 //不支持
#define CMD_SPINDLE_OVR_RESET 0x99 // 将主轴覆盖值恢复为 100%。
#define CMD_SPINDLE_OVR_COARSE_PLUS 0x9A
#define CMD_SPINDLE_OVR_COARSE_MINUS 0x9B
#define CMD_SPINDLE_OVR_FINE_PLUS 0x9C
#define CMD_SPINDLE_OVR_FINE_MINUS 0x9D
#define CMD_SPINDLE_OVR_STOP 0x9E
#define CMD_COOLANT_FLOOD_OVR_TOGGLE 0xA0
#define CMD_COOLANT_MIST_OVR_TOGGLE 0xA1
// 如果启用归位,归位初始化锁定在上电时将 Grbl 设置为警报状态。这会强制
// 用户在执行任何其他操作之前执行归位循环(或覆盖锁定)。//这
主要是提醒用户回家的安全功能,因为 Grbl 不知道位置。
#define HOMING_INIT_LOCK // 注释禁用
// 使用位掩码定义归位循环模式。归位循环首先执行搜索模式
// 以快速接合限位开关,然后是较慢的定位模式,并以短暂的
// 拉动动作结束以脱离限位开关。以下 HOMING_CYCLE_x 定义
按 // 从后缀 0 开始的顺序执行,并仅完成指定轴的归位例程。如果
//定义中省略了一个轴,它不会回家,系统也不会更新它的位置。
// 这意味着这允许使用非标准笛卡尔机器的用户,例如车床(x 然后 z,
// 没有 y),根据他们的需要配置归位循环行为。
// 注意:归位循环旨在允许共享限制引脚,如果轴不在同一个
// 循环中,但这需要在 cpu_map.h 文件中更改一些引脚设置。例如,默认归位
//循环可以与 X 或 Y 限制引脚共享 Z 限制引脚,因为它们处于不同的循环中。
// 通过共享一个引脚,可以释放宝贵的 IO 引脚用于其他目的。理论上,所有轴限制引脚
// 可以减少到一个引脚,如果所有轴都以单独的周期归位,反之亦然,所有三个轴
// 在单独的引脚上,但在一个周期内归位。另外,需要注意的是,硬限制的功能
//不会受到引脚共享的影响。
// 注意:为传统的 3 轴数控机床设置默认值。Z 轴首先清除,然后是 X 和
Y。//#define HOMING_CYCLE_0 (1<<Z_AXIS) // 要求:首先移动 Z 以清除工作区。
#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) // 可选:然后同时移动 X、Y。
// #define HOMING_CYCLE_2 // 可选:取消注释并添加轴掩码以启用
// 注意:以下是为 2 轴机器设置归位的两个示例。
//#define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) // 与 COREXY 不兼容:在一个周期内同时归位 XY。
#define HOMING_CYCLE_0 (1<<X_AXIS) // COREXY 兼容:第一个家 X
#define HOMING_CYCLE_1 (1<<Y_AXIS) // COREXY 兼容:然后家 Y
// 在机器最初点动到限位开关后执行的归位循环数。
// 这有助于防止超调并提高可重复性。这个值应该是 1 或
// 更大。
#define N_HOMING_LOCATE_CYCLE 1 // 整数 (1-128)
//启用单轴归位命令。$HX、$HY 和 $HZ 用于 X、Y 和 Z 轴归位。完整的归位
// 循环仍由 $H 命令调用。默认情况下禁用。它仅用于解决
// 需要在两轴和三轴机器之间切换的用户。这实际上是非常罕见的。
// 如果你有两轴机器,不要使用这个。相反,只需更改两轴的归位周期。
// #define HOMING_SINGLE_AXIS_COMMANDS // 默认禁用。取消注释以启用。
// 归位后,Grbl 默认将整个机器空间设置为负空间,这是典型的
// 对于专业 CNC 机器,无论限位开关位于何处。取消注释此
//定义以强制 Grbl 始终将机器原点设置在归位位置,尽管切换方向。
// #define HOMING_FORCE_SET_ORIGIN // 取消注释以启用。
// Grbl 在启动时执行的块数。这些块存储在 EEPROM 中,其中大小
// 和地址在 settings.h 中定义。使用当前设置,最多可以
// 存储和执行 2 个启动块。这些启动块通常用于
根据用户偏好设置 g 代码 // 解析器状态。
#define N_STARTUP_LINE 2 // 整数 (1-2)
// Grbl 为某些值类型打印的浮动小数点数。这些设置
// 由 CNC 机器中的现实和常见观察值确定。例如,位置
// 值不能小于 0.001 毫米或 0.0001 英寸,因为机器在物理上不能比
// 更精确。因此,可能不需要更改这些,但如果需要,可以在此处更改。
// 注意:必须是从 0 到 ~4 的整数值。超过 4 个可能会出现舍入误差。
#define N_DECIMAL_COORDVALUE_INCH 4 // 以英寸为单位的坐标或位置值
#define N_DECIMAL_COORDVALUE_MM 3 // 以毫米为单位的坐标或位置值
#define N_DECIMAL_RATEVALUE_INCH 1 // 以英寸/分钟为单位的速率或速度值
#define N_DECIMAL_RATEVALUE_MM 0 // 以毫米/分钟为单位的速率或速度值
#define N_DECIMAL_SETTINGVALUE 3 // 浮点设置值的小数
#define N_DECIMAL_RPMVALUE 0 // RPM 值以每分钟转数表示。
// 如果您的机器有两个平行连接到一个轴的限位开关,您将需要启用
// 此功能。由于这两个开关共享一个引脚,Grbl 无法判断
// 启用了哪个。此选项仅影响归位,如果使用限位,Grbl 将
// 发出警报并强制用户手动断开限位开关。否则,如果
每个轴都有一个 // 限位开关,请不要启用此选项。通过保持禁用状态,您可以
在限位开关上执行 // 归位循环,而不必将机器从其上移开。
// #define LIMITS_TWO_SWITCHES_ON_AXES
// 允许 GRBL 跟踪和报告 gcode 行号。启用这意味着计划缓冲区
// 从 16 增加到 15,以便为 plan_block_t 结构中的附加行号数据腾出空间
// #define USE_LINE_NUMBERS // 默认情况下禁用。取消注释以启用。
// 探测周期成功后,此选项通过自动生成的消息立即提供探测坐标的反馈。如果禁用,用户仍然可以
通过 Grbl ‘$#’ 打印参数访问最后一个探针 // 坐标。
#define MESSAGE_PROBE_COORDINATES // 默认启用。评论禁用。
// 通过 Arduino Uno 上的喷雾冷却剂 g 代码命令 M7 启用第二个冷却剂控制引脚
// 模拟引脚 4。仅当您需要第二个冷却剂控制引脚时才使用此选项。
// 注意:无论如何,模拟引脚 3 上的 M8 溢流冷却剂控制引脚仍将起作用。
// #define ENABLE_M7 // 默认禁用。取消注释以启用。
// 此选项使进给保持输入充当安全门开关。安全门在触发时
// 立即强制暂停进给,然后安全地使机器断电。恢复被阻止,直到
// 安全门重新接合。到时,Grbl 将重新启动机器,然后继续
//之前的刀具路径,就好像什么都没发生过一样。
// #define ENABLE_SAFETY_DOOR_INPUT_PIN // 默认禁用。取消注释以启用。
// 在安全门开关被切换和恢复后,此设置设置了开机延迟
// 在恢复主轴和冷却剂与恢复循环之间。
#define SAFETY_DOOR_SPINDLE_DELAY 4.0 // 浮动(秒)
#define SAFETY_DOOR_COOLANT_DELAY 1.0 // 浮动(秒)
// 启用 CoreXY 运动学。仅与 CoreXY 机器一起使用。
// 重要提示:如果启用归位,则必须将上面的归位循环#defines 重新配置为
// #define HOMING_CYCLE_0 (1<<X_AXIS) 和#define HOMING_CYCLE_1 (1<<Y_AXIS)
// 注意:此配置选项会改变运动X 和 Y 轴的操作原理
// 定义在 ( http://corexy.com/theory.html )。假设电机的定位和接线与
//描述的完全一致,否则,运动可能会朝奇怪的方向移动。Grbl 要求 CoreXY A 和 B 电机
//内部每毫米步数相同。
// #define COREXY // 默认禁用。取消注释以启用。
//根据掩码反转控制命令引脚的引脚逻辑。这实质上意味着您可以
在指定的引脚上使用 // 常闭开关,而不是默认的常开开关。
// 注意:顶部选项将屏蔽和反转所有控制引脚。底部选项是
// 仅反转两个控制引脚、安全门和复位的示例。有关其他位定义,请参见 cpu_map.h。
// #define INVERT_CONTROL_PIN_MASK CONTROL_MASK // 默认禁用。取消注释以禁用。
// #define INVERT_CONTROL_PIN_MASK ((1<<CONTROL_SAFETY_DOOR_BIT)|(1<<CONTROL_RESET_BIT)) // 默认禁用。
// 根据以下掩码反转选择限制引脚状态。这会影响所有限制引脚功能,
//例如硬限制和归位。但是,这与总体反转限制设置不同。
//此构建选项将仅反转此处定义的限制引脚,然后反转限制设置
//将应用于所有这些。当用户
在他们的机器上安装了一组混合的限位销时,这很有用 // 常开(NO)和常闭(NC)开关。
// 注意:请不要使用它,除非你有需要它的情况。
// #define INVERT_LIMIT_PIN_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)) // 默认禁用。取消注释以启用。
// 将主轴使能引脚从低电平禁用/高电平启用反转为低电平启用/高电平禁用。有用
// 对于一些预制的电子板。
// 注意:如果启用 VARIABLE_SPINDLE(默认),则此选项无效,因为 PWM 输出和
// 主轴启用组合到一个引脚。如果您需要此选项和主轴速度 PWM,
//取消注释下面的配置选项 USE_SPINDLE_DIR_AS_ENABLE_PIN。
// #define INVERT_SPINDLE_ENABLE_PIN // 默认禁用。取消注释以启用。
// 将选定的冷却剂针脚从低禁用/高启用反转为低启用/高禁用。有用
// 对于一些预制的电子板。
// #define INVERT_COOLANT_FLOOD_PIN // 默认禁用。取消注释以启用。
// #define INVERT_COOLANT_MIST_PIN // 默认禁用。注意:在 config.h 中启用 M7 喷雾冷却剂
// 当 Grbl 电源循环或使用 Arduino 重置按钮硬重置时,Grbl 默认启动时没有警报
。这是为了让新用户尽可能简单地开始使用 Grbl。当归位
// 启用并且用户安装了限位开关时,Grbl 将在警报状态下启动以指示
// Grbl 不知道其位置并在继续之前强制用户回家。此选项强制
// Grbl 始终初始化为 ALARM 状态,无论是否归位。此选项更适合
// 喜欢这种电源循环行为的 OEM 和 LinuxCNC 用户。
// #define FORCE_INITIALIZATION_ALARM // 默认禁用。取消注释以启用。
// 在上电或重置时,Grbl 将检查限位开关状态以确保它们
在初始化之前不处于活动状态。如果它检测到问题并且启用了硬限制设置,Grbl 将
// 简单地向用户发送消息以检查限制并进入警报状态,而不是闲置。Grbl
// 不会抛出警报消息。
#define CHECK_LIMITS_AT_INIT
// ———————————————- ————————————–
// 高级配置选项:
// 启用用于调试目的的代码。不用于一般用途,并且始终处于不断变化中。
// #define DEBUG // 取消注释以启用。默认禁用。
// 配置快速、进给和主轴倍率设置。这些值定义了最大和最小
// 允许的覆盖值以及每个接收到的命令的粗略和精细增量。请
// 注意每个定义后的描述中的允许值。
#define DEFAULT_FEED_OVERRIDE 100 // 100%。不要更改此值。
#define MAX_FEED_RATE_OVERRIDE 200 // 编程进给率的百分比 (100-255)。通常为 120% 或 200%
#define MIN_FEED_RATE_OVERRIDE 10 // 编程进给率的百分比 (1-100)。通常为 50% 或 1%
#define FEED_OVERRIDE_COARSE_INCREMENT 10 // (1-99)。通常为 10%。
#define FEED_OVERRIDE_FINE_INCREMENT 1 // (1-99)。通常为 1%。
#define DEFAULT_RAPID_OVERRIDE 100 // 100%。不要更改此值。
#define RAPID_OVERRIDE_MEDIUM 50 // 快速百分比 (1-99)。通常为 50%。
#define RAPID_OVERRIDE_LOW 25 // 快速百分比 (1-99)。通常为 25%。
// #define RAPID_OVERRIDE_EXTRA_LOW 5 //不支持快速百分比 (1-99)。通常为 5%。
#define DEFAULT_SPINDLE_SPEED_OVERRIDE 100 // 100%。不要更改此值。
#define MAX_SPINDLE_SPEED_OVERRIDE 200 // 编程主轴速度的百分比 (100-255)。通常为 200%。
#define MIN_SPINDLE_SPEED_OVERRIDE 10 // 编程主轴速度的百分比 (1-100)。通常为 10%。
#define SPINDLE_OVERRIDE_COARSE_INCREMENT 10 // (1-99)。通常为 10%。
#define SPINDLE_OVERRIDE_FINE_INCREMENT 1 // (1-99)。通常为 1%。
// 当执行 M2 或 M30 程序结束命令时,大多数 g 代码状态将恢复为默认值。
// 此编译时选项包括将进给、快速和主轴速度覆盖值恢复为
程序结束时的默认值。
#define RESTORE_OVERRIDES_AFTER_PROGRAM_END // 默认启用。评论禁用。
// Grbl v1.1 的状态报告更改,之后还删除了禁用/启用大多数数据的能力
// 来自报告的字段。这给 GUI 开发人员带来了问题,他们不得不管理多个场景
// 和配置。新报告样式的提高效率允许所有数据字段
// 被发送而没有潜在的性能问题。
// 注意:下面的选项仅在特殊
情况需要时提供禁用某些数据字段的方法,但请注意 GUI 可能依赖于此数据。如果禁用,它可能不兼容。
#define REPORT_FIELD_BUFFER_STATE // 默认启用。评论禁用。
#define REPORT_FIELD_PIN_STATE // 默认启用。评论禁用。
#define REPORT_FIELD_CURRENT_FEED_SPEED // 默认启用。评论禁用。
#define REPORT_FIELD_WORK_COORD_OFFSET // 默认启用。评论禁用。
#define REPORT_FIELD_OVERRIDES // 默认启用。评论禁用。
#define REPORT_FIELD_LINE_NUMBERS // 默认启用。评论禁用。
// 一些状态报告数据对于实时来说不是必需的,只是间歇性的,因为值不
// 经常改变。
以下宏配置在刷新关联数据并将其包含在状态报告中之前需要调用多少次状态报告。但是,如果其中一个值
// 发生变化,Grbl 会自动将此数据包含在下一个状态报告中,而不管当时的
// 计数是多少。这有助于减少与高频报告
// 和主动流式传输相关的通信开销。还有一个繁忙和空闲的刷新计数,它设置 Grbl
在它不做任何重要的事情时更频繁地发送 // 刷新。有了好的 GUI,这些数据就不需要了
// 经常刷新,大约几秒钟。
// 注意:WCO 刷新必须为 2 或更大。OVR 刷新必须为 1 或更大。
#define REPORT_OVR_REFRESH_BUSY_COUNT 20 // (1-255)
#define REPORT_OVR_REFRESH_IDLE_COUNT 10 // (1-255) 必须小于或等于忙碌计数
#define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
#define REPORT_WCO_REFRESH_IDLE_COUNT 1 // (1-255) 2-255) 必须小于或等于忙计数
// 加速管理子系统的时间分辨率。较高的数字提供更平滑的
// 加速,在以非常高的进给率运行的机器上尤其明显,但可能会对
// 性能产生负面影响。此参数的正确值取决于机器,因此建议
// 仅根据需要将其设置得尽可能高。近似成功值的范围很广,从 50 到 200 或更多。
// 注意:更改此值还会更改步段缓冲区中某个段的执行时间。
// 当增加这个值时,这会在段缓冲区中存储更少的总时间,反之亦然。确保
// 增加/减少步段缓冲区以解决这些变化。
#define ACCELERATION_TICKS_PER_SECOND 100
// 自适应多轴步进平滑 (AMASS) 是一项高级功能,顾名思义,
// 平滑多轴运动的步进。此功能可平滑运动,特别是在
10kHz 以下的低步//频率下,多轴运动的轴之间的混叠会导致可听见
的//噪音并震动您的机器。在更低的步进频率下,AMASS 适应并提供更好
的 // 步进平滑。有关 AMASS 系统工作的更多详细信息,请参阅 stepper.c。
#define ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING // 默认启用。评论禁用。
// 设置允许写入 Grbl 设置的最大步进速率。此选项启用错误
// 检查设置模块以防止设置值超过此限制。//最大
步进速率严格受 CPU 速度限制,如果
使用以 16MHz 运行 // 的 AVR 以外的其他东西,则会发生变化。
// 注意:目前禁用,如果闪存空间允许,将启用。
// #define MAX_STEP_RATE_HZ 30000 // 赫兹
// 默认情况下,Grbl 将所有输入引脚设置为正常高电平操作,并
启用其内部上拉电阻。这通过只需要一个接地开关来简化用户的接线,
//尽管它建议用户在低通滤波器中采取额外的接线步骤以减少
//由引脚检测到的电噪声。如果用户在 Grbl 设置中反转引脚,这只会翻转
//哪个高读数或低读数表示活动信号。在正常操作中,这意味着用户
// 需要连接一个常开开关,但如果反转,这意味着用户应该连接一个
// 常闭开关。
// 以下选项禁用内部上拉电阻,将引脚设置为正常低电平
// 操作,开关现在必须连接到 Vcc 而不是接地。这也翻转了
// 反转引脚 Grbl 设置的含义,其中反转设置现在意味着用户应该连接
// 常开开关,反之亦然。
// 注意:与该功能关联的所有引脚都被禁用,即 XYZ 限制引脚,而不是单个轴。
// 警告:当上拉被禁用时,这需要使用下拉电阻进行额外布线!
//#define DISABLE_LIMIT_PIN_PULL_UP
//#define DISABLE_PROBE_PIN_PULL_UP
//#define DISABLE_CONTROL_PIN_PULL_UP
// 设置应用刀具长度偏移的轴。假设主轴始终平行于
//选定的轴,刀具朝向负方向。换句话说,
从当前位置减去正 // 工具长度偏移值。
#define TOOL_LENGTH_OFFSET_AXIS Z_AXIS // 默认 z 轴。有效值为 X_AXIS、Y_AXIS 或 Z_AXIS。
// 为不同的 RPM 值启用可变主轴输出电压。在 Arduino Uno 上,主轴
//启用引脚将输出 5V 以实现最大 RPM,具有 256 个中间电平,禁用时为 0V。
// 注意:对 Arduino Unos 很重要!启用后,Z 限位引脚 D11 和主轴启用引脚 D12 切换!
// 可变主轴输出电压需要引脚 D11 上的硬件 PWM 输出。
#define VARIABLE_SPINDLE // 默认启用。评论禁用。
// 仅由可变主轴输出使用。这会强制 PWM 输出在启用时为最小占空比。
//当主轴被禁用时,PWM 引脚仍将读取 0V。大多数用户不需要此选项,但
// 它在某些情况下可能很有用。此最小 PWM 设置与主轴 rpm 最小
// 设置一致,例如 rpm max 到最大 PWM。
如果您需要 0V 禁用//和最小 PWM 为最小转速设置的电压之间的更大电压差,这很方便。此差异为每个 PWM 值 0.02V。因此,当
// 最小 PWM 为 1 时,只有 0.02 伏特单独启用和禁用。在 PWM 5 时,这将为 0.1V。//请
记住,随着最小 PWM 值的增加,您将开始失去 PWM 分辨率,因为您有更少的
// 总计 255 个 PWM 级别的范围更小,以发出不同的主轴速度信号。
// 注意:通过以下公式计算最小 PWM 的占空比:(% 占空比)=(SPINDLE_PWM_MIN_VALUE/255)*100
// #define SPINDLE_PWM_MIN_VALUE 5 // 默认禁用。取消注释以启用。必须大于零。整数 (1-255)。
// 默认情况下,在 328p(Uno)上,Grbl 将可变主轴 PWM 和启用组合到一个引脚中以帮助
// 保留 I/O 引脚。对于某些设置,这些可能需要是单独的引脚。此配置选项使用
// 主轴方向引脚 (D13) 作为单独的主轴使能引脚以及引脚 D11 上的主轴速度 PWM。
// 注意:此配置选项仅适用于启用 VARIABLE_SPINDLE 和 328p 处理器 (Uno)。
// 注意:如果没有方向引脚,M4 将没有引脚输出来指示与 M3 的差异。
// 注意:小心!Arduino 引导加载程序在加电时切换 D13 引脚。如果你用
// 一个程序员来烧录 Grbl(你可以使用一个备用的 Arduino 作为“Arduino 作为 ISP”。在网上搜索如何连接它。),
// 这个 D13 LED 切换应该消失。我们还没有测试过这个。请报告进展情况!
// #define USE_SPINDLE_DIR_AS_ENABLE_PIN // 默认禁用。取消注释以启用。
// 使用 USE_SPINDLE_DIR_AS_ENABLE_PIN 选项改变主轴启用引脚的行为。默认情况下,
如果主轴速度为零且 M3/4 处于活动状态, // Grbl 将不会禁用启用引脚,但仍将 PWM
// 输出设置为零。这允许用户知道主轴是否处于活动状态并将其用作附加控制
// 输入。但是,在某些用例中,用户可能希望启用引脚在主轴速度为零时禁用,并
// 当主轴速度大于零时重新启用。这个选项就是这样做的。
// 注意:需要启用 USE_SPINDLE_DIR_AS_ENABLE_PIN。
// #define SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED // 默认禁用。取消注释以启用。
// 启用此功能后,Grbl 会发回它收到的行的回显,该行已经过预解析(空格
// 已删除,大写字母,无注释)并将由 Grbl 立即执行。//回声不会
在行缓冲区溢出时发送,但应该发送给 Grbl 的所有正常行。例如,如果用户
// 发送行 ‘g1 x1.032 y2.45(测试评论)’,Grbl 将以 ‘[echo: G1X1.032Y2.45]’ 的形式回显。
// 注意:仅将其用于调试目的!!回显时,这会占用宝贵的资源并会影响
// 性能。如果正常操作绝对需要,串行写入缓冲区应该大大增加
//以帮助最小化串行写入协议中的传输等待。
// #define REPORT_ECHO_LINE_RECEIVED // 默认禁用。取消注释以启用。
// 最小规划器连接速度。设置规划器计划在
// 每个缓冲区块连接处的默认最小连接速度,除了从缓冲区的其余部分和末尾开始,它们始终为
// 零。该值控制机器通过路口的移动速度,而不考虑加速度
// 限制或相邻块线移动方向之间的角度。这对于不能
//容忍工具停留一瞬间的机器很有用,即 3d 打印机或激光切割机。如果使用,此值
//不应大于零或机器工作所需的最小值。
#define MINIMUM_JUNCTION_SPEED 0.0 //(毫米/分钟)
// 设置规划器允许的最小进给率。低于它的任何值都将设置为此最小值
//。这也确保计划的运动始终完成并解决任何浮点
// 舍入错误。虽然不推荐,但低于 1.0 毫米/分钟的值可能适用于
// 较小的机器,可能为 0.1 毫米/分钟,但您的成功可能因多种因素而异。
#define MINIMUM_FEED_RATE 1.0 //(毫米/分钟)
// 在精确弧形轨迹之前通过小角度近似进行的弧形生成迭代次数
// 使用昂贵的 sin() 和 cos() 计算进行校正。
如果弧生成的准确性存在问题,则此参数可能会降低,或者如果弧执行
// 因过多的触发计算而陷入困境,则可能会增加。
#define N_ARC_CORRECTION 12 // 整数 (1-255)
// arc G2/3 g 代码标准在定义上是有问题的。
当圆弧处于半圆 (pi) 或全圆 (2 pi) 时,基于半径的弧有可怕的数值// 错误。基于偏移的弧更准确
// 但当弧是全圆 (2 pi) 时仍然存在问题。
当基于偏移的圆弧被命令为整圆时,这定义了浮点问题,但
由于数值舍入和精度问题而被解释为极小的圆弧,机器 epsilon (1.2e-7rad)。
// 此定义值设置机器 epsilon 截止值以确定圆弧是否为整圆。
// 注意:调整此值时要非常小心。它应该总是大于 1.2e-7 但不能太大
// 比这大得多。默认设置应捕获大多数(如果不是全部)全弧错误情况。
#define ARC_ANGULAR_TRAVEL_EPSILON 5E-7 // 浮点数(弧度)
// 在停留期间执行的时间延迟增量。默认值设置为 50 毫秒,这提供了
// 大约 55 分钟的最大时间延迟,对于大多数应用程序来说已经足够了。增加
// 此延迟将线性增加最大停留时间,但也会降低
// 运行时命令执行的响应能力,例如状态报告,因为这些是在每个停留之间执行的
// 时间步长。另外,请记住,Arduino 延迟计时器对于长时间延迟不是很准确。
#define DWELL_TIME_STEP 50 // 整数 (1-255)(毫秒)
// 通过创建
//另一个中断(Timer2 比较)来管理方向引脚设置和相应步进脉冲之间的延迟。主 Grbl 中断(Timer1 比较)
//设置方向引脚,并且不会像在
//正常操作中那样立即设置步进器引脚。
Timer2 比较器接下来会在步进//脉冲延迟时间后触发以设置步进器引脚,并且 Timer2 溢出将完成步进脉冲,除非现在延迟
//步进脉冲时间加上步进脉冲延迟。(感谢 langwadt 的想法!)
// 注意:取消注释以启用。推荐的延迟必须 > 3us,并且在添加
// 用户提供的步进脉冲时间时,总时间不得超过 127us。上报成功
// 某些设置的值范围为 5 到 20us。
// #define STEP_PULSE_DELAY 10 // 以微秒为单位的步进脉冲延迟。默认禁用。
// 在任何给定时间规划器缓冲区中要规划的线性运动的数量。// Grbl 使用的绝大多数
RAM 都基于此缓冲区大小。仅在有额外
// 可用 RAM 时才增加,例如为 Mega2560 重新编译时。或者,如果 Arduino 开始
// 由于缺少可用 RAM 而崩溃,或者如果 CPU 在执行时无法跟上计划
// 新传入的动作,则减少。
// #define BLOCK_BUFFER_SIZE 16 // 取消注释以覆盖 planner.h 中的默认值。
// 控制步骤执行算法// 和规划器块之间的中间步骤段缓冲区的大小。
每个段都是在ACCELERATION_TICKS_PER_SECOND 定义的 // 固定时间内以恒定速度执行的一组步骤。它们的计算使得规划
器 // 块速度曲线被精确跟踪。
这个缓冲区的大小决定了其他 Grbl 进程有多少步// 执行提前期必须计算和做他们的事情
// 在必须返回并重新填充这个缓冲区之前,目前是大约 50 毫秒的步进移动。
// #define SEGMENT_BUFFER_SIZE 6 // 取消注释以覆盖 stepper.h 中的默认值。
// 要执行的串行输入流的行缓冲区大小。此外,控制
每个启动块的大小,因为它们每个都存储为这个大小的字符串。确保
// 考虑到 settings.h 中定义的内存地址处的可用 EEPROM 和
// 所需启动块的数量。
// 注意:除极端情况外,80 个字符不是问题,但行缓冲区大小
// 可能太小,g 代码块可能会被截断。正式地,g 代码标准
// 支持最多 256 个字符。
在未来的版本中,当我们知道可以重新投入多少额外的内存空间时,这个默认值将会增加。
// #define LINE_BUFFER_SIZE 80 // 取消注释以覆盖 protocol.h 中的默认值
//串口发送和接收缓冲区大小。接收缓冲区通常用作另一个流
// 缓冲区来存储传入的块,以便在 Grbl 准备好时进行处理。大多数流
// 接口将字符计数并跟踪每个块发送到每个块响应。因此,
如果流式传输需要更深的接收缓冲区并且
// 内存允许,则增加接收缓冲区。发送缓冲区主要处理 Grbl 中的消息。仅当发送大
// 消息并且 Grbl 开始停顿,等待发送其余消息时才增加。
// 注意:Grbl 在大约 0.5 毫秒内生成一个平均状态报告,但串行 TX 流在
// 115200 波特将花费 5 毫秒来传输典型的 55 个字符报告。最坏情况报告是
// 大约 90-100 个字符。只要串行 TX 缓冲区没有持续最大化,Grbl
// 就会继续高效运行。围绕最坏情况报告的大小调整 TX 缓冲区的大小。
// #define RX_BUFFER_SIZE 128 // (1-254) 取消注释以覆盖 serial.h 中的默认值
// #define TX_BUFFER_SIZE 100 // (1-254)
// 用于硬限位开关的简单软件去抖动功能。启用后,中断
// 监控硬限位开关引脚将使 Arduino 的看门狗定时器在
大约 32 毫秒的延迟后重新检查 // 限位引脚状态。这可以帮助 CNC 机器解决
// 有问题的硬限位开关的错误触发,但它不会解决
// 来自外部源的信号电缆上的电气干扰问题。建议首先
// 使用屏蔽信号电缆,其屏蔽层接地(旧 USB/计算机电缆
// 工作良好且价格便宜),并将低通电路连接到每个限制引脚。
// #define ENABLE_SOFTWARE_DEBOUNCE // 默认禁用。取消注释以启用。
// 在 Grbl 的检查模式下配置探测周期后的位置。禁用将
位置设置为探测目标,启用时将位置设置为起始位置。
// #define SET_CHECK_MODE_PROBE_TO_START // 默认禁用。取消注释以启用。
// 当处理器检测到引脚// 在硬限位 ISR 例程中发生变化时,强制 Grbl 检查硬限位开关的状态。默认情况下,Grbl 会
在任何引脚更改时触发硬限制 // 警报,因为弹跳开关会导致这样的状态检查
// 误读引脚。当触发硬限制时,它们应该是 100% 可靠的,这就是
// 默认禁用此选项的原因。仅当您的系统/电子设备可以保证
// 开关不会反弹时,我们才建议启用此选项。这将有助于防止
// 当机器脱离开关时触发硬限制。
// 注意:如果启用了 SOFTWARE_DEBOUNCE,则此选项无效。
// #define HARD_LIMIT_FORCE_STATE_CHECK // 默认禁用。取消注释以启用。
// 调整归位周期搜索和定位标量。这些是 Grbl 的
// 归位循环使用的乘数,以确保限位开关在循环的每个阶段都被接合和清除
。搜索阶段使用轴最大行程设置乘以 SEARCH_SCALAR 来
确定寻找限位开关的距离。一旦找到,定位阶段就会开始并
// 使用归位牵引距离设置乘以 LOCATE_SCALAR 以牵引并重新接合
// 限位开关。
// 注意:这两个值都必须大于 1.0 以确保正常运行。
// #define HOMING_AXIS_SEARCH_SCALAR 1.5 // 取消注释以覆盖 limits.c 中的默认值。
// #define HOMING_AXIS_LOCATE_SCALAR 10.0 // 取消注释以覆盖 limits.c 中的默认值。
// 启用“$RST= ”、“$RST=$”和“$RST=#”eeprom 恢复命令。在某些情况下,
// 这些命令可能是不受欢迎的。只需注释所需的宏即可将其禁用。
// 注意:请参阅 SETTINGS_RESTORE_ALL 宏以自定义
$RST=*命令。#define ENABLE_RESTORE_EEPROM_WIPE_ALL // ‘$RST= ‘ 默认启用。评论禁用。
#define ENABLE_RESTORE_EEPROM_DEFAULT_SETTINGS // ‘$RST=$’ 默认启用。评论禁用。
#define ENABLE_RESTORE_EEPROM_CLEAR_PARAMETERS // ‘$RST=#’ 默认启用。评论禁用。
// 定义在设置版本更改和
$RST=*命令时恢复的 EEPROM 数据。每当// Grbl 版本之间的设置或其他 EEPROM 数据结构发生变化时,Grbl 将自动
// 擦除和恢复 EEPROM。此宏控制擦除和恢复哪些数据。//这对于
需要保留某些数据的 OEM 特别有用。例如,BUILD_INFO 字符串可以
// 通过单独的 .INO 草图写入 Arduino EEPROM 以包含产品数据。更改此
// 宏以不恢复构建信息 EEPROM 将确保在固件升级后保留此数据。
// 注意:取消注释以覆盖 settings.h 中的默认值
// #define SETTINGS_RESTORE_ALL (SETTINGS_RESTORE_DEFAULTS | SETTINGS_RESTORE_PARAMETERS | SETTINGS_RESTORE_STARTUP_LINES | SETTINGS_RESTORE_BUILD_INFO)
// 启用 ‘$I=(string)’ 构建信息写入命令。如果禁用,任何现有的构建信息数据都必须
// 通过外部方式以有效的校验和值放入 EEPROM。//此宏选项
在用于存储 OEM 产品数据时可用于防止用户覆盖此数据。
// 注意:如果禁用并确保 Grbl 永远不会更改构建信息行,您还需要启用
// 上面的 SETTING_RESTORE_ALL 宏并从掩码中删除 SETTINGS_RESTORE_BUILD_INFO。
// 注意:请参阅包含的 grblWrite_BuildInfo.ino 示例文件以单独写入此字符串。
#define ENABLE_BUILD_INFO_WRITE_COMMAND // ‘$I=’ 默认启用。评论禁用。
// AVR 处理器要求在 EEPROM 写入期间禁用所有中断。这包括
// 步进器 ISR 和串行通信 ISR。在 EEPROM 写入时间较长的情况下,此 ISR 暂停会
// 导致主动步进丢失位置和串行接收数据丢失。此配置
// 选项会在写入 EEPROM 时强制规划器缓冲区完全清空,以防止
// 任何丢失步骤的机会。
// 然而,这并不能防止在 EEPROM 写入期间丢失串行 RX 数据的问题,特别是
// 如果 GUI 同时抢先填充串行 RX 缓冲区。强烈建议
// GUI 标记这些 gcode(G10、G28.1、G30.1),以便在包含的块之后始终等待“ok”
// 在发送更多数据之前执行这些命令之一以消除此问题。
// 注意:大多数 EEPROM 写入命令在作业期间被隐式阻止(所有“$”命令)。但是,
// 坐标设置 g 代码命令(G10、G28/30.1)不是,因为它们是活动流的一部分
// 作业。目前,此选项仅强制规划器缓冲区与这些 g 代码命令同步。
#define FORCE_BUFFER_SYNC_DURING_EEPROM_WRITE // 默认启用。评论禁用。
// 在 Grbl v0.9 和之前版本中,有一个旧的未解决的错误,其中
WPos:报告的工作位置// 可能与正在执行的内容不相关,因为
WPos:它基于 g 代码解析器状态,// 可能落后于几个动作. 此选项强制规划器缓冲区清空、同步和停止
// 每当有更改工作坐标偏移量的命令时
G10,G43.1,G92,G54-59。// 这是确保
WPos:始终正确的最简单方法。幸运的是,使用这些命令中的任何一个都非常罕见// 需要通过它们进行连续运动。
#define FORCE_BUFFER_SYNC_DURING_WCO_CHANGE // 默认启用。评论禁用。
// 默认情况下,Grbl 禁用所有 G38.x 探测循环命令的进给率覆盖。虽然这个
// 可能与一些专业级机器控制不同,但它应该是这样的还是有争议的。
// 大多数探头传感器会产生不同程度的错误,这取决于速度。通过
// 将探测周期保持在其编程的进给速率,探测传感器应该更
// 可重复。如果需要,您可以通过取消注释下面的定义来禁用此行为。
// #define ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES // 默认禁用。取消注释以启用。
// Enables and configures parking motion methods upon a safety door state. Primarily for OEMs
// that desire this feature for their integrated machines. At the moment, Grbl assumes that
// the parking motion only involves one axis, although the parking implementation was written
// to be easily refactored for any number of motions on different axes by altering the parking
// source code. At this time, Grbl only supports parking one axis (typically the Z-axis) that
// moves in the positive direction upon retracting and negative direction upon restoring position.
// The motion executes with a slow pull-out retraction motion, power-down, and a fast park.
// Restoring to the resume position follows these set motions in reverse: fast restore to
// 拉出位置,超时加电,然后以
较慢的拉出速度跳回原始位置。
// 注意:仍在进行中。机器坐标必须在所有负空间中,
// 在启用 HOMING_FORCE_SET_ORIGIN 的情况下不起作用。停车运动也只在
// 正方向移动。
// #define PARKING_ENABLE // 默认禁用。取消注释以启用
// Configure options for the parking motion, if enabled.