В предыдущих статьях мы рассмотрели, где скачать прошивку grbl 1.1, как установить данную прошивку и с помощью какой программы производить настройки. Сегодня рассмотрим какие параметры мы получаем от станка. И как произвести настройку grbl 1.1 – инструкция на русском языке.
Включение станка, что за информация нам выдает grbl 1.1?
- В предыдущей статье про Universal G-Code Sender при подключении станка, в консоли программы, мы видели информацию:
Что означают все эти строки. Давайте рассмотрим их по порядку. Первая строка.
**** 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]
Команды 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 1.1.zip | 300 Kb | 2231 | Скачать |
Если вы хотите собрать или находитесь в процессе создания собственного станка с ЧПУ, то, скорее всего, вы встретите термин GRBL. Итак, в этом руководстве мы узнаем, что такое GRBL, как установить и как использовать его для управления вашим станком с ЧПУ на базе Arduino.
Кроме того, мы узнаем, как использовать Universal G-code Sender, популярное программное обеспечение контроллера GRBL с открытым исходным кодом.
Что такое GRBL?
GRBL — это программное обеспечение или прошивка с открытым исходным кодом, которая позволяет управлять движением для станков с ЧПУ. Мы можем легко установить прошивку GRBL на Arduino и сразу же получить недорогой высокопроизводительный контроллер ЧПУ. GRBL использует G-код в качестве ввода и выводит управление движением через Arduino.
Для лучшего понимания мы можем взглянуть на следующую схему:
Из схемы мы можем видеть место GRBL в принципе работы станка с ЧПУ. Это прошивка, которую нам нужно установить или загрузить в Arduino, чтобы она могла управлять шаговыми двигателями станка с ЧПУ. Другими словами, функция прошивки GRBL заключается в переводе G-кода в движение двигателя.
Требуемое оборудование
- Arduino — Как мы уже говорили, нам понадобится Arduino для установки GRBL. В частности, нам нужна плата Arduino на базе Atmega 328, а это означает, что мы можем использовать либо Arduino UNO, либо Nano.
- Шаговые двигатели. Очевидно, что шаговые двигатели обеспечивают движение машины.
- Драйверы — для управления шаговыми двигателями нам нужны драйверы, и распространенный выбор, когда дело доходит до небольших станков с ЧПУ DIY (использующих шаговые двигатели NEMA 14 или 17), — это драйверы A4988 или DRV8825.
- Arduino CNC Shield — для подключения шаговых драйверов к Arduino самый простой способ — использовать Arduino CNC Shield. Он использует все контакты Arduino и обеспечивает простой способ подключения всего, шаговых двигателей, шпинделя / лазера, концевых выключателей, охлаждающего вентилятора и т. д.
Обратите внимание, что это только основные электронные компоненты, которые нам нужны, чтобы понять, как работает станок с ЧПУ.
В качестве примера того, как все должно быть соединено, мы можем взглянуть на одну из машин для резки пенопласта с ЧПУ сделанную своими руками.
Здесь вы можете проверить и получить основные электронные компоненты, необходимые для сборки этого станка с ЧПУ:
- Шаговый двигатель — NEMA 17
- Шаговый драйвер A4988
- Arduino CNC Shield
- Arduino Uno
Главный инструмент этого станка с ЧПУ — это горячая проволока, которая может легко расплавить или прорезать пенополистирол и придать любую форму, которую мы хотим.
Как установить GRBL
Во-первых, чтобы иметь возможность установить или загрузить GRBL в Arduino, нам понадобится Arduino IDE.
Затем мы можем скачать прошивку GRBL с github.com.
Загрузите файл.ZIP и выполните следующие действия:
- Откройте файл grbl-master.zip и извлеките файлы
- Откройте IDE Arduino, перейдите в Sketch> Включить библиотеку> Добавить библиотеку.ZIP…
Перейдите в извлеченную папку «grbl-master», в ней выберите папку «grbl» и щелкните открытый файл. Теперь нам нужно использовать GRBL как библиотеку Arduino.
- Затем перейдите в Файл> Примеры> grbl> grblUpload. Откроется новый скетч, и нам нужно загрузить его на плату Arduino. Код может выглядеть странно, так как это всего лишь одна строка, но не беспокойтесь, все происходит в фоновом режиме в библиотеке. Итак, нам просто нужно выбрать плату Arduino, COM-порт и нажать эту кнопку загрузки, и все готово.
Конфигурация GRBL
На этом этапе мы должны настроить GRBL для нашей машины. Мы можем сделать это через Serial Monitor IDE Arduino. Как только мы откроем Serial Monitor, мы получим сообщение типа «Grbl 1.1h [‘$’ for help]». Если вы не видите это сообщение, убедитесь, что вы изменили скорость передачи данных на 115200.
Если мы введем «$$», мы получим список команд или текущих настроек, и они будут выглядеть примерно так:
$100 = 250 000 (x, шаг / мм)
$101 = 250 000 (y, шаг / мм)
$102 = 3200 000 (z, шаг / мм)
$110 = 500.000 (x макс. Скорость, мм / мин)
$111 = 500.000 (y макс. Скорость, мм / мин)
$ 112 = 500.000 (макс. скорость z, мм / мин)
$ 120 = 10.000 (ускорение x, мм / сек ^ 2)
$ 121 = 10.000 (ускорение y, мм / сек ^ 2)
$ 122 = 10.000 (ускорение z, мм / сек ^ 2)
Все эти команды могут или должны быть настроены в соответствии с нашим станком с ЧПУ. Например, с первой командой, $100 = 250,000 (x, шаг / мм), мы можем отрегулировать шаги на мм машины, или мы можем указать, сколько шагов должен сделать двигатель, чтобы наша ось X сместилась на 1 мм.
Однако я бы посоветовал оставить эти настройки как есть. Есть более простой способ настроить их в соответствии с нашей машиной с помощью программного обеспечения контроллера, который мы объясним в следующем разделе.
Контроллер GRBL
Итак, после того, как мы установили прошивку GRBL, теперь наш Arduino знает, как читать G-код и как управлять станком с ЧПУ в соответствии с ним. Однако, чтобы отправить G-код на Arduino, нам нужен какой-то интерфейс или программное обеспечение контроллера, которое сообщит Arduino, что делать. На самом деле для этого существует множество программ как с открытым кодом, так и коммерческих, подробно о них вы можете узнать из нашей статьи. Конечно, мы будем придерживаться открытого исходного кода, поэтому в качестве примера мы будем использовать Univarsal G-code Sender.
Как использовать универсальный отправитель G-кода
В этом примере я буду использовать версию платформы 2.0. После загрузки нам нужно извлечь zip-файл, перейти в папку «bin» и открыть любой из исполняемых файлов «ugsplatfrom». На самом деле это программа JAVA, поэтому для запуска этой программы сначала необходимо установить среду выполнения JAVA.
Как только мы откроем универсальный отправитель G-кода, сначала нам нужно настроить машину и настроить параметры GRBL, показанные ранее. Для этой цели мы воспользуемся мастером настройки UGS, который намного удобнее, чем вводить команды вручную через Serial Monitor IDE Arduino.
Первый шаг здесь — выбрать скорость передачи, которая должна быть 115200, и порт, к которому подключен наш Arduino. Как только мы подключим Univarsal G-code Sender к Arduino, на следующем шаге мы сможем проверить направление движения двигателей.
При необходимости мы можем изменить направление с помощью мастера или вручную переключить соединение двигателя на Arduino CNC Shield.
На следующем шаге мы можем настроить параметр шагов / мм, о котором мы упоминали ранее. Здесь гораздо проще понять, как его настроить, потому что мастер настройки вычислит и сообщит нам, до какого значения мы должны обновить параметр.
Значение по умолчанию — 250 шагов / мм. Это означает, что если мы нажмем кнопку перемещения «x +», двигатель сделает 250 шагов. Теперь, в зависимости от количества физических шагов двигателя, выбранного шагового разрешения и типа передачи, машина будет перемещаться на некоторое расстояние. Используя линейку, мы можем измерить фактическое перемещение машины и ввести это значение в поле «Фактическое перемещение». На основании этого мастер рассчитает и сообщит нам, на какое значение следует изменить параметр шаги / мм.
В моем случае станок сдвинулся на 3 мм. В соответствии с этим мастер предложил обновить параметр шаги / мм до значения 83.
После обновления этого значения станок теперь движется правильно, 1 мм в программном обеспечении означает 1 мм для станка с ЧПУ.
В консоли UGS, когда мы выполняем каждое действие, мы можем видеть выполняемые команды. Мы можем заметить, что, обновив параметр steps / mm, программа UGS фактически отправила в Arduino или прошивку GRBL команду, о которой мы упоминали ранее. Это было значение по умолчанию: $100 = 250 000 (x, шаг / мм), и теперь мы обновили значение до 83 шагов на мм: $100 = 83.
На следующем этапе мы можем включить концевые выключатели и проверить, правильно ли они работают.
В зависимости от того, являются ли они нормально разомкнутым или нормально замкнутым соединением, мы также можем инвертировать их здесь.
Здесь стоит отметить, что иногда нам нужно отключить концевой выключатель оси Z. Так было сj станком для резки пенопласта с ЧПУ, где мне не нужен был концевой выключатель оси Z, и мне пришлось отключить его, чтобы иметь возможность правильно разместить станок. Итак, для этого нам нужно отредактировать файл config.h, который находится в папке библиотеки Arduino (или Documents Arduino libraries).
Здесь нам нужно найти линии цикла возврата в исходное положение и прокомментировать установку по умолчанию для 3-х осевого станка с ЧПУ и раскомментировать настройку для 2-х осевых станков. Чтобы изменения вступили в силу, нам нужно сохранить файл и повторно загрузить эскиз grblUpload на нашу плату Arduino.
Тем не менее, на следующем шаге мы можем либо включить, либо отключить возвращение в исходное положение фрезерной обработки с ЧПУ.
Используя кнопку «Возврат в исходное положение», машина начнет движение к концевым выключателям. Если все пойдет наоборот, мы можем легко изменить направление.
Наконец, на последнем шаге мастера настройки мы можем включить мягкие ограничения для нашего станка с ЧПУ.
Мягкие ограничения не позволяют машине выходить за пределы установленной рабочей зоны.
Заключение
Итак, благодаря прошивке GRBL и Arduino мы можем легко настроить и запустить наш DIY-станок с ЧПУ. Конечно, в этом руководстве мы рассмотрели только основы, но я думаю, что этого было достаточно, чтобы понять, как все работает и как запустить и запустить ваш первый станок с ЧПУ.
Конечно, доступно множество других настроек и функций, так как GRBL действительно совместима с прошивкой контроллера ЧПУ. Все это подробно объясняется в документации GRBL, так что вы всегда можете проверить их на их вики-странице на github.com.
Кроме того, существует множество других программ контроллера GRBL с открытым исходным кодом, таких как Universal G-code Sender, и вот несколько: GRBLweb (веб-браузер), GrblPanel (графический интерфейс Windows), grblControl (графический интерфейс Windows / Linux), Easel (на основе браузера) и т. д. Вы должны изучить их и посмотреть, какой из них вам больше подходит.
Навигация по проекту:
- Покупка и разбор фрезерного станка Cutmaster CM-1500
- Модернизация Cutmaster CM-1500
- Установка и настройка Grbl
- CNCjs + ESP-Link
- 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
— ось рабочего инструмента, направлена вверх от рабочей поверхности (ноль будет в самом низком положении инструмента).
Такое расположение осей будет легко сопоставить с тем, которое вы будете использовать при моделировании изделий и составлении УП. А также в принципе позволит легко ориентироваться в координатах станка.
Это расположение осей также задекларировано стандартом 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
.
Getting Started
First, connect to Grbl using the serial terminal of your choice.
Set the baud rate to 115200 as 8-N-1 (8-bits, no parity, and 1-stop bit.)
Once connected
you should get the Grbl-prompt, which looks like this:
Type $ and press enter to have Grbl print a help message. You should not see any local echo of the $ and enter. Grbl should respond with:
[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]
The ‘$’-commands are Grbl system commands used to tweak the settings, view or change Grbl’s states and running modes, and start a homing cycle. The last four non-‘$’ commands are realtime control commands that can be sent at anytime, no matter what Grbl is doing. These either immediately change Grbl’s running behavior or immediately print a report of the important realtime data like current position (aka DRO).
##Grbl Settings
$$ — View Grbl settings
To view the settings, type $$
and press enter after connecting to Grbl. Grbl should respond with a list of the current system settings, as shown in the example below. All of these settings are persistent and kept in EEPROM, so if you power down, these will be loaded back up the next time you power up your Arduino.
The x
of $x=val
indicates a particular setting, while val
is the setting value. In prior versions of Grbl, each setting had a description next to it in ()
parentheses, but Grbl v1.1+ no longer includes them unfortunately. This was done to free up precious flash memory to add the new features available in v1.1. However, most good GUIs will help out by attaching descriptions for you, so you know what you are looking at.
$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 — Save Grbl setting
The $x=val
command saves or alters a Grbl setting, which can be done manually by sending this command when connected to Grbl through a serial terminal program, but most Grbl GUIs will do this for you as a user-friendly feature.
To manually change e.g. the microseconds step pulse option to 10us you would type this, followed by an enter:
If everything went well, Grbl will respond with an ‘ok’ and this setting is stored in EEPROM and will be retained forever or until you change them. You can check if Grbl has received and stored your setting correctly by typing $$
to view the system settings again.
Grbl’s $x=val
settings and what they mean
NOTE: From Grbl v0.9 to Grbl v1.1, only $10
status reports changed and new $30
/ $31
spindle rpm max/min and $32
laser mode settings were added. Everything else is the same.
$0 – Step pulse, microseconds
Stepper drivers are rated for a certain minimum step pulse length. Check the data sheet or just try some numbers. You want the shortest pulses the stepper drivers can reliably recognize. If the pulses are too long, you might run into trouble when running the system at very high feed and pulse rates, because the step pulses can begin to overlap each other. We recommend something around 10 microseconds, which is the default value.
$1 — Step idle delay, milliseconds
Every time your steppers complete a motion and come to a stop, Grbl will delay disabling the steppers by this value. OR, you can always keep your axes enabled (powered so as to hold position) by setting this value to the maximum 255 milliseconds. Again, just to repeat, you can keep all axes always enabled by setting $1=255
.
The stepper idle lock time is the time length Grbl will keep the steppers locked before disabling. Depending on the system, you can set this to zero and disable it. On others, you may need 25-50 milliseconds to make sure your axes come to a complete stop before disabling. This is to help account for machine motors that do not like to be left on for long periods of time without doing something. Also, keep in mind that some stepper drivers don’t remember which micro step they stopped on, so when you re-enable, you may witness some ‘lost’ steps due to this. In this case, just keep your steppers enabled via $1=255
.
$2 – Step port invert, mask
This setting inverts the step pulse signal. By default, a step signal starts at normal-low and goes high upon a step pulse event. After a step pulse time set by $0
, the pin resets to low, until the next step pulse event. When inverted, the step pulse behavior switches from normal-high, to low during the pulse, and back to high. Most users will not need to use this setting, but this can be useful for certain CNC-stepper drivers that have peculiar requirements. For example, an artificial delay between the direction pin and step pulse can be created by inverting the step pin.
This invert mask setting is a value which stores the axes to invert as bit flags. You really don’t need to completely understand how it works. You simply need to enter the settings value for the axes you want to invert. For example, if you want to invert the X and Z axes, you’d send $2=5
to Grbl and the setting should now read $2=5 (step port invert mask:00000101)
.
Setting Value | Mask | Invert X | Invert Y | Invert Z |
---|---|---|---|---|
0 | 00000000 | N | N | N |
1 | 00000001 | Y | N | N |
2 | 00000010 | N | Y | N |
3 | 00000011 | Y | Y | N |
4 | 00000100 | N | N | Y |
5 | 00000101 | Y | N | Y |
6 | 00000110 | N | Y | Y |
7 | 00000111 | Y | Y | Y |
$3 – Direction port invert, mask
This setting inverts the direction signal for each axis. By default, Grbl assumes that the axes move in a positive direction when the direction pin signal is low, and a negative direction when the pin is high. Often, axes don’t move this way with some machines. This setting will invert the direction pin signal for those axes that move the opposite way.
This invert mask setting works exactly like the step port invert mask and stores which axes to invert as bit flags. To configure this setting, you simply need to send the value for the axes you want to invert. Use the table above. For example, if want to invert the Y axis direction only, you’d send $3=2
to Grbl and the setting should now read $3=2 (dir port invert mask:00000010)
$4 — Step enable invert, boolean
By default, the stepper enable pin is high to disable and low to enable. If your setup needs the opposite, just invert the stepper enable pin by typing $4=1
. Disable with $4=0
. (May need a power cycle to load the change.)
$5 — Limit pins invert, boolean
By default, the limit pins are held normally-high with the Arduino’s internal pull-up resistor. When a limit pin is low, Grbl interprets this as triggered. For the opposite behavior, just invert the limit pins by typing $5=1
. Disable with $5=0
. You may need a power cycle to load the change.
NOTE: If you invert your limit pins, you will need an external pull-down resistor wired in to all of the limit pins to prevent overloading the pins with current and frying them.
$6 — Probe pin invert, boolean
By default, the probe pin is held normally-high with the Arduino’s internal pull-up resistor. When the probe pin is low, Grbl interprets this as triggered. For the opposite behavior, just invert the probe pin by typing $6=1
. Disable with $6=0
. You may need a power cycle to load the change.
NOTE: If you invert your probe pin, you will need an external pull-down resistor wired in to the probe pin to prevent overloading it with current and frying it.
$10 — Status report, mask
This setting determines what Grbl real-time data it reports back to the user when a ‘?’ status report is sent. This data includes current run state, real-time position, real-time feed rate, pin states, current override values, buffer states, and the g-code line number currently executing (if enabled through compile-time options).
By default, the new report implementation in Grbl v1.1+ will include just about everything in the standard status report. A lot of the data is hidden and will appear only if it changes. This increases efficiency dramatically over of the old report style and allows you to get faster updates and still get more data about your machine. The interface documentation outlines how it works and most of it applies only to GUI developers or the curious.
To keep things simple and consistent, Grbl v1.1 has only two reporting options. These are primarily here just for users and developers to help set things up.
- Position type may be specified to show either machine position (
MPos:
) or work position (WPos:
), but no longer both at the same time. Enabling work position is useful in certain scenarios when Grbl is being directly interacted with through a serial terminal, but machine position reporting should be used by default. - Usage data of Grbl’s planner and serial RX buffers may be enabled. This shows the number of blocks or bytes available in the respective buffers. This is generally used to helps determine how Grbl is performing when testing out a streaming interface. This should be disabled by default.
Use the table below enables and disable reporting options. Simply add the values listed of what you’d like to enable, then save it by sending Grbl your setting value. For example, the default report with machine position and no buffer data reports setting is $10=1
. If work position and buffer data are desired, the setting will be $10=2
.
Report Type | Value | Description |
---|---|---|
Position Type | 1 | Enabled MPos: . Disabled WPos: . |
Buffer Data | 2 | Enabled Buf: field appears with planner and serial RX available buffer. |
$11 — Junction deviation, mm
Junction deviation is used by the acceleration manager to determine how fast it can move through line segment junctions of a G-code program path. For example, if the G-code path has a sharp 10 degree turn coming up and the machine is moving at full speed, this setting helps determine how much the machine needs to slow down to safely go through the corner without losing steps.
How we calculate it is a bit complicated, but, in general, higher values gives faster motion through corners, while increasing the risk of losing steps and positioning. Lower values makes the acceleration manager more careful and will lead to careful and slower cornering. So if you run into problems where your machine tries to take a corner too fast, decrease this value to make it slow down when entering corners. If you want your machine to move faster through junctions, increase this value to speed it up. For curious people, hit this link to read about Grbl’s cornering algorithm, which accounts for both velocity and junction angle with a very simple, efficient, and robust method.
$12 – Arc tolerance, mm
Grbl renders G2/G3 circles, arcs, and helices by subdividing them into teeny tiny lines, such that the arc tracing accuracy is never below this value. You will probably never need to adjust this setting, since 0.002mm
is well below the accuracy of most all CNC machines. But if you find that your circles are too crude or arc tracing is performing slowly, adjust this setting. Lower values give higher precision but may lead to performance issues by overloading Grbl with too many tiny lines. Alternately, higher values traces to a lower precision, but can speed up arc performance since Grbl has fewer lines to deal with.
For the curious, arc tolerance is defined as the maximum perpendicular distance from a line segment with its end points lying on the arc, aka a chord. With some basic geometry, we solve for the length of the line segments to trace the arc that satisfies this setting. Modeling arcs in this way is great, because the arc line segments automatically adjust and scale with length to ensure optimum arc tracing performance, while never losing accuracy.
$13 — Report inches, boolean
Grbl has a real-time positioning reporting feature to provide a user feedback on where the machine is exactly at that time, as well as, parameters for coordinate offsets and probing. By default, it is set to report in mm, but by sending a $13=1
command, you send this boolean flag to true and these reporting features will now report in inches. $13=0
to set back to mm.
$20 — Soft limits, boolean
Soft limits is a safety feature to help prevent your machine from traveling too far and beyond the limits of travel, crashing or breaking something expensive. It works by knowing the maximum travel limits for each axis and where Grbl is in machine coordinates. Whenever a new G-code motion is sent to Grbl, it checks whether or not you accidentally have exceeded your machine space. If you do, Grbl will issue an immediate feed hold wherever it is, shutdown the spindle and coolant, and then set the system alarm indicating the problem. Machine position will be retained afterwards, since it’s not due to an immediate forced stop like hard limits.
NOTE: Soft limits requires homing to be enabled and accurate axis maximum travel settings, because Grbl needs to know where it is. $20=1
to enable, and $20=0
to disable.
$21 — Hard limits, boolean
Hard limit work basically the same as soft limits, but use physical switches instead. Basically you wire up some switches (mechanical, magnetic, or optical) near the end of travel of each axes, or where ever you feel that there might be trouble if your program moves too far to where it shouldn’t. When the switch triggers, it will immediately halt all motion, shutdown the coolant and spindle (if connected), and go into alarm mode, which forces you to check your machine and reset everything.
To use hard limits with Grbl, the limit pins are held high with an internal pull-up resistor, so all you have to do is wire in a normally-open switch with the pin and ground and enable hard limits with $21=1
. (Disable with $21=0
.) We strongly advise taking electric interference prevention measures. If you want a limit for both ends of travel of one axes, just wire in two switches in parallel with the pin and ground, so if either one of them trips, it triggers the hard limit.
Keep in mind, that a hard limit event is considered to be critical event, where steppers immediately stop and will have likely have lost steps. Grbl doesn’t have any feedback on position, so it can’t guarantee it has any idea where it is. So, if a hard limit is triggered, Grbl will go into an infinite loop ALARM mode, giving you a chance to check your machine and forcing you to reset Grbl. Remember it’s a purely a safety feature.
$22 — Homing cycle, boolean
Ahh, homing. For those just initiated into CNC, the homing cycle is used to accurately and precisely locate a known and consistent position on a machine every time you start up your Grbl between sessions. In other words, you know exactly where you are at any given time, every time. Say you start machining something or are about to start the next step in a job and the power goes out, you re-start Grbl and Grbl has no idea where it is. You’re left with the task of figuring out where you are. If you have homing, you always have the machine zero reference point to locate from, so all you have to do is run the homing cycle and resume where you left off.
To set up the homing cycle for Grbl, you need to have limit switches in a fixed position that won’t get bumped or moved, or else your reference point gets messed up. Usually they are setup in the farthest point in +x, +y, +z of each axes. Wire your limit switches in with the limit pins and ground, just like with the hard limits, and enable homing. If you’re curious, you can use your limit switches for both hard limits AND homing. They play nice with each other.
By default, Grbl’s homing cycle moves the Z-axis positive first to clear the workspace and then moves both the X and Y-axes at the same time in the positive direction. To set up how your homing cycle behaves, there are more Grbl settings down the page describing what they do (and compile-time options as well.)
Also, one more thing to note, when homing is enabled. Grbl will lock out all G-code commands until you perform a homing cycle. Meaning no axes motions, unless the lock is disabled ($X) but more on that later. Most, if not all CNC controllers, do something similar, as it is mostly a safety feature to prevent users from making a positioning mistake, which is very easy to do and be saddened when a mistake ruins a part. If you find this annoying or find any weird bugs, please let us know and we’ll try to work on it so everyone is happy.
NOTE: Check out config.h for more homing options for advanced users. You can disable the homing lockout at startup, configure which axes move first during a homing cycle and in what order, and more.
$23 — Homing dir invert, mask
By default, Grbl assumes your homing limit switches are in the positive direction, first moving the z-axis positive, then the x-y axes positive before trying to precisely locate machine zero by going back and forth slowly around the switch. If your machine has a limit switch in the negative direction, the homing direction mask can invert the axes’ direction. It works just like the step port invert and direction port invert masks, where all you have to do is send the value in the table to indicate what axes you want to invert and search for in the opposite direction.
$24 — Homing feed, mm/min
The homing cycle first searches for the limit switches at a higher seek rate, and after it finds them, it moves at a slower feed rate to home into the precise location of machine zero. Homing feed rate is that slower feed rate. Set this to whatever rate value that provides repeatable and precise machine zero locating.
$25 — Homing seek, mm/min
Homing seek rate is the homing cycle search rate, or the rate at which it first tries to find the limit switches. Adjust to whatever rate gets to the limit switches in a short enough time without crashing into your limit switches if they come in too fast.
$26 — Homing debounce, milliseconds
Whenever a switch triggers, some of them can have electrical/mechanical noise that actually ‘bounce’ the signal high and low for a few milliseconds before settling in. To solve this, you need to debounce the signal, either by hardware with some kind of signal conditioner or by software with a short delay to let the signal finish bouncing. Grbl performs a short delay, only homing when locating machine zero. Set this delay value to whatever your switch needs to get repeatable homing. In most cases, 5-25 milliseconds is fine.
$27 — Homing pull-off, mm
To play nice with the hard limits feature, where homing can share the same limit switches, the homing cycle will move off all of the limit switches by this pull-off travel after it completes. In other words, it helps to prevent accidental triggering of the hard limit after a homing cycle.
$30 — Max spindle speed, RPM
This sets the spindle speed for the maximum 5V PWM pin output. Higher programmed spindle RPMs are accepted by Grbl but the PWM output will not exceed the max 5V. By default, Grbl linearly relates the max-min RPMs to 5V-0.02V PWM pin output in 255 increments. When the PWM pin reads 0V, this indicates spindle disabled. Note that there are additional configuration options are available in config.h to tweak how this operates.
$31 — Min spindle speed, RPM
This sets the spindle speed for the minimum 0.02V PWM pin output (0V is disabled). Lower RPM values are accepted by Grbl but the PWM output will not go below 0.02V, except when RPM is zero. If zero, the spindle is disabled and PWM output is 0V.
$32 — Laser mode, boolean
When enabled, Grbl will move continuously through consecutive G1
, G2
, or G3
motion commands when programmed with a S
spindle speed (laser power). The spindle PWM pin will be updated instantaneously through each motion without stopping. Please read the Grbl laser documentation and your laser device documentation prior to using this mode. Lasers are very dangerous. They can instantly damage your vision permanantly and cause fires. Grbl does not assume any responsibility for any issues the firmware may cause, as defined by its GPL license.
When disabled, Grbl will operate as it always has, stopping motion with every S
spindle speed command. This is the default operation of a milling machine to allow a pause to let the spindle change speeds.
$100, $101 and $102 – [X,Y,Z] steps/mm
Grbl needs to know how far each step will take the tool in reality. To calculate steps/mm for an axis of your machine you need to know:
- The mm traveled per revolution of your stepper motor. This is dependent on your belt drive gears or lead screw pitch.
- The full steps per revolution of your steppers (typically 200)
- The microsteps per step of your controller (typically 1, 2, 4, 8, or 16). Tip: Using high microstep values (e.g., 16) can reduce your stepper motor torque, so use the lowest that gives you the desired axis resolution and comfortable running properties.
The steps/mm can then be calculated like this: steps_per_mm = (steps_per_revolution*microsteps)/mm_per_rev
Compute this value for every axis and write these settings to Grbl.
$110, $111 and $112 – [X,Y,Z] Max rate, mm/min
This sets the maximum rate each axis can move. Whenever Grbl plans a move, it checks whether or not the move causes any one of these individual axes to exceed their max rate. If so, it’ll slow down the motion to ensure none of the axes exceed their max rate limits. This means that each axis has its own independent speed, which is extremely useful for limiting the typically slower Z-axis.
The simplest way to determine these values is to test each axis one at a time by slowly increasing max rate settings and moving it. For example, to test the X-axis, send Grbl something like G0 X50
with enough travel distance so that the axis accelerates to its max speed. You’ll know you’ve hit the max rate threshold when your steppers stall. It’ll make a bit of noise, but shouldn’t hurt your motors. Enter a setting a 10-20% below this value, so you can account for wear, friction, and the mass of your workpiece/tool. Then, repeat for your other axes.
NOTE: This max rate setting also sets the G0 seek rates.
$120, $121, $122 – [X,Y,Z] Acceleration, mm/sec^2
This sets the axes acceleration parameters in mm/second/second. Simplistically, a lower value makes Grbl ease slower into motion, while a higher value yields tighter moves and reaches the desired feed rates much quicker. Much like the max rate setting, each axis has its own acceleration value and are independent of each other. This means that a multi-axis motion will only accelerate as quickly as the lowest contributing axis can.
Again, like the max rate setting, the simplest way to determine the values for this setting is to individually test each axis with slowly increasing values until the motor stalls. Then finalize your acceleration setting with a value 10-20% below this absolute max value. This should account for wear, friction, and mass inertia. We highly recommend that you dry test some G-code programs with your new settings before committing to them. Sometimes the loading on your machine is different when moving in all axes together.
$130, $131, $132 – [X,Y,Z] Max travel, mm
This sets the maximum travel from end to end for each axis in mm. This is only useful if you have soft limits (and homing) enabled, as this is only used by Grbl’s soft limit feature to check if you have exceeded your machine limits with a motion command.
Gistroy — портативное оборудование
Итак в этой статье мы расскажем, как подготовиться к запуску лазерного гравера Gistroy. Либо любого другого станка, который Вы хотите запустить на базе Arduino.
Напоминаем, если Вы ищете качественный лицензионный софт для работы с лазерным гравером, советуем ознакомится с нашей программой LightBurn.
Так как устройство сделано на платформе Arduino, то для начала необходимо установить программу Arduino для последующей инициализации платы. Если таковая уже имеется, как у нас, то этот пункт пропускаем. Программу Arduino можно скачать с официального сайта.
В случае, если после установки Ваша система не определяет плату, то решить проблему можно, установив дополнительный драйвер. После этой манипуляции с вероятностью 99 % все должно работать.
Следующий шаг — это установка программного обеспечения — LaserGRBL. После установки Вы можете обновится до последней версии, после чего отключить автоматические обновления.
После установки программы LaserGRBL запускаем ее. На первое время советую отключить автоматическое обновление программы по причине того, что зачастую в новых версиях могут встречаться недоработки, пагубно влияющие на работу устройства.
Во вкладке Grbl – «Настройки аппаратных возможностей программы» проверяем наличие галочки напротив параметра «Поддержка ШИМ»
LaserGRBL кнопки
Теперь приступим к настройке интерфейса LaserGRBL. На рабочем столе имеются стандартные иконки, мы добавим еще несколько, на наш взгляд, необходимых для комфортной работы с лазерным гравером. Ниже представлены иконки с командами, а еще ниже будут принскрины программы для ее настройки.
Правой кнопкой мыши кликаем на нижнем поле программы и нажимаем «Добавить кнопку». В левом углу нажимаем на пиктограмму и выбираем из Папки «Иконки» изображение. Далее копируем его название и открываем. Выбранное изображение появилось на месте пиктограммы. Далее в поле Tool Tip Вставляем скопированное название. В поле GCode прописываем команду.
Включить лазер
Команда: M3 S255
При нажатии на кнопку включить лазер, лазер начнет работать на максимальная мощность.
Важно, чтобы отключить блокировку включения Вы должны сместить лазерную головку кнопками перемещения (установите минимальное перемещение в 0,1 мм)
Будете очень внимательно обязательно наденьте очки, о вреде лазерного излучения Вы можете почитать в этой статье.
Выключить лазер
Команда: M5
При нажатии на кнопку лазер будет выключен моментально. Режим безопасности включения работать не будет.
Прицелиться
Команда: M3 S1 (либо M3 S2)
Если Ваш станок имеет ТТЛ модуль (поддержку градиента серого) то при нажатии на кнопку включается лазер на малой мощности, иногда значение S1 может быть больше, прицелиться будет просто.
Важно, чтобы отключить блокировку включения лазера в LaserGRBL Вы должны сместить лазерную головку кнопками перемещения (установите минимальное перемещение в 0,1 мм)
Данный режим используется для фокусировки, почитать статью о фокусировки можно тут.
Отъехать
Команда: G91 X??? Y??? F6000
Где ??? — габариты Вашего станка по Х и Y (если в Вашей конструкции имеются концевые выключатели, а F (скорость в мм/мин).
Название говорит само за себя, кнопка заставляет станок отъехать в заданные координаты.
Свободное позиционирование
Команда: G10 P0 L20 X0 Y0
При нажатии на кнопку свободное позиционирование происходит обнуления координат X и Y.
Важно, в новых версиях программы она имеется изначально. В LaserGRBL мы должны помнить что все работы идут от нижнего левого угла, согластно декартовой системы координат.
К центру и обратно
Type: Two State Button (GCode. GCode 2)
GCcode (колонка слева)
M3 S2
G0 X[left] Y[bottom] F4000
G1 X[right/2] F4000
G1 Y[top/2] F4000
M5
GCcode 2 (колонка справа)
G0 X0 Y0 F4000
При нажатии на эту кнопку один раз лазерная головка едет и показывает центр заготовки, после второго нажатия возвращается в ноль.
Границы гравировки
Команда:
M3 S2
G0 X[left] Y[bottom] F4000
G1 X[right] F4000
G1 Y[top] F4000
G1 X[left] F4000
G1 Y[bottom] F4000
M5
G0 X0 Y0 F6000
Кнопка для подсветки рамки, границы будущей гравировки. Важно, LaserGRBL работает с картинками, а не с векторами, поэтому подсветка будет обозначать холст картинки.
Остались вопросы?
Можете задать их у нас в группе Вконтакте, либо на странице, перейти к разделу вопрос — ответ. Также Вы можете перейти к другому уроку, нажав на стрелку в конце страницы.
LaserGRBL инструкция на русском
Для подключения гравера выберите нужный COM порт, удостоверьтесь, что устройство подключено наличием сообщения «Ready», что означает, что станок готов к работе
-
Здравствуйте. Можно ли в LaserGRBL создать кнопку, когда лазер движется от 0 к центру модели, пауза, и обратно в 0 нижний левый угол?
-
Здравствуйте! Добавили данную кнопку в статью, назвали ее «к центру и обратно»
-
Здравствуйте. Подскажите, где настроить лазер, он жжёт с одинаковой мощностью, вместо полутонов он всё сжигает напрочь, а если я выставляю меньше максимальную мощность, то вообще не жжёт.
-
Здравствуйте!
1) Убедитесь что Ваш лазер оснащен ТТЛ модулем.
2) Пустите в консоль команду $32=1 , убедитесь что придет команда 1
3) При формировании проекта выбирайте команду включения лазера М4 во вкладке Laser Options -
Здравствуйте! Монохромное фото гравируется долго и все сжигается, что может быть?
-
Мы бы советовал при черно-белых фото использовать режим BW. Так у Вас не будет лишних артефактов в виде жжения на белых участках, а также будет быстрее скорость гравировки.