+7 (ХХХ) ХХХ-ХХХХ
info@cnc-design.ru
ПН-ПТ: с 10:00 до 19:00

Прошивка GRBL – настройка параметров

        После подключения контроллера к программе Universal G-Code Sender необходимо ввести в командной строке "$$" и нажать "Enter", контроллер выведет перечень системных настроек.
(Пример для версии GRBL v1.1g, в зависимости от версии прошивки и программы управления могут быть отличия).

$0 = 10 (Step pulse time, microseconds)
$1 = 25 (Step idle delay, milliseconds)
$2 = 0 (Step pulse invert, mask)
$3 = 0 (Step direction invert, mask)
$4 = 0 (Invert step enable pin, boolean)
$5 = 0 (Invert limit pins, boolean)
$6 = 0 (Invert probe pin, boolean)
$10 = 1 (Status report options, mask)
$11 = 0.010 (Junction deviation, millimeters)
$12 = 0.002 (Arc tolerance, millimeters)
$13 = 0 (Report in inches, boolean)
$20 = 0 (Soft limits enable, boolean)
$21 = 0 (Hard limits enable, boolean)
$22 = 0 (Homing cycle enable, boolean)
$23 = 0 (Homing direction invert, mask)
$24 = 25.000 (Homing locate feed rate, mm/min)
$25 = 500.000 (Homing search seek rate, mm/min)
$26 = 250 (Homing switch debounce delay, milliseconds)
$27 = 1.000 (Homing switch pull-off distance, millimeters)
$30 = 1000 (Maximum spindle speed, RPM)
$31 = 0 (Minimum spindle speed, RPM)
$32 = 0 (Laser-mode enable, boolean)
$100 = 250.000 (X-axis travel resolution, step/mm)
$101 = 250.000 (Y-axis travel resolution, step/mm)
$102 = 250.000 (Z-axis travel resolution, step/mm)
$110 = 500.000 (X-axis maximum rate, mm/min)
$111 = 500.000 (Y-axis maximum rate, mm/min)
$112 = 500.000 (Z-axis maximum rate, mm/min)
$120 = 10.000 (X-axis acceleration, mm/sec^2)
$121 = 10.000 (Y-axis acceleration, mm/sec^2)
$122 = 10.000 (Z-axis acceleration, mm/sec^2)
$130 = 200.000 (X-axis maximum travel, millimeters)
$131 = 200.000 (Y-axis maximum travel, millimeters)
$132 = 200.000 (Z-axis maximum travel, millimeters)
ok

Попробуем разобраться, что это все значит и как это менять.

$0 = 10 (Step pulse time, microseconds)
Длительность импульса шага, микросекунды

     Драйверы шаговых двигателей имеют ограничение на минимальную длительность шагового импульса. Уточнить необходимое значение можно в документации на драйвер или перебором различных вариантов. Необходимо подобрать максимально короткий импульс, которые драйвер способен надежно распознавать. Если импульсы будут слишком длинные, вы можете столкнуться с проблемами при высоких скоростях подачи и большой частоте, возникающими из-за того, что идущие подряд импульсы начнут перекрывать друг друга.

$1 = 25 (Step idle delay, milliseconds)
Задержка отключения двигателей, миллисекунды

     Задержка отключения двигателей - это интервал времени, в течении которой Grbl сохраняет подачу питания на двигатели перед отключением. Параметр меняется от 0 до 255.
- 0 — напряжение снимается сразу;
- 255 — напряжение не снимается никогда.

     В зависимости от системы, вы можете установить значение этого параметра в ноль и отключить задержку. В других случаях может потребоваться использовать значение 25-50 миллисекунд, чтобы оси успели полностью остановиться перед отключением двигателей. Отключение необходимо для тех двигателей, которые не следует держать включенными в течении длительного периода времени на холостом ходу из-за нагрева.      Так же стоит помнить, что в процессе отключения некоторые драйверы шаговых двигателей не запоминают на каком микрошаге они остановились, из-за этого случается 'пропуск шагов' при отключении/включении двигателей. В этом случае рекомендуется держать двигатели всегда включенными.

$2 = 0 (Step pulse invert, mask)
Инверсия шагового импульса, маска

     Этот параметр управляет инверсией сигнала шаговых импульсов. По-умолчанию считается, что сигнал шагового импульса начинается в нормально-низком состоянии и переключается в высокое на период шага. По истечении времени, заданного параметром $0, вывод переключается обратно в низкое состояние, вплоть до следующего шага В режиме инверсии, шаговый импульс переключается из нормально-высокого в низкое на период импульса, а потом возвращается обратно в высокое состояние. Большинству пользователей не требуется менять значение этого параметра, но это может оказаться полезным, если конкретные драйверы шагового двигателя этого требуют. Например, инверсией вывода шагового импульса может быть обеспечена искусственная задержка между изменением состояния вывода направления и шаговым импульсом.

      Этот параметр хранит настройки инверсии осей в виде битовой маски. Для изменения параметра необходимо ввести значение соответствующее тем осям, которые нужно инвертировать. Например, чтобы инвертировать оси Y и Z, отправьте $2=6 в Grbl.

Значение Маска Ось Х Ось Y Ось Z
0 00000000 - - -
1 00000001 + - -
2 00000010 - + -
3 00000011 + + -
4 00000100 - - +
5 00000101 + - +
6 00000110 - + +
7 00000111 + + +

 

 

 

 

 

 

 

 

$3 = 0 (Step direction invert, mask)
Инверсия направления шага, маска

     Этот параметр инвертирует сигнал направления для каждой из осей. По-умолчанию, Grbl предполагает, что ось движется в положительном направлении, когда уровень сигнала направления низкий, и в отрицательном - когда высокий. Часто оси в некоторых станках движутся не так. Этот параметр изменит инвертирует сигнал направления для тех осей, что движутся в обратную сторону.
     Эта маска работает точно так, как и инверсия порта шаговых импульсов и хранит информацию об инверсии осей в битовой маске. Для настройки нужно просто отправить значение, указывающее какие оси инвертировать. Используйте значения из таблицы выше. Например, если хотите инвертировать направление только по оси X, вам нужно отправить Grbl команду $3=1.

$4 = 0 (Invert step enable pin, boolean)
Инверсия сигнала включения шаговых двигателей, логический

     Высокий уровень сигнала включения шаговых двигателей соответствует выключению, а низкий - включению. Если ваша сборка требует обратного, просто инвертируйте сигнал, введя $4=1. Отключается с помощью $4=0. 

$5 = 0 (Invert limit pins, boolean)
Инверсия входов концевых выключателей, логический

     По умолчанию, входы концевых выключателей подстраиваются по питанию встроенным резистором Arduino. Когда сигнал на входе принимает низкий уровень, Grbl рассматривает это как срабатывание выключателя. Для противоположного поведения, просто инвертируйте входы, введя $5=1. Отключается командой $5=0. Может потребоваться перезапуск контроллера, чтобы изменения вступили в силу.
ПРИМЕЧАНИЕ: Если вы инвертируете входы концевых выключателей, потребуется внешний резистор подстройки к земле, чтобы предотвратить перегрузку по току и сгоранию входа.

$6 = 0 (Invert probe pin, boolean)
Инверсия входа щупа, логический

     По-умолчанию, вход щупа подстраивается по питанию встроенным резистором Arduino. Когда сигнал на входе принимает низкий уровень, Grbl рассматривает это как срабатывание датчика. Для противоположного поведения, просто инвертируйте вход щупа, введя $6=1. Отключается командой $6=0. Может потребоваться перезапуск контроллера, чтобы изменения вступили в силу.
ПРИМЕЧАНИЕ: Если вы инвертируете вход контактного датчика, потребуется внешний резистор подстройки по напряжению  земли, чтобы предотвратить перегрузку по току и сгоранию входа.

$10 = 1 (Status report options, mask)
Вывод статуса, маска

     Параметр определяет, какие данные реального времени вернет Grbl, когда пользователь запрашивает статус командой реального времени'?'. Эта данные включают в себя текущее состояние, текущие координаты, текущую скорость подачи, значения на входах, текущие переопределенные значения, состояния буферов, и номер выполняемой команды G-кода (если было включено при компиляции).
     По-умолчанию новая реализация вывода отчета в Grbl v1.1 включает в себя вывод информации практически обо всем в стандартном выводе статуса. Множество данных скрывается и выводятся только тогда, когда их значение меняется. Это существенно увеличивает производительность по сравнению со старыми способами и позволяет значительно быстрее получать обновленные данные о станке, в большем объеме. Документация на интерфейс в общих чертах рассказывает, как это работает, хотя в основном она предназначена только для разработчиков графических интерфейсов или продвинутых пользователей.
     Для простоты и удобства, Grbl v1.1 имеет всего две опции для данного параметра. Обе используются пользователями и разработчиками в основном для отладочных целей.
- Текущие координаты могут быть настроены на вывод либо машинных координат (MPos:), либо рабочих (WPos:), но не обеих одновременно. Включение рабочих координат полезно в некоторых случаях при прямом управлении через последовательный порт, но машинные координаты необходимо использовать по-умолчанию.

- Может быть включен вывод информации об использования буфера в планировщике и приемнике последовательного порта Grbl. При этом показывается количество блоков или байт, доступных в соответствующем буфере. Это, нужно для оценки производительности Grbl при тестировании потоковых интерфейсов . Эту опцию по-умолчанию следует отключить.
     Используйте таблицу ниже для определения включаемых/отключаемых параметров. Просто сложите значения в строках, содержащих включаемые параметры и сохраните в Grbl полученное значение. Например, отчет, содержащий машинные координаты без данных о буфере соответствует параметру $10=1. Рабочие координаты и информация о буфере соответствуют параметру $10=2.

Тип отчета Значение Обозначение
тип координат 0 Включен MPos; выключен WPos
тип координат 1 Включен MPos; выключен WPos
буфер данных 2 Включен Buf: поле выводит количество свободного места в буферах планировщика и приемника последовательного порта.

$11 = 0.010 (Junction deviation, millimeters)
Отклонение на стыках, мм

     Заданная величина отклонения на стыках, используется модулем управления ускорением для определения скорости перемещения через стыки отрезков запрограммированного в G-коде пути. Например, если путь в G-коде содержит острый выступ с углом в 10 градусов, и станок двигается к нему на максимальной скорости, данный параметр поможет определить насколько нужно притормозить, чтобы выполнить поворот без потери шагов. Вычисление выполняются довольно сложным образом, но в целом, более высокие значение дают более высокую скорость прохождения углов, повышая риск потерять шаги и сбить позиционирование. Меньшие значение делают модуль управления более аккуратным и приводят к более аккуратной и медленной обработке углов. Так что, если вдруг столкнетесь с проблемой слишком быстрой обработкой углов, уменьшите значение параметра, чтобы заставить станок притормаживать перед прохождением углов. Если хотите, чтобы станок быстрее проходил через стыки, необходимо увеличить значение этого параметра. Любопытные могут пройти по ссылке и прочитать про алгоритм обработки углов в Grbl, который учитывает и скорость, и величину угла на стыке, простым, эффективным и надежным методом.

$12 = 0.002 (Arc tolerance, millimeters)
Отклонение от дуги, мм

      Прошивка Grbl обрабатывает круги, дуги и спирали G2/G3, разбивая их на множество крошечных отрезкой таким образом, чтобы погрешность отклонения от дуги не превышала значения данного параметра. Скорее всего вам никогда не придется менять этот параметр, поскольку значение 0.002мм находится ниже разрешающей способности большинства станков с ЧПУ. Однако, если вы обнаружили, что ваши окружности слишком угловатые или прохождение по дуге выполняется слишком уж медленно, откорректируйте значение этого параметра. Меньшие значение дают лучшую точность, но могут снизить производительность из-за перегрузки Grbl огромным количеством мелких линий. И наоборот, более высокие значения приводят к меньше точности обработки, но могут повысить скорость, поскольку Grbl придется иметь дело в меньшим количеством линий.
     $13 = 0 (Report in inches, boolean)
Отчет в дюймах, логический

     Прошивка Grbl в реальном времени выводит координаты текущей позиции, чтобы пользователь всегда имел представление, где в данный момент находится станок, а также параметры смещения начала координат и данные измерения щупа. По-умолчанию вывод идет в мм, но командой $13=1 можно изменить значение параметра и переключить вывод на дюймы, $13=0 возвращает вывод в мм.

$20 = 0 (Soft limits enable, boolean)
Мягкие границы, логический

     Мягкие границы это настройка безопасности, призванная помочь избежать перемещения за пределы допустимой области, которое может повлечь за собой поломку или разрушение оборудования. Она работает за счет информации о текущем положении и пределах допустимого перемещения по каждой из осей. Каждый раз, когда Grbl отправляется G-код движения, он проверяет не произойдет ли выход за пределы допустимой области. И в случае, если происходит нарушение границ, Grbl, где бы он ни находился, немедленно выполняет команду остановки подачи, останавливает шпиндель и охлаждение, а затем выдает сигнал аварии для индикации проблемы. Текущее положение при этом не сбрасывается, поскольку остановка происходит не в результате аварийного принудительного останова, как в случае с жесткими границами.
ПРИМЕЧАНИЕ: мягкие границы требуют включения поддержки процедуры поиска начальной позиции и аккуратной настройки максимальных границ для перемещения, поскольку Grbl нужно знать где находятся допустимые границы. $20=1 для включения, и $20=0 для отключения.

$21 = 0 (Hard limits enable, boolean)
Жесткие границы, логический

     Жесткие границы в общих чертах работают также как и мягкие, но используют аппаратные выключатели. Как правило, вы подсоединяете концевые выключатели (механические, магнитные или оптические) в конце каждой из осей или в тех точках, достижение которых в процессе перемещения, как вы считаете, может привести к проблемам. Когда срабатывает выключатель, он приводит к немедленной остановке любого перемещения, останову охлаждения и шпинделя (если подключен), и переходу в аварийный режим, который требует от вас проверки станка и сброса контроллера.
     Для использования жестких границ с Grbl, соответствующие выводы подстраиваются по питанию внутренним резистором, поэтому все, что от вас требуется - подключить нормально разомкнутый концевой выключатель между выводом и землей и задействовать жесткие границы командой $21=1, отключение — командой $21=0. 
     Необходимо иметь в виду, что срабатывание жестких границ рассматривается как исключительное событие, требующее немедленной остановки, и может привести к потере шагов. Grbl не имеет обратной связи от станка о текущем положении, так что он не может гарантировать, что имеет представление о реальном месте нахождения. Так что если произошло нарушение жестких границ, Grbl перейдет в аварийный режим, давая вам шанс проверить станок и требуя выполнить сброс Grbl, в целях безопасности.

$22 = 0 (Homing cycle enable, boolean)
Поиск начальной позиции, логический

     Для тех, кто только знакомится с миром ЧПУ: процедура поиска начальной позиции используется для аккуратного и точного поиска заранее известной точки станка каждый раз после включения Grbl между сеансами работы. Другими словами, вы всегда, в любой момент времени точно знаете где находитесь. Собирались ли вы только начать работу или перешли к следующей операции, а в это время отключилось электричество, в любом случае Grbl перезапустится и не будет знать свое текущее местоположение. Вам остается только выяснять, а где же вы все-таки сейчас находитесь. При наличии начальной позиции, у вас всегда есть эталонная точка отсчета, так что все, что в этом случае требуется, это запустить процедуру поиска начальной точки и продолжить работу с того места, где остановились.
     Для настройки процедуры поиска начальной позиции вам потребуется наличие надежно закрепленных концевых выключателей в некоторой точке, на которые нельзя наткнуться или сдвинуть, в противном случае точка отсчета может быть сбита. Обычно они устанавливаются в самых дальних точках в направлении +x, +y, +z на каждой из осей. Соедините концевые выключатели с соответствующими выводами и землей, так же как и концевые выключатели аппаратных границ и задействуйте поиск начальной позиции. Если интересно, то вы можете использовать граничные выключатели и для аппаратных границ, и для поиска начальной позиции, они прекрасно работают вместе.
     По-умолчанию, процедура поиска начальной позиции Grbl сначала выполняет перемещение по оси Z в положительном направлении, чтобы освободить рабочую область, а затем выполняет одновременное перемещение по осям X и Y в положительном направлении. Для настройки точного поведения процедуры поиска начальной позиции имеются несколько параметров настройки, описанных ниже (и параметры компиляции тоже.)
 ПРИМЕЧАНИЕ: В файле config.h находятся множество других настроек, ориентированных на продвинутых пользователей. Вы можете отключить блокировку при старте, указать с каких осей начать процедуру поиска, в каком порядке по ним перемещаться, а также многое другое.

$23 = 0 (Homing direction invert, mask)
Инверсия направления начальной точки, маска

     По-умолчанию, Grbl предполагает, что концевые выключатели начальной точки находятся в положительном направлении, он выполняет сначала перемещение в положительном направлении по оси Z, затем в положительном направлении по осям X-Y, перед тем как точно определить начальную точку медленно перемещаясь назад и вперед около концевого выключателя. Если у вашего станка концевые выключатели находятся в отрицательном направлении, инверсия направлений начальной точки изменяет направление осей. Она работает точно так же, как и инверсия порта шаговых импульсов или инверсии порта направления, все что вам нужно это указать значение из таблицы, указывающее какие оси нужно инвертировать для поиска в противоположном направлении.

$24 = 25.000 (Homing locate feed rate, mm/min)
Скорость подачи при поиске начальной точки, мм/мин

     Процедура поиска начальной точки сначала ищет концевые выключатели с повышенной скоростью, а после того как их обнаружит, двигается в начальную точку с пониженной скоростью для точного определения ее положения. Скорость подачи при поиске начальной точки - это та самая пониженная скорость. Установите ее в некоторое значение, обеспечивающее повторяемое и точное определение местоположения начальной точки.

$25 = 500.000 (Homing search seek rate, mm/min)
Скорость поиска начальной точки, мм/мин

     Скорость поиска начальной точки - это начальная скорость с которой контроллер пытается найти концевые выключатели начальной точки. Откорректируйте на любое значение, позволяющее переместиться к начальной точке за достаточно малое время без столкновения с концевыми выключателями из-за слишком быстрого к ним перемещения.

$26 = 250 (Homing switch debounce delay, milliseconds)
Подавление дребезга при поиске начальной точки, миллисекунд

     Когда срабатывают выключатели, некоторые из них в течении нескольких миллисекунд могут издавать электрический/механический шум приводящий к быстрому переключению сигнала между высоким и низким значениями, прежде чем значение зафиксируется. Для решения данной проблемы нужно подавить дребезг сигнала либо аппаратно, за счет какой-нибудь фильтрации, либо программно, сделав небольшую задержку на время дребезга. Grbl будет делать короткую задержку, но только при поиске начальной точки на этапе ее точного определения. Установите значение задержки, достаточное, чтобы ваши выключатели обеспечивали устойчивый поиск начальной точки. Для большинства случаев подойдут значения 5-25 миллисекунд.

$27 = 1.000 (Homing switch pull-off distance, millimeters)
Отъезд от начальной точки, мм

     При объединение датчиков жестких границ станка и концевых выключателей для поиска начальной точки, процедура поиска после завершения определения положения начальной точки выполняет перемещение от концевых выключателей на указанное расстояние. Другими словами, это предотвращает непреднамеренное срабатывание жестких границ по окончании процедуры поиска.

$31 = 0 (Minimum spindle speed, RPM)
Минимальные обороты шпинделя, Об/мин

     Задает обороты шпинделя, соответствующие минимальному напряжению на выходе ШИМ, равному 0.02V (0В означает отключение). Меньшие значение оборотов будут приняты Grbl, но напряжение на выходе ШИМ не будет меньше 0.02V, за исключением случая равенства нулю.

$32 = 0 (Laser-mode enable, boolean)
Режим лазера, логический

     Если включить этот режим, то Grbl, в случае, когда обороты шпинделя (мощность лазера) меняются командой «S» будет продолжать движение от точки к точке в соответствии с заданной последовательностью команд G1, G2 или G3. Значение скважности ШИМ, отвечающего за управление оборотами шпинделя, будет меняться в процессе движения сразу же, без выполнения остановки. Обязательно прочтите руководство Grbl по работе в режиме лазера и документацию на ваш лазер перед включением данного режима. 
     Если параметр отключен, то Grbl будет вести себя как обычно, прерывая движение каждый раз, когда встречает команду изменения оборотов шпинделя S. Это стандартное поведение для фрезерных станков, формирующее некоторую паузу, чтобы шпиндель успел изменить скорость своего вращения.

$100 = 250.000 (X-axis travel resolution, step/mm)
$101 = 250.000 (Y-axis travel resolution, step/mm)
$102 = 250.000 (Z-axis travel resolution, step/mm)

Разрешение по осям [X,Y,Z] шагов/мм
     Grbl нужно знать на какое расстояние каждый шаг двигателя реально перемещает инструмент.
     Мы рассмотрели расчет этого параметра в статье «Расчет значения шагов для станка». Рассчитанные значения для каждой из осей необходимо записать в соотвествующие строки прошивки Grbl.

$110 = 500.000 (X-axis maximum rate, mm/min)
$111 = 500.000 (Y-axis maximum rate, mm/min)
$112 = 500.000 (Z-axis maximum rate, mm/min)

Максимальная скорость, мм/мин
     Эти параметры задают максимальную скорость, с которой можно перемещаться по каждой из осей. Самый просто способ найти нужные значения - тестировать каждую ось немного увеличивая скорость и выполняя перемещения. 
ПРИМЕЧАНИЕ: Эти значения также определяют максимальную скорость перемещения при выполнении команды G0.

$120 = 10.000 (X-axis acceleration, mm/sec^2)
$121 = 10.000 (Y-axis acceleration, mm/sec^2)
$122 = 10.000 (Z-axis acceleration, mm/sec^2)

Ускорение по осям, мм/сек^2
     Эти параметры задают параметры ускорения в мм/сек за секунду. Попросту говоря, меньшее значение делает Grbl более плавным в движении, в то время как большее приводит к боле резким движениям и достижению требуемой скорости подачи гораздо быстрее. Как и в случае максимальных скоростей, каждая из осей имеет свое собственное значение ускорения, которые независимы друг от друга. Это означает, что в случае многоосного перемещения ускорение будет соответствовать самой медленной из движущихся осей.<br>
$130 = 200.000 (X-axis maximum travel, millimeters)
$131 = 200.000 (Y-axis maximum travel, millimeters)
$132 = 200.000 (Z-axis maximum travel, millimeters)

Максимальное перемещение, мм
 Эти параметры задает максимальную дистанцию перемещения в мм от одного конца каждой из осей до другого. Используются модулем проверки мягких границ для определения выхода за пределы допустимой области в процессе перемещения.

Для внесения изменений в какой либо параметр прошивки необходимо в командной строке ввести

$x=val 

где
$x – параметр для изменения, $0, $1 и т.д.
Val – значение параметра, на которое необходимо изменить текущее значение

после этого нажать Enter. В результате этого новое значение будет сохранено в памяти контроллера.