Руководство по grbl

В предыдущих статьях мы рассмотрели, где скачать прошивку grbl 1.1, как установить данную прошивку и с помощью какой программы производить настройки. Сегодня рассмотрим какие параметры мы получаем от станка. И как произвести настройку grbl 1.1 – инструкция на русском языке.

Включение станка, что за информация нам выдает grbl 1.1?

  • В предыдущей статье про Universal G-Code Sender при подключении станка, в консоли программы, мы видели информацию: Включение станка, что за информация нам выдает grbl 1.1?

Что означают все эти строки. Давайте рассмотрим их по порядку. Первая строка.

**** Connected to COM5 @ 115200 baud ****

Расшифровать ее можно так:

  • порт COM5;
  • скорость 115200 бод.

Данные параметры мы выбирали при подключении станка.

Данные параметры мы выбирали при подключении станка.

Следующая строка выводит информацию о версии прошивки.

Grbl 1.1g [‘$’ for help]

  • версия GRBL 1.1g.
  • [‘$’ for help] ([‘$’ для справки]) — для получения справки по прошивке GRBL необходимо ввести в командной строке $ и нажать Enter.

Третья строка отправляет команду «$$», что заставляет вывести настройки прошивки.

Следующая команда «$G» — Просмотр состояния парсера gcode. Эта команда выводит все активные режимы gcode в парсере G-кода Grbl. При отправке этой команды в Grbl, он ответит сообщением:

[GC:G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 S0.0 F500.0]

Следующая команда «$G» - Просмотр состояния парсера gcode.

Команды Grbl «$».

Про данные команды Grbl «$» у меня на форуме есть отдельный пост. Но чтобы вам не искать информацию по разным сайтам, продублирую информацию в данной статье.

Команда «$$» выводит все настройки «$» в монитор порта или в консоль управляющей программы.

Команда «$$» выводит все настройки «$» в монитор порта

Введите $ и нажмите Ввод, чтобы Grbl вывел подсказку. Символы $ и Ввод не будут отображаться.

Введите $ и нажмите Ввод, чтобы Grbl вывел подсказку. Символы $ и Ввод не будут отображаться.
Grbl должен вывести следующее:[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]
‘$’-команды — это системные команды Grbl, используемые для изменения настроек, просмотра или изменения состояний и режимов работы Grbl, а также запуска процедуры поиска начальной позиции.
Последние четыре не-‘$’ команды — это команды управления в реальном времени, которые могут быть отправлены в любой момент, независимо от того, что в настоящее время делает Grbl. Они либо тут же меняют поведение работающего Grbl или сразу же выводят важные в реальном времени данные, например текущие координаты (aka DRO).

Настройки Grbl.

Для просмотра настроек введите «$$» и нажмите Ввод, после того как подключитесь к Grbl. Grbl ответит списком текущий системных настроек, как в примере ниже. Все эти настройки хранятся в памяти EEPROM после отключения питания, так что они будут автоматически загружены при следующем включении вашей платы Arduino.

x или $x=val описывают отдельный параметр настроек, причем val это значение параметра.

В предыдущих версиях Grbl каждый параметр имел после себя описание в круглых скобках (), но в Grbl, начиная с v1.1, этого, к сожалению, больше нет. Так было сделано, чтобы освободить драгоценную flash память для добавления новых возможностей, появившихся в v1.1. Однако, большинство хороших графических оболочек (GUI) добавляют для вас описания к параметрам, так что вы всегда будете знать на что смотрите.

Настройки по умолчанию.

  • $0=10 длительность импульса Step, мкс
  • $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=0 Жесткие границы
  • $22=1 Поиск начальной позиции
  • $23=0 Инверсия направления начальной точки
  • $24=25.000 Скорость подачи при поиске начальной точки, мм/мин
  • $25=500.000 Скорость поиска начальной точки, мм/мин
  • $26=250 Подавление дребезга при поиске начальной точки, миллисекунд
  • $27=1.000 Отъезд от начальной точки, мм
  • $30=1000 Максимальные обороты шпинделя, Об/мин
  • $31=0 Минимальные обороты шпинделя, Об/мин
  • $32=0 Режим лазера
  • $100=250.000 кол-во шагов на мм для оси Х
  • $101=250.000 кол-во шагов на мм для оси Y
  • $102=250.000 кол-во шагов на мм для оси Z
  • $110=500.000 Максимальная скорость оси Х, мм/мин
  • $111=500.000 Максимальная скорость оси Y, мм/мин
  • $112=500.000 Максимальная скорость оси Z, мм/мин
  • $120=10.000 Ускорение оси Х, мм/сек^2
  • $121=10.000 Ускорение оси Y, мм/сек^2
  • $122=10.000 Ускорение оси Z, мм/сек^2
  • $130=200.000 Максимальное перемещение оси Х, мм
  • $131=200.000 Максимальное перемещение оси Y, мм
  • $132=200.000 Максимальное перемещение оси Z, мм

$x=val — Изменение настроек Grbl.

Команда $x=val сохраняет или изменяет параметр настройки Grbl, это можно сделать вручную, отправкой соответствующей команды в Grbl через программу-терминал последовательного порта, но большинство графических оболочек Grbl позволяют сделать это более удобным способом.

Для ручного изменения, например, длины шагового импульса в микросекундах на значение 10мкс, нужно ввести следующее, завершив команду нажатием клавиши Ввод: $0=10 Если все прошло успешно, Grbl ответит ‘ok’, новые настройки будут сохранены в EEPROM и будут использоваться до следующего их изменения.

Вы можете перепроверить, что Grbl получил и сохранил верное значение параметра, повторно введя команду $$ для просмотра системных настроек.

Описание параметров grbl 1.1.

Примечание! Разница между Grbl v0.9 и Grbl v1.1 заключается только в том, что изменился вывод статуса командой $10 и были добавлены команды для новых параметров $30/ $31 — максимальные/минимальные обороты шпинделя и $32 — работа в режиме лазера. Все остальное — осталось как было.

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

$1 — Задержка отключения двигателей, миллисекунд.
Каждый раз, когда ваши шаговые двигатели заканчивают движение и останавливаются, Grbl делает задержку на указанный интервал времени перед отключением питания двигателей. Вы можете всегда держать двигатели включенными (с подачей питания для удержания текущего положения) установив значение этого параметра в максимально возможное значение, равное 255 миллисекунд.

Отключение призвано помочь для тех типов двигателей, которые не следует держать включенными в течении долгого периода времени без какой-либо работы. И еще, имейте в виду, что в процессе отключения некоторые драйверы шаговых двигателей не запоминают на каком микрошаге они остановились, из-за этого вы можете стать свидетелем ‘пропуска шагов’ при отключении/включении двигателей. В этом случае просто держите двигатели всегда включенными с помощью $1=255.

$2 – Инверсия порта шаговых импульсов, маска.

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

$3 – Инверсия порта направления, маска.

Этот параметр инвертирует сигнал направления для каждой из осей. По-умолчанию, Grbl предполагает, что ось движется в положительном направлении, когда уровень сигнала направления низкий, и в отрицательном — когда высокий. Часто оси в некоторых станках движутся не так. Этот параметр изменит инвертирует сигнал направления для тех осей, что движутся в обратную сторону.

  • $3=0 Без инверсии осей
  • $3=1 Инверсия оси Х
  • $3=2 Инверсия оси Y
  • $3=3 Инверсия всех осей

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

$5 — Инверсия входов концевых выключателей, логический.

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

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

$6 — Инверсия входа контактного датчика, логический.

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

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

$10 — Отчет состояния, маска.

Параметр определяет какие данные реального времени вернет Grbl, когда пользователь запрашивает статус командой ‘?’.
Эти данные включают в себя текущее состояние, текущие координаты, текущую скорость подачи, значения на входах, текущие переопределенные значения, состояния буферов, и номер выполняемой команды G-кода (если было включено при компиляции).

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

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

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

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

$20 — Мягкие границы, логический.
Мягкие границы это настройка безопасности, призванная помочь избежать перемещения далеко за пределы допустимой области, которое может повлечь за собой поломку или разрушение дорогостоящих предметов. Она работает за счет информации о текущем положении и пределах допустимого перемещения по каждой из осей. Каждый раз, когда в Grbl отправляется G-код движения, он проверяет не произойдет ли выход за пределы допустимой области. И в случае, если происходит нарушение границ, Grbl, где бы он ни находился, немедленно выполняет команду приостановки подачи, останавливает шпиндель и охлаждение, а затем выставляет сигнал аварии для индикации проблемы. Текущее положение при этом не сбрасывается, поскольку останов происходит не в результате аварийного принудительного останова, как в случае с жесткими границами.

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

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

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

Для настройки процедуры поиска начальной позиции вам потребуется наличие надежно закрепленных концевых выключателей в некоторой точке, на которые нельзя наткнуться или сдвинуть, в противном случае точка отсчета может быть сбита. Обычно они устанавливаются в самых дальних точках в направлении +x, +y, +z на каждой из осей. Соедините концевые выключатели с соответствующими выводами и землей, так же как и концевые выключатели аппаратных границ и задействуйте поиск начальной позиции. Если интересно, то вы можете использовать граничные выключатели И для аппаратных границ, И для поиска начальной позиции. Они прекрасно работают вместе.По-умолчанию, процедура поиска начальной позиции Grbl сначала выполняет перемещение по оси Z в положительном направлении, чтобы освободить рабочую область, а затем выполняет одновременное перемещение по осям X и Y в положительном направлении. Для настройки точного поведения процедуры поиска начальной позиции имеются несколько параметров настройки, описанных ниже (и параметры компиляции тоже.)Также следует отметить, что при задействованной процедуре поиска начальной позиции Grbl блокирует выполнение команд перемещения G-кода до выполнения поиска начальной позиции. Имеется в виду отсутствие перемещения по осям, пока не будет отключена блокировка ($X), но об этом чуть позже. Большинство, если не все контроллеры с ЧПУ, ведут себя аналогично, делается это, в основном, для безопасности, чтобы не позволить оператору допустить ошибку позиционирования, что довольно просто, и расстроиться, когда работа будет загублена. Если вас это раздражает или вы обнаружили какие-то странные ошибки, пожалуйста, дайте нам знать, и мы попытаемся поработать над этим и сделать так, чтобы все были счастливы.

В файле config.h находятся множество других настроек, ориентированных на продвинутых пользователей. Вы можете отключить блокировку при старте, указать с каких осей начать процедуру поиска, в каком порядке по ним перемещаться, а также многое другое.

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

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

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

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

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

$30 — Максимальные обороты шпинделя, Об/мин.
Задает обороты шпинделя, соответствующие максимальному напряжению на выходе ШИМ, равному 5В. Допускается задавать в программе и более высокие обороты шпинделя, но вывод ШИМ все равно не может быть больше 5В. По-умолчанию, Grbl строит линейную зависимость из 255 отсчетов между максимальными-минимальными оборотами шпинделя и напряжениями на выходе ШИМ из диапазона 5В-0.02В. Значение ШИМ, равное 0В, означает отключение шпинделя. В файле config.h есть дополнительные параметры, влияющие на это поведение.

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

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

$100, $101, $102 – [X,Y,Z] шагов/мм.
Grbl нужно знать на какое расстояние каждый шаг двигателя в реальности перемещает инструмент. Для калибровки соотношения шагов/мм для вашего станка вам нужно знать следующее: Перемещение в мм, соответствующее одному обороту вашего двигателя. Это зависит от размера шестерней ременной передачи или шага винта. Количество полных шагов на один оборот двигателя (обычно 200). Количество микрошагов на один шаг для вашего контроллера (обычно 1, 2, 4, 8, или 16).
Совет: Использование больших значений микрошага (например, 16) может уменьшить крутящий момент вашего двигателя, так что используйте минимальное значение, обеспечивающее нужную точность перемещения по осям и удобные эксплуатационные характеристики.
После этого значение шаг/мм может быть вычислено по формуле: шагов_на_мм = (шагов_на_оборот*микрошагов)/мм_на_оборот. Рассчитайте данные значения для каждой из осей и запишите настройки в Grbl.

$110, $111, $112 – [X,Y,Z] Максимальная скорость, мм/мин.
Эти параметры задают максимальную скорость, с которой можно перемещаться по каждой из осей. Когда Grbl планирует перемещение, он проверяет индивидуально для каждой из осей, будет или нет превышена ее максимальная скорость. Если будет, что он замедлит движение, чтобы максимальное значение скорости не превышалось. Это означает, что каждая из осей имеет свою максимальную скорость, что необычайно полезно для ограничения скорости, как правило, более медленной оси Z. Самый просто способ найти нужные значения — тестировать каждую ось раз за разом немного увеличивая скорость и выполняя действие перемещения.
Например, для проверки оси X, отправьте Grbl команду вида G0 X50 с расстоянием перемещения, достаточно большим для разгона до максимальной скорости. Максимальное значение будет достигнуто, когда ваш шаговый двигатель застопорится. Он будет издавать жужжащий звук, но ничего страшного с ним не случится. Задайте значение на 10-20% меньше обнаруженного, чтобы учесть износ, трение и массу вашей рабочей головки/инструмента. Повторите процесс для остальных осей.
Эти значения также определяют максимальную скорость перемещения при выполнении команды G0.

$120, $121, $122 – [X,Y,Z] Ускорение, мм/сек^2.
Эти параметры задают параметры ускорения в мм/сек за секунду. Попросту говоря, меньшее значение делает Grbl более плавным в движении, в то время как большее приводит к боле резким движениям и достижению требуемой скорости подачи гораздо быстрее. Как и в случае максимальных скоростей, каждая из осей имеет свое собственное значение ускорения, которые независимы друг от друга. Это означает, что в случае многоосевого перемещения ускорение будет соответствовать самой медленной из движущихся осей. И опять, как и в случает с максимальными скоростями, самый простой способ определить значение этих параметров — индивидуально протестировать каждую из осей, медленно увеличивая значения, пока мотор не застопорится. Завершите настройку сохранением значения на 10-20% меньшим от обнаруженного. Это позволит учесть износ, трение и инертность массы. Мы настоятельно рекомендуем в черновую протестировать некоторое количество программ на G-коде, прежде чем окончательно остановиться на выбранных значениях. Иногда нагрузка на ваш станок может оказаться иной при одновременном перемещении по нескольким осям.

$130, $131, $132 – [X,Y,Z] Максимальное перемещение, мм.
Эти параметры задают максимальную дистанцию перемещения в мм от одного конца каждой из осей до другого. Они имеет смысл только если вы задействовали мягкие границы (и поиск начальной точки), поскольку используются только модулем проверки мягких границ для определения выхода за пределы допустимой области в процессе перемещения.

настроек мох самодельных ЧПУ станков.

Параметров много, но настройка достаточно простая. Достаточно внимательно ознакомиться с инструкцией и посмотреть примеры настроек мох самодельных ЧПУ станков.

Фотографии к статье

Настройки Grbl Universal G-Code Sender

grbl 1.1 - cnc-tex.ru

Файлы для скачивания

Прошивка GRBL 1.1 Прошивка GRBL 1.1.zip 300 Kb 2566 Скачать

Gistroy — полный лазерный контроль

  • Перейдя по данной ссылке вы найдете Ошибки GRBL, которые могут возникнуть при использовании станка с ЧПУ. Ниже вы найдете статью о Настройке и команды GRBL.

Перед началом работы с Grbl рекомендуется подключиться к нему через терминал, используя последовательный порт на ваше усмотрение. Необходимо назначить скорость передачи данных (baud rate) на уровне 115200 и формат фрейма на 8 бит, с параметром no parity, то есть без проверки четности и с одним стоп-битом (1-stop bit). Когда установится соединение, появится следующая строка Grbl:

Чтобы получить список команд и настроек Grbl, нужно ввести символ «$» и нажать Ввод (Enter). Появится сообщение с перечислением доступных системных команд, начинающихся с символа «$».


[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]

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

Помимо этого, в Grbl есть четыре управленческие команды в реальном времени, и их можно выполнить всегда, независимо от времени и текущего состояния Grbl. Также можно мгновенно изменить его поведение или вывести отчетность о важнейших данных в реальный момент, например, о текущей позиции (DRO).

Настройки GRBL

Чтобы вывести текущие системные настройки, необходимо ввести команду «$$» и нажать Ввод (Enter). Эти настройки постоянные и их значения всегда сохраняются в EEPROM. При отключении и последующем включении питания Arduino вновь произойдет загрузка сохраненных данных настроек.

Обратите внимание, каждая настройка обозначается символом «x» в выражении «$x=val«, где «val» представляет значение этой настройки. Описания, что это за настройка теперь не прилагаются (в версии Grbl v1.1+). Это сделали, чтобы немного «почистить» ценную флэш-память и внедрить новые функции. Однако, многие графические интерфейсы (GUI) иногда предоставляют такие описания, что, несомненно, удобно.

Базовый пример ответного кода при вводе в консоль команды «$$« ниже:


$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=0
$22=1
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000
$31=0
$32=0
$100=250.000
$101=250.000
$102=250.000
$110=500.000
$111=500.000
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000

$x=val – Сохранение настроек Grbl

Команда $x=val применяется для сохранения, а также изменения настроек Grbl, и ее можно выполнить через терминальную программу, подключаясь к Grbl по последовательному порту. Однако, многие графические интерфейсы предоставляют данную возможность в удобном виде.

Например, чтобы поменять параметр микросекундного импульса шага на 10 микросекунд, достаточно ввести команду.

Если все прошло успешно, Grbl ответит ‘ok‘, новые настройки будут сохранены в EEPROM и будут использоваться вплоть до следующего их изменения. Вы можете перепроверить, что Grbl получил и сохранил верное значение параметра, повторно введя команду $$ для просмотра системных настроек.

Отличия между версиями 0.9 и 1.1:

  • $10 — изменился вывод статуса команды
  • $30 — максимальные обороты шпинделя
  • $31 — минимальные обороты шпинделя
  • $32 — работа в режиме лазера.

$0 – Импульс шага, микросекунды

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

$1 — Задержка до отключения двигателя, миллисекунды

Когда ШД останавливаются, Grbl задерживает их отключение на определенное время. При желании можно удерживать их включенными, чтобы поддерживать позицию, для этого можно поставить максимальное время 255 миллисекунд. Также можно поставить $1=255, чтобы все двигатели всегда были включены.

Период блокировки ШД — это время, когда Grbl удерживает их в блокировке перед тем, как отключить. Можно поставить егоя на ноль, чтобы отключить блокировку, или на 25-50 миллисекунд, для гарантии полной остановки осей перед тем, как двигатель отключится. Это помогает предотвратить нежелательное воздействие длительной работы некоторых видов двигателей. Еще надо учитывать, что есть шаговые драйверы, которые не запоминают, на каком микрошаге они остановились, и при повторном включении возникают «потерянные» шаги. Если вы хотите избежать таких проблем, вы можете держать шаговые двигатели включенными через установку $1=255.

$2 – Инвертирование порта шага, маска

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

Многим пользователям не нужно использовать эту опцию, но она может быть полезной для драйверов ШД с особыми требованиями. Например, инвертирование сигнала шага может создать искусственную задержку между сигналами направления и шага.

Чтобы включить инвертирование, нужно указать маску инвертирования, которая определяет, какие оси будут инвертированы, в виде битовых меток. Знать принцип работы этого процесса не обязательно, достаточно ввести значение настройки для нужных осей. К примеру, для инвертирования оси X и Z, можно использовать команду $2=5 в Grbl, и тогда настройка должна выглядеть как $2=5 (маска инвертирования порта шага (step port invert mask): 00000101).

$3 — Инвертирование направления порта, маска

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

Для изменения направления движения нужных осей используется маска инвертирования направления, которая также использует битовые маски для определения осей, подлежащих инвертированию. Для настройки данной опции, достаточно отправить значение для каждой инвертируемой оси, используя таблицу соответствий значений. Допустим, если требуется изменить направление движения оси Y, следует отправить в Grbl значение $3=2. После этого настройка будет выглядеть как $3=2 (маска инвертирования порта направления (dir port invert mask): 00000010).


$3=6 (Step direction invert)

$4 — Инвертирование сигнала включения шагового двигателя, логический тип данных (булево значение)

По умолчанию, для отключения шагового двигателя необходимо установить сигнал включения на высокий уровень, а для его включения — на низкий. Однако, если требуется изменить эту настройку, то можно легко поменять состояние включения шагового двигателя на противоположное, применив команду «$4=1«. Чтобы отключить шаговый двигатель, нужно использовать команду «$4=0«. Стоит учесть, что после изменения настроек, может потребоваться перезагрузка для их корректной работы.


$4=0 (Invert step enable pin)

$5 — Инвертирование сигналов концевых выключателей, логический тип данных (булево значение)

По умолчанию в Grbl входы концевых выключателей включены с использованием внутреннего подтягивающего резистора Arduino и находятся в состоянии «высокого уровня». Однако, если вам нужно изменить эту логику на противоположную, то можно инвертировать входы концевых выключателей, отправив команду $5=1. Если же вы захотите отключить инверсию, используйте команду $5=0. Обратите внимание, что для применения изменений может потребоваться перезагрузка устройства.

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

$6 — Инвертирование контакта датчика, булево значение

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

ВАЖНО: Если вы инвертируете контакт датчика, необходимо подключить внешний подтягивающий резистор к контакту, для избежания перегрузки и повреждения контакта.

$10 — Отчёт о статусе, маска

Команда «?» позволяет получить реальные данные о состоянии системы Grbl, включая текущую позицию, скорость подачи, состояние выводов и буфера, значения переопределения, и номер строки G-кода, которую система выполняет.

Начиная с версии Grbl v1.1+, отчетность включает практически всю информацию, доступную в стандартном отчете о состоянии системы, но большая часть данных стала скрытой и появляется только при внесении изменений. Это обеспечивает более эффективную и быструю отчетность, если сравнивать со старыми версиями Grbl.

Для упрощения отчетности и приведение ее в более последовательный вид, Grbl v1.1 включило всего две настройки. Они предназначены для настройки системы пользователями и разработчиками:

  • Отчетность включает в себя информацию о текущем состоянии программы, позиции, скорости подачи, состоянии выводов, значениях переопределения, состоянии буфера и номере строки G-кода. Отчетность может быть настроена на отображение машинных или рабочих координат, но не может отображать обе позиции одновременно. Отображение рабочих координат полезно при взаимодействии с пользователем через последовательный терминал.
  • Также можно включить отображение данных об использовании планировщика и буфера последовательного приема, что позволяет оценить производительность Grbl при тестировании потокового интерфейса. Однако эта настройка по умолчанию отключена. Для включения или выключения настроек отчетности нужно добавить соответствующие значения и сохранить их. Например, если нужен отчет о машинных координатах без данных буфера, то значение настройки будет $10=1. Если нужен отчет о рабочих координатах и данных буфера, то значение настройки будет $10=2.

Таблица настроек отчетности приведена ниже. Для включения или выключения опций надо добавить соответствующее значение и сохранить его, отправив настройки Grbl. Например, для отчета о машинных координатах без данных буфера необходимо использовать значение $10=1, а для отчета о рабочих координатах и данных буфера — значение $10=2.

В целом, отчетность в Grbl v1.1+ является более удобной и эффективной, и может быть настроена, используя несколько простых настроек для удовлетворения нужд пользователей и разработчиков.


$10=2 (Status report options)

$11 — Отклонение соединения, мм

Значение Junction Deviation — это важный параметр, который применяется менеджером ускорения для определения максимальной скорости перемещения по соединительным отрезкам в программе G-кода. Этот параметр особенно важен при выполнении острых поворотов и способен предотвратить потерю шагов и неправильное позиционирование обрабатываемой детали.

Расчет значения Junction Deviation довольно сложный, однако понятно, что более высокие значения обеспечивают более быстрое движение, но при этом риск потери шагов растет. Соответственно, более низкие значения сделают менеджер ускорения более осторожным, и это приводит к медленному и аккуратному прохождению углов. Когда станок не может проходить повороты безопасно, следует снизить значение Junction Deviation, чтобы уменьшить скорость при прохождении поворота. Если же необходимо увеличить темп прохождения соединений, этот параметр следует увеличить.

Для любопытных можно ознакомиться с алгоритмом Grbl, который использует простой и надежный метод учета скорости и угла соединения.


$11=0.010 (Junction deviation)

$12 – Допуск дуги, мм

Grbl разбивает кривые и спирали G2 / G3 на множество маленьких линий, для гарантии точности отслеживания кривой, которая никогда не будет ниже определенного порога — 0,002 мм. Обычно, не приходится настраивать этот параметр, так как большинство станков с ЧПУ имеют точность, превосходящую это значение. Однако, если круги слишком неточные или прохождение дуг слишком медленное, можно поменять этот параметр. Уменьшение значения допуска дуги улучшит ее точность, но может повлечь за собой проблемы с производительностью, так как мелких линий, создаваемых Grbl, станет больше.

При настройке допуска дуги, мы определяем максимальное перпендикулярное расстояние от отрезка, соединяющего начальную и конечную точки дуги. Затем, используя геометрию, определяется длина отрезков, чтобы точно отследить дугу, удовлетворяющую этому параметру. Моделирование дуг в таком формате — прекрасное решение, поскольку линии дуг автоматически настраиваются и масштабируются, для обеспечения максимальной точности отслеживания дуги, не ухудшая ее точности. Кроме того, такой подход позволяет увеличить скорость выполнения дуг, поскольку Grbl будет иметь меньше линий для обработки.


$12=0.002 (Arc tolerance)

$13 — Отчет в дюймах, булево значение

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

$20 — Мягкие пределы, булево значение

Команда $20, также известная как «мягкие пределы», представляет собой важную функцию безопасности в контроллере Grbl. Она позволяет предотвратить превышение границ перемещения станка, избежать аварий и сохранить целостность оборудования.

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

Однако, для работы функции «мягкие пределы» необходимо наличие точной информации о максимальных пределах перемещения станка на каждой оси и включенная процедура «возврата в нулевую точку» (homing). В случае, если эти данные не заданы правильно, функция не будет работать корректно.

Для включения функции «мягкие пределы», необходимо установить значение параметра $20=1. В случае, если требуется отключить эту функцию, нужно установить $20=0.


$20=0 (Soft limits enable)

$21 — Жесткие пределы, булево значение

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

В контроллере Grbl для подключения жестких пределов достаточно присоединить нормально разомкнутый концевой выключатель к выводу и земле. $21=1 включает жесткие пределы, а $21=0 — отключает их. Если требуется проверка границы на обоих концах хода одной оси, просто присоедините два выключателя параллельно к выводу и земле, чтобы при сработке одного из них срабатывал жесткий предел.

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


$21=0 (Hard limits enable)

$22 — Определение нулевой (начальной) точки, булево значение

Установка начального положения — это важный этап работы с ЧПУ для новичков. Она позволяет точно определить постоянную позицию на станке при каждом запуске Grbl между сеансами, чтобы всегда знать, где находитесь в любой момент времени. Это особенно полезно в случае электропитания, которое может прервать работу и сбросить позицию.

Чтобы настроить установку начального положения для Grbl, нужно установить концевые выключатели в фиксированном положении в крайней точке в +x, +y, +z каждой оси и подключить их к контактам ограничителей и заземлению. Можно использовать концевые выключатели для жестких ограничений и установки нулевой точки одновременно.

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

Но стоит учитывать, что когда включен режим homing, все команды G-code блокируются до выполнения homing цикла. Это важная функция безопасности для предотвращения ошибок позиционирования, которые могут испортить деталь. Если есть желание настроить этот процесс, можно ознакомиться с файлом config.h и получить дополнительные опции поиска нулевой точки для продвинутых пользователей.


$22=1 (Homing cycle enable)

$23 — Инвертирование направления движения при поиске нулевой точки, маска

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


$23=3 (Homing direction invert)

$24 — Скорость перемещения при поиске нулевой точки в мм/мин

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


$24=250.000 (Homing locate feed rate)

$25 — Скорость обнаружения при поиске нулевой точки, мм/мин

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


$25=3000.000 (Homing search seek rate)

$26 — Задержка при поиске нулевой точки (устранение дребезга), миллисекунды

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


$26=230 (Homing switch debounce delay)

$27 — Значение отступа при поиске нулевой точки, мм

Процедура поиска нулевой точки может использовать те же концевые выключатели, что и для жестких пределов. Когда нулевая точка будет найдена, головка смещается на расстояние, заданное параметром pull-off travel, чтобы предотвратить случайное срабатывание жестких конечных выключателей. Это важно для безопасной настройки системы и защиты от возможных несчастных случаев.


$27=3.000 (Homing switch pull-off distance)

$30 — Максимальная скорость шпинделя, об/мин (RPM)

Команда $30 позволяет установить максимальную скорость вращения шпинделя для выходного сигнала ШИМ с максимальным напряжением 5В в Grbl. Хотя Grbl допускает установку скоростей шпинделя выше максимальной, выход ШИМ все равно не будет превышать 5В. По умолчанию, Grbl использует линейную зависимость между максимальной и минимальной скоростями вращения и выходным сигналом ШИМ. Это реализуется с помощью 255 шагов, изменяющих значение ШИМ от 5В до 0,02В. Если ШИМ-сигнал равен 0В, то шпиндель выключен. Настройки для более тонкой настройки этой функции доступны в файле config.h.


$30=255 (Maximum spindle speed)

$31 — Минимальная скорость шпинделя, об/мин (RPM)

Команда $30 задает минимальное значение выходного сигнала ШИМ на пине, которое соответствует скорости вращения шпинделя. Если значение скорости ниже установленного минимума, то сигнал ШИМ все равно не опустится ниже 0,02В, за исключением случаев, когда скорость шпинделя равна нулю. При этом, если скорость шпинделя равна нулю, он выключается, а выходной сигнал ШИМ равен 0В. Обратите внимание, что Grbl предоставляет возможность дополнительной настройки этой функции в файле config.h.


$31=0 (Minimum spindle speed)

$32 — Режим лазера, логическое значение

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

При выключенном режиме лазера Grbl будет работать в обычном режиме и останавливаться при каждой установке скорости вращения шпинделя S. Это типичное поведение для фрезерных станков, которое позволяет остановиться для изменения скорости вращения шпинделя.


$32=1 (Laser-mode enable)

$100, $101, $102 — количество шагов на мм для осей X, Y, Z

Чтобы Grbl корректно функционировал, необходимо определить количество шагов, выполняемые станок при перемещении на один миллиметр. Это значение можно рассчитать, зная следующие параметры:

  • Расстояние в миллиметрах, которое пройдет инструмент за один оборот шагового двигателя. Зависит от шестеренки привода или шага винта передачи.
  • Количество полных шагов на один оборот шагового двигателя (обычно 200).
  • Количество микрошагов на один полный шаг, которое устанавливается на контроллере (обычно 1, 2, 4, 8 или 16). Советуем использовать меньшее значение микрошагов, чтобы обеспечить достаточную точность перемещения по оси и приятные условия работы, так как использование высоких значений микрошагов может уменьшить крутящий момент шагового двигателя.

Чтобы определить количество шагов на миллиметр, используйте следующую формулу:
steps_per_mm = (steps_per_revolution*microsteps) / mm_per_rev

Посчитайте это значение для каждой оси и установите соответствующие параметры в Grbl.


$100=88.888 (X-axis travel resolution)
$101=200.506 (Y-axis travel resolution)
$102=200.506 (Z-axis travel resolution)

$110, $111, $112 — Максимальная скорость по осям X, Y, Z мм/мин

Настройки максимальной скорости каждой оси в Grbl показывают, как быстро может перемещаться каждая ось. Когда Grbl планирует перемещение, он проверяет, не превышает ли скорость каждой оси ее максимальное значение. Если скорость превышает это значение, то движение замедляется, для гарантии, что ни одна из осей не превысит свой лимит. Это значит, что каждая ось имеет свою собственную скорость, что особенно полезно для ограничения скорости более медленной Z-оси.

Для определения максимальных настроек скорости для каждой оси, можно провести тестирование каждой оси по отдельности, постепенно увеличивая настройки максимальной скорости и перемещая ее. К примеру, для тестирования оси X можно отправить команду Grbl G0 X50, имея достаточную дистанцию перемещения, чтобы ось ускорилась до своей максимальной скорости. При достижении порога максимальной скорости, шаговые двигатели начнут замедляться, издавая небольшой шум, но они не должны повредиться. Настройку следует установить на 10-20% ниже этого значения, чтобы учесть износ, трение и массу вашей заготовки или инструмента. Затем этот процесс следует повторить для других осей.

Важно знать, что эта настройка максимальной скорости также устанавливает скорость перемещения G0.


$110=7500.000 (X-axis maximum rate)
$111=7500.000 (Y-axis maximum rate)
$112=1000.000 (Z-axis maximum rate)

$120, $121, $122 — Ускорение X, Y, Z мм/сек 2

Настройки ускорения для каждой оси в мм/сек 2 определяют скорость изменения скорости движения. Уменьшение значения ускорения сделает движение более плавным, но медленным, тогда как увеличение позволяет достигать желаемой скорости быстрее и делает движение более точным. Каждая ось имеет своё собственное значение ускорения, это значит, что скорость многокоординатного движения будет определяться самой медленной осью.

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


$120=1300.000 (X-axis acceleration)
$121=1300.000 (Y-axis acceleration)
$122=1000.000 (Z-axis acceleration)

$130, $131, $132 — Максимальное перемещение, мм для каждой оси

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


$130=330.000 (X-axis maximum travel)
$131=320.000 (Y-axis maximum travel)
$132=100.000 (Z-axis maximum travel)

Команда обнуление координат в GRBL

Пример кода для драйверов шагового двигателя A4988 и DRV8825

Для A4988

  • $100=100 (X-axis travel resolution)
  • $101=100 (Y-axis travel resolution)

Для DRV8825

  • $100=80.000 (X-axis travel resolution)
  • $101=80.000 (Y-axis travel resolution)

$0=10 (Step pulse time)
$1=255 (Step idle delay)
$2=0 (Step pulse invert)
$3=0 (Step direction invert)
$4=0 (Invert step enable pin)
$5=1 (Invert limit pins)
$6=0 (Invert probe pin)
$10=2 (Status report options)
$11=0.010 (Junction deviation)
$12=0.002 (Arc tolerance)
$13=0 (Report in inches)
$20=0 (Soft limits enable)
$21=0 (Hard limits enable)
$22=1 (Homing cycle enable)
$23=3 (Homing direction invert)
$24=300.000 (Homing locate feed rate)
$25=6000.000 (Homing search seek rate)
$26=230 (Homing switch debounce delay)
$27=3.000 (Homing switch pull-off distance)
$30=255 (Maximum spindle speed)
$31=0 (Minimum spindle speed)
$32=1 (Laser-mode enable)
$100=80.000 (X-axis travel resolution)
$101=80.000 (Y-axis travel resolution)
$102=80.000 (Z-axis travel resolution)
$110=7500.000 (X-axis maximum rate)
$111=7500.000 (Y-axis maximum rate)
$112=1000.000 (Z-axis maximum rate)
$120=1200.000 (X-axis acceleration)
$121=1200.000 (Y-axis acceleration)
$122=1000.000 (Z-axis acceleration)
$130=500.000 (X-axis maximum travel)
$131=500.000 (Y-axis maximum travel)
$132=100.000 (Z-axis maximum travel)

Навигация по проекту:

  1. Покупка и разбор фрезерного станка Cutmaster CM-1500
  2. Модернизация Cutmaster CM-1500
  3. Установка и настройка Grbl
  4. CNCjs + ESP-Link
  5. Grbl + ESC & Brushless motor

В плане выбора прошивок я рассматривал легкие opensource проекты. А в качестве контроллера изначально тыкнул пальцем в Arduino Uno просто потому что это самое дешевое и простое решение. И я хочу доказать, что даже оно на голову круче чем вариант со старым компом с LPT портом, который использовался на моем станке раньше.

На 8-битный мк Atmega328p который используется в Arduino Uno самыми известными прошивками являются Marlin и Grbl. При этом Marlin давно разросся и начиная со второй версии уже не подходит на 8-битные мк. В тоже время Grbl поддерживается по сей день и является узким и производительным решением под 8-битный AVR контроллер.

Установка

Проект Grbl раньше распологался в репозитории github.com/grbl/grbl, но сейчас переехал в github.com/gnea/grbl. На сколько я понимаю, это обусловлено смещением фокуса на главный продукт – G-code парсер gnea.

Прошивку можно скачать из вкладки релизы в репозитории в виде hex-файла или собрать самому с помощью Makefile.

Для загрузки на мк необходимо воспользоваться утилитой avrdude (не обязательно скачивать Arduino IDE). Чтобы вручную не вводить аргументы можно воспользоваться Makefile находящимся в репозитории:

Данная команда исполняет следущую конструкцию:

avrdude -c avrisp2 -P usb -p atmega328p -B 10 -F -U flash:w:grbl.hex:i

При использовании этого метода необходим AVR программатор для загрузки прошивки по AVR ISP порту, это не всегда удобно ввиду отсуствия проргамматора. В этом случае можно воспользоваться предустановленным в Arduino загрузчиком. Загрузчик это специальная программа записанная в память мк (работает аналогично BIOS), однако её может и не быть. Для прошивки таким способом достаточно иметь USB провод и саму плату Arduino. Это также позволяет удобнее загрузить скаченный hex-файл:

avrdude -c arduino -p m328p -U flash:w:path/to/firmware.hex:i -P /dev/tty.usbserial-A804CL9D

Где path/to/firmware.hex – путь к файлу прошивки, а /dev/tty.usbserial-A804CL9D – serial порт подключенной Arduino.

Настройка Grbl

Итак, станок собран, контроллер подключен, прошивка залита. После подключения контроллера к компьютеру по USB и подключения к UART консоли, контроллер должен написать приветственную строку:

Введите $ и нажмите Enter, чтобы Grbl вывел подсказку. На что Grbl должен вывести следующее:

[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]

$-команды используются для просмотра или изменения параметров Grbl, а также запуска процедуры поиска начальной позиции.

Последние четыре команды (которые начинаются не со знака $) – это команды управления в реальном времени, которые могут быть отправлены в любой момент, независимо от того, что в настоящее время делает Grbl. Они либо тут же меняют поведение работающего Grbl или сразу же выводят важные в реальном времени данные, например текущие координаты (aka DRO).

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

Ниже я аккумулировал и причесал информацию о параметрах со следующих источников: portal-pk.ru, cnc-design.ru, r13-project.ru.

Также советую ознакомится ещё с тройкой статей по эксплуатации станка на Grbl:

  • cnc-tex.ru: Установка grbl 1.1 на Arduino uno. Основы работы в программе LaserGRBL
  • habr.com: Самодельный плоттер: советы для начинающих, работа с grbl-прошивкой
  • 3dtoday.ru: ЧПУ фрезер Cyclone PCB Factory. Электроника, настройка прошивки GRBL 1.1f и немного про софт

Параметры Grbl

Для просмотра параметров введите $$ и нажмите Enter. Grbl ответит списком текущих системных настроек. В примере ниже настройки по умолчанию.

$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)

Все параметры хранятся в энергонезависимой памяти мк – EEPROM. Так что они будут автоматически загружены при следующем включении вашей платы Arduino.

$x=val описывает отдельный параметр настроек, причем val это значение параметра.

В предыдущих версиях Grbl каждый параметр имел после себя описание в круглых скобках. Но в Grbl, начиная с v1.1, этого, к сожалению, больше нет. Так было сделано, чтобы освободить flash-память для добавления новых возможностей, появившихся в v1.1. Однако, большинство хороших графических оболочек (GUI) добавляют для вас описания к параметрам, например используемая мной CNCjs.

Для изменения параметра необходимо выполнить команду $x=val. Например, для изменения длины шагового импульса в микросекундах на значение 10мкс, нужно ввести $0=10, завершив команду нажатием клавищи Enter. Если все прошло успешно, Grbl ответит ‘ok’, новые настройки будут сохранены в EEPROM и будут использоваться вплоть до следующего их изменения.

Вы можете перепроверить, что Grbl получил и сохранил верное значение параметра, повторно введя команду $$ для просмотра параметров из памяти.

Описание параметров Grbl

Примечание! Разница между Grbl v0.9 и Grbl v1.1 заключается только в том, что изменился вывод статуса командой $10 и были добавлены команды для новых параметров $30 / $31 — максимальные/минимальные обороты шпинделя и $32 — работа в режиме лазера. Все остальное — осталось без изменений.

$0 – Длительность шагового импульса, микросекунды

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

$1 – Задержка отключения двигателей, миллисекунды

Параметр меняется от 0 до 255.

  • 0 — напряжение снимается сразу;
  • 255 — напряжение не снимается никогда.

Каждый раз, когда ваши шаговые двигатели заканчивают движение и останавливаются, Grbl делает задержку на указанный интервал времени перед отключением питания двигателей. Вы можете всегда держать двигатели включенными (с подачей питания для удержания текущего положения) установив значение этого параметра в максимально возможное значение, равное 255 миллисекунд.

Отключение призвано помочь для тех типов двигателей, которые не следует держать включенными в течении долгого периода времени без какой-либо работы. И еще, имейте в виду, что в процессе отключения некоторые драйверы шаговых двигателей не запоминают на каком микрошаге они остановились, из-за этого вы можете стать свидетелем пропуска шагов при отключении/включении двигателей. В этом случае просто держите двигатели всегда включенными, для этого выполните $1=255.

$2 – Инверсия порта шаговых испульсов, маска

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

Данный параметр задается по следующей маске:

Значение Маска Ось X Ось Y Ось Z
0 000
1 001 +
2 010 +
3 011 + +
4 100 +
5 101 + +
6 110 + +
7 111 + + +

$3 – Инверсия порта направления, маска

Этот параметр инвертирует сигнал направления для каждой из осей (вывод DIR). По-умолчанию, Grbl предполагает, что ось движется в положительном направлении, когда уровень сигнала направления низкий, и в отрицательном — когда высокий. Часто оси в некоторых станках движутся не так. Этот параметр изменит инвертирует сигнал направления для тех осей, что движутся в обратную сторону.

Положительное направление, когда значение перемещения по осям растёт.
Например: X=1..2..3..4..5

Данный параметр задается по той же маске, что и $2.

$4 – Инверсия сигнала включения шаговых двигателей, логический

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

Может потребоваться перезапуск контроллера, чтобы изменения вступили в силу.

$5 – Инверсия входов концевых выключателей, логический

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

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

$6 – Инверсия входа контактного датчика, логический

По умолчанию, вход контактного датчика подтягивается к питанию встроенным резистором подтяжки Arduino. Когда сигнал на входе принимает низкий уровень, Grbl рассматривает это как срабатывание датчика. Для противоположного поведения, просто инвертируйте вход контактного датчика, введя $6=1. Отключается командой $6=0.

Может потребоваться перезапуск контроллера, чтобы изменения втупили в силу.

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

$10 – Отчет состояния, маска

Параметр определяет какие данные реального времени вернет Grbl, когда пользователь запрашивает статус командой ?.

Эти данные включают в себя текущее состояние, текущие координаты, текущую скорость подачи, значения на входах, текущие переопределенные значения, состояния буферов, и номер выполняемой команды G-кода (если было включено при компиляции).

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

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

Используйте таблицу ниже для определения включаемых/отключаемых параметров.

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

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

$11 – Отклонение на стыках, мм

Заданная величина отклонения на стыках, используется модулем управления ускорением для определения скорости перемещения через стыки отрезков запрограммированного в G-коде пути. Например, если путь в G-коде содержит острый выступ с углом в 10 градусов, и станок двигается к нему на максимальной скорости, данный параметр поможет определить насколько нужно притормозить, чтобы выполнить поворот без потери шагов.

Вычисление выполняется доволно сложным образом, но в целом, более высокие значение дают более высокую скорость прохождения углов, повышая риск потерять шаги и сбить позиционирование. Меньшие значение делают модуль управления более аккуратным и приводят к более аккуратной и медленной обработке углов. Так что, если вдруг столкнетесь с проблемой слишком быстрой обработкой углов, уменьшите значение параметра, чтобы заставить станок притормаживать перед прохождением углов. Если хотите, чтобы станок быстрее проходил через стыки, необходимо увеличить значение параметра.

Описание алгоритма обработки углов в Grbl, который учитывает скорость и величину угла на стыке можно прочитать на onehossshay.wordpress.com, а также на blog.kyneticcnc.com.

$12 – Отклонение от дуги, мм

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

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

$13 – Отчет в дюймах, логический

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

$20 – Мягкие границы, логический

Мягкие границы это настройка безопасности, призванная помочь избежать перемещения за пределы допустимой области, которое может повлечь за собой поломку или разрушение оборудования. Она работает за счет информации о текущем положении и пределах допустимого перемещения по каждой из осей. Каждый раз, когда Grbl отправляется G-код движения, он проверяет не произойдет ли выход за пределы допустимой области. И в случае, если происходит нарушение границ, Grbl, где бы он ни находился, немедленно выполняет команду остановки подачи, останавливает шпиндель и охлаждение, а затем выдает сигнал аварии для индикации проблемы. Текущее положение при этом не сбрасывается, поскольку остановка происходит не в результате аварийного принудительного останова, как в случае с жесткими границами.

Мягкие границы требуют включения поддержки процедуры поиска начальной позициии ($22) и аккуратной настройки максимальных границ для перемещения, поскольку Grbl нужно знать где находятся допустимые границы. Работают они так: станок при получении команды $H ищет начальную точку, а далее при работе следит за рабочей координатой, и если контроллеру приходит команда, которая вынудит его выехать за эти границы, то станок прекратит обработку сформировав сигнал ошибки. Текущее положение при этом не сбрасывается. $20=1 для включения, и $20=0 для отключения.

$21 – Жесткие границы, логический

Жесткие границы в общих чертах работают также как и мягкие, но используют аппаратные выключатели. Как правило, вы подсоединяете концевые выключатели (механические, магнитные или оптические) в конце каждой из осей или в тех точках, достижение которых в процессе перемещения, как вы считаете, может привести к проблемам. Когда срабатывает выключатель, он приводит к немедленной остановке любого перемещения, останову охлаждения и шпинделя (если подключен), и переходу в аварийный режим, требующий от вас проверить станок и выполнить сброс контроллера.

Для использования жестких границ с Grbl, соответствующие выводы подтягиваются к питанию внутренним резистором, поэтому все, что от вас требуется — подключить нормально разомкнутый концевой выключатель между выводом и землей и задействовать жесткие границы командой $21=1, отключение – командой $21=0. Мы настоятельно рекомендуем озаботиться подавлением электических наводок и помех, способных повлиять на измерения. Если хотите проверять границы для обоих концов одной оси, просто подключите два выключателя параллельно между выводом и землей, чтобы срабатывание любого из них приводило к срабатыванию жесткой границы.

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

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

$22 – Поиск начальной позиции, логический

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

Для настройки процедуры поиска начальной позиции вам потребуется наличие надежно закрепленных концевых выключателей в некоторой точке, на которые нельзя наткнуться или сдвинуть, в противном случае точка отсчета может быть сбита. Обычно они устанавливаются в самых дальних точках в направлении +x, +y, +z на каждой из осей. Соедините концевые выключатели с соответствующими выводами и землей, так же как и концевые выключатели аппаратных границ и задействуйте поиск начальной позиции. Если интересно, то вы можете использовать граничные выключатели и для аппаратных границ, и для поиска начальной позиции.

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

В файле config.h находятся множество других настроек, ориентированных на продвинутых пользователей. Вы можете отключить блокировку при старте, указать с каких осей начать процедуру поиска, в каком порядке по ним перемещаться, а также многое другое.

Также следует отметить, что при задействованной процедуре поиска начальной позиции Grbl блокирует выполнение команд перемещения G-кода до выполнения поиска начальной позиции. Имеется в виду отсутствие перемещения по осям, пока не будет отключена блокировка ($X). Большинство, если не все контроллеры с ЧПУ, ведут себя аналогично, делается это, в основном, для безопасности, чтобы не позволить оператору допустить ошибку позиционирования.

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

$23 – Инверсия направления начальной точки, маска

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

Она работает точно так же, как и инверсия порта шаговых импульсов или инверсии порта направления, все что вам нужно это указать значение из таблицы (см. параметр $2), указывающее какие оси нужно инвертировать для поиска в противоположном направлении.

$24 – Скорость подачи при точном поиске начальной точки, мм/мин

При поиске нулевой точки контроллер вначале перемещает оси на высокой подаче до срабатывания концевика. Затем делает откат на расстояние $27 и уже на низкой скорости точно определяет координату, вторым касанием концевика. Данный параметр задает скорость перемещения инструмента после отката при точном определении координаты (низкая скорость).

$25 – Скорость подачи при быстром поиске начальной точки, мм/мин

Скорость поиска начальной точки — это начальная скорость с которой контроллер пытается найти концевые выключатели начальной точки.

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

$26 – Подавление дребезга при поиске начальной точки, миллисекунд

Когда срабатывают выключатели, некоторые из них в течении нескольких миллисекунд могут издавать электрический/механический шум приводящий к быстрому переключению сигнала между высоким и низким значениями, прежде чем значение зафиксируется. В основном это наблюдается у механических контактов, ввиду того, что контакт прижимается не сразу, а ещё немного пружинит.

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

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

$27 – Отъезд от начальной точки, мм

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

$30 – Максимальные обороты шпинделя, Об/мин

Задает обороты шпинделя, соответствующие максимальному напряжению на выходе ШИМ, равному 5В. Допускается задавать в программе и более высокие обороты шпинделя, но вывод ШИМ все равно не может быть больше 5В. По-умолчанию, Grbl строит линейную зависимость из 255 отсчетов между максимальными-минимальными оборотами шпинделя и напряжениями на выходе ШИМ из диапазона 5В-0.02В. Значение ШИМ, равное 0В, означает отключение шпинделя. В файле config.h есть дополнительные параметры, влияющие на это поведение.

$31 – Минимальные обороты шпинделя, Об/мин

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

0В означает полное отключение. В случае использования драйвера бесколлекторного мотора нужно произвести его калибровку, чтобы при ШИМ соотвествующим 0В он не работал, а при 0.2В уже работал, а максимальная мощность достигалась при соотвествии ШИМ максимальному напряжению питания.

$32 – Режим лазера, логический

Если параметр отключен, то Grbl будет прерывать движение каждый раз, когда встречает команду изменения оборотов шпинделя S. Это стандартное поведение для фрезеровальных станков, формирующее некоторую паузу, чтобы шпиндель успел изменить скорость своего вращения.

Если включить данный параметр, то контроллер перейдет на режим управления лазером. Лазер подключается на тот же пине отвечающем за обороты шпинделя. В случае с лазером, делать остановки не нужно, иначе в точках изменения яркости будут наблюдаться более черные точки или полосы. Значение скважности ШИМ, отвечающего за управление оборотами шпинделя, будет меняться в процессе движения сразу же, без выполнения остановки.

Обязательно прочтите руководство Grbl по работе в режиме лазера и документацию на ваш лазер перед включением данного режима. Лазеры очень опасны. Они многут мгновенно лишить вас зрения или стать причиной пожара. Grbl, как и указано в его GPL лицензии, не несет никакой ответственности за любой вред, нанесенный в результате использования данной программы.

$100, $101, $102 – [X,Y,Z] шагов/мм

Данные параметры задают количество шагов, сделав которое ось сдвинется на 1мм.

Например шаговый двигатель имеет 200 шагов на 1 оборот, контроллер настроен на 16 микрошаг. Теперь допустим, что при вращении двигателя на 1 оборот инструмент переместился на 32мм, тогда имеем. 200 шагов умножить на 16 микрошаг – 3200 импульсов нужно подать на контроллер, что бы шаговый двигатель сделал 1 оборот, и переместил инструмент на 32мм. Значит на 1мм он сдвинется за 3200/32мм=100 шагов.

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

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

$110, $111, $112 – [X,Y,Z] Максимальная скорость, мм/мин

Эти параметры задают максимальную скорость перемещения для каждой из осей. Контроллер при получении G-кода анализирует скорости указанные в нем, и если команда задает скорость выше данных значений, то он ограничивает скорость.

Каждая из осей имеет свою максимальную скорость, что полезно для ограничения скорости, как правило, более меденной оси Z. Самый просто способ найти нужные значения — тестировать каждую ось раз за разом немного увеличивая скорость и выполняя действие перемещения.

Например, для проверки оси X, отправьте Grbl команду вида G0 X50 с расстоянием перемещения, достаточно большим для разгона до максимальной скорости. Максимальное значение будет достигнуто, когда ваш шаговый двигатель застопорится. Он будет издавать жужжащий звук, но ничего страшного с ним не случится. Задайте значение на 10-20% меньше обнаруженного, чтобы учесть износ, трение и массу вашей рабочей головки/инструмента. Повторите процесс для остальных осей.

Эти значения также определяют максимальную скорость перемещения при выполненнии команды G0.

$120, $121, $122 – [X,Y,Z] Ускорение, мм/сек^2

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

И опять, как и в случает с максимальными скоростями, самый простой способ определить значение этих параметров — индивидуально протестировать каждую из осей, медленно увеличивая значения, пока мотор не застопорится. Завершите настройку сохранением значения на 10-20% меньшим от обнаруженного. Это позволит учесть износ, трение и инертность массы. Мы настоятельно рекомендуем вчерновую протестировать некоторое количество программ на G-коде, прежде чем окончательно остановиться на выборанных значениях. Иногда нагрузка на ваш станок может оказаться иной при одновременном перемещении по нескольким осям.

$130, $131, $132 – [X,Y,Z] Максимальное перемещение, мм

Эти параметры задают максимальную дистанцию перемещения в мм от одного конца каждой из осей до другого. Они имеет смысл только если вы задействовали мягкие границы (и поиск начальной точки), поскольку используются только модулем проверки мягких границ для определения выхода за пределы допустимой области в процессе перемещения. См. параметры $20, $22.

Мои настройки

Система координат

Для начала советую определить переднюю сторону станка. Это одна из сторон параллельных порталу. Затем в левом углу разместите начало координат. Потом вектора осей исходящие из него:

  • вектор оси X – ось расположенная на портале;
  • вектор оси Y – ось по которой перемещается портал;
  • вектор оси Z — ось рабочего инструмента, направлена вверх от рабочей поверхности (ноль будет в самом низком положении инструмента).

image

Такое расположение осей будет легко сопоставить с тем, которое вы будете использовать при моделировании изделий и составлении УП. А также в принципе позволит легко ориентироваться в координатах станка.

Это расположение осей также задекларировано стандартом DIN 66217, подробнее в этом руководстве.

Настройка алгоритма поиска домашней точки

По-правильному нужно установить концевики в максимальных положениях осей. Это позволит переместиться в нулевую точку без срабатывания концевых выключателей. Если это не так то, расположение концевых выключателей можно инвертировать использовав параметр $23. В этом случае нужно помнить про то, что, послав станок в начальную точку, он заденет концевой выключатель.

Тут нужно сделать ещё одно замечание: при инвертировании расположения концевых выключателей это смещает машинную систему координат относительно нуля, на заднное параметрами $130, $131, $132 расстояния минус расстояние заданное параметром $27.

В нормальном состояннии домашняя точка определяемая концевыми выключателями находятся в нуле, а вся рабочая зона в отрицательном значении.

Мои параметры

Я пришел к следующему набору параметров (показаны только отличиные от базовых значения):

Общие:

  • $0=15 – длина импульса на шаговик, поставил как в документации к PLC330.
  • $1=255 – запрет на отключение двигателей. При тестах по расчету коэфициента steps/mm ось не останавливалась продолжая движение по энерции. Очевидно, что стандартных 25мс было недостаточно для остановки. Поэтому я выбрал никогда не снимать питание с двигателей, так пропало движение оси по энерции. Также на PLC330 есть автоматическое снижение тока на двигателе до 300мА в случае отсуствия новых команд в течении нескольких секунд. Это сыграло на руку.
  • $3=3 – инвертировал движение по оси X и Y (вместо этого можно просто поменять подключение обмоток шаговых моторов на драйвере, но я сделал чтобы все по цветам было одинаково).
  • $4=1 – инвертировал пин ENABLE, тк в порту LPT нормальная логика (высокий уровень соотвествует включению и наоборот).
  • $5=1 – инвертировал пины концевиков, тк в порту LPT нормальная логика.
  • $10=1 – добавил в вывод машинные координаты.

Работа с концевиками:

  • $21=1 – включил аварийную остановку при срабатывании концевиков.
  • $22=1 – включил алгортим поиска начальной точки по концевикам.
  • $27=2 – увеличил отъезд от концевика на 2мм, тк рама немного изогнута и при алгоритме поиска нулевой точки, иногда срабатывал концевик по X.

Линейные коэффициенты, скорости и границы:

  • $100=78.353, $101=78.353, $102=1066.666 – задал количество шагов на 1мм перемещения по осям X, Y, Z.
  • $110=1000, $111=1000 – увеличил скорость перемещения по осям X, Y до 1000mm/min.
  • $130=500, $131=990, $132=200 задал максимальные перемещения по всем осям.

Расчет количества шагов на 1мм пермещения

Я добавил этот пункт, тк считаю важным понимать откуда берутся параметры 100-102 и что их можно рассчитать математически, а не подбирать, выполняя перещение станка и замеряя фактическое перещение.

На примере моего станка это очень удобно, тк он выполнен на двух видах линейных передач: трапецеидальный винт (на оси Z) и зубчатая рейка (на остальных осях). Подробнее о комплектующих моего станка в первой статье из этой серии.

Начнем с расчета трапецеидального винта. Это однозаходный винт с правой резьбой, диаметром 10мм и ходом 3мм. Ход винта это перемещение гайки при одном полном обороте. Подробнее о типах трапецеидальных винтов в этом видео.

На драйверах двигателя у меня включено деление шага 1/16, а угол двигателя 57HS76 на шаг составляет 1.8°. Это означает что двигатель совершает один оборот за 360° / 1.8° = 200шагов. Но так как у меня один шаг делится на 16 => 200×16 = 3200 импусов на один оборот.

Тоесть у нас получается простая пропорция перемещение на 3мм за 3200 импульсов, разделив количество импульсов на перещение получим 1066.666 импульсов на 1мм.

С зубчатой передачей чуть сложнее. Расчитаем диаметр шестерни по формуле: D = m × z, где m – модуль шестерни (в моём случае равный 1), z – количество зубов (в моём случае 13). Получается диамет моей шестерни равен 13мм. Далее расчитаем длину окружности – расстояние на которое перемещается шестерня по зубчатой рейке за один полный оборот: L = Pi × D, => L = 3.14159265 × 13 ≈ 40.84.

По аналогии расчитываем пропорцию для перемещения на 1мм => 3200 / 40.84 = 78.353.

          В предыдущей нашей статье мы узнали как устанавиливать программу Universal G-Code Sender для подключения GRBL контроллера к компьютеру, в этой статье мы рассмотрим базовые вопросы настройки прошивки GRBL.

          После удачного подключения мы должны увидеть в окне «Консоль» программы коннектора перечисленные параметры прошивки примерно такого содержания (могут быть отличия, в зависимости от версии прошивки или программы коннектора, мы приводим для версии прошивки Grbl 1.1g :

**** Connected to COM4 @ 115200 baud ****

Grbl 1.1g [‘$’ for help]

>>> $$

$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

>>> $G

[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]

ok

Познакомимся поближе с тем, что тут написано.

     В первой строке мы видим параметры подключения

**** Connected to COM4 @ 115200 baud ****

— порт COM4;

— скорость подключения 115200 бит/сек.

     Эти параметры мы выставили при подключении контроллера к терминалу.

     Во второй строке выведена информация о версии прошивки контроллера:

Grbl 1.1g [‘$’ for help]

— версия GRBL 1.1g.

— [‘$’ for help] ([‘$’ для справки]) — для получения справки по прошивке GRBL необходимо ввести в командной строке $ и нажать Enter. Мы рассмотрим работу с этой частью прошивки в статье «Настройка GRBL — команды реального времени«.

     Третья строка имитирует отправку запроса ‘$$’ в контроллер и вывод основных параметров прошивки, влияющих на работу нашего оборудования, смысл и настройку этих параметров мы рассмотрим в статье «Настройка GRBL — системные команды» .

Следующая строка

>>> $G

имитирует запрос $G и контроллер проанализирует активные команды Gcode.

[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]

Назначение этих параметров мы рассмотрим позже.

И так мы узнали, что в прошивке GRBL есть следующие типы команд:

‘$$’ настройки прошивки — используются для редактирования основных параметров и режимов работы станка, эти настройки хранятся в памяти контроллера.

‘$’ — системные команды — работающие в реальном времени, дающие нам возможность узнать текущее состояние системы или повлиять на него в любой момент.

команды реального времени — выводят на экран текущее состояние рабочего процесса.

Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC milling. It will run on a vanilla Arduino (Duemillanove/Uno) as long as it sports an Atmega 328.

The controller is written in highly optimized C utilizing every clever feature of the AVR-chips to achieve precise timing and asynchronous operation. It is able to maintain up to 30kHz of stable, jitter free control pulses.

It accepts standards-compliant g-code and has been tested with the output of several CAM tools with no problems. Arcs, circles and helical motion are fully supported, as well as, all other primary g-code commands. Macro functions, variables, and most canned cycles are not supported, but we think GUIs can do a much better job at translating them into straight g-code anyhow.

Grbl includes full acceleration management with look ahead. That means the controller will look up to 18 motions into the future and plan its velocities ahead to deliver smooth acceleration and jerk-free cornering.

List of Supported G-Codes in Grbl v0.9 Master:
  - Non-Modal Commands: G4, G10L2, G10L20, G28, G30, G28.1, G30.1, G53, G92, G92.1
  - Motion Modes: G0, G1, G2, G3, G38.2, G38.3, G38.4, G38.5, G80
  - Feed Rate Modes: G93, G94
  - Unit Modes: G20, G21
  - Distance Modes: G90, G91
  - Arc IJK Distance Modes: G91.1
  - Plane Select Modes: G17, G18, G19
  - Tool Length Offset Modes: G43.1, G49
  - Cutter Compensation Modes: G40
  - Coordinate System Modes: G54, G55, G56, G57, G58, G59
  - Control Modes: G61
  - Program Flow: M0, M1, M2, M30*
  - Coolant Control: M7*, M8, M9
  - Spindle Control: M3, M4, M5
  - Valid Non-Command Words: F, I, J, K, L, N, P, R, S, T, X, Y, Z

Понравилась статья? Поделить с друзьями:
  • Hd wifi cam pro инструкция на русском скачать
  • Ремантадин таблетки инструкция по применению детям 13 лет дозировка
  • Пошаговая инструкция работы с вайлдберриз для новичков с нуля
  • Отчет по смп по 223 фз пошаговая инструкция
  • Слово запрещается в руководстве по эксплуатации на изделие используют когда