Что такое gcode. Учимся читать и редактировать. Принципы формирования кадров, команды и функции.
В этой статье разберем что представляет из себя Gcode для 3d принтеров. Детально рассмотрим структуру, виды команд, принцип формирования кадров.
Итак, Gcode — это язык программирования для машин и станков с числовым программным управлением. Для 3d принтеров он формируется программой слайсером, предварительно загрузив в нее 3d модель и задав необходимые параметры печати.
По какому же принципу работает ПО для 3d печати?
Принцип по которому работает любой 3d принтер – это разбиение 3d модели на множество горизонтальных слоев. Каждый слой вне зависимости от способа его формирования (экструдером FDM принтер, лазером SLA, DLMS) разбивается на множество линий определенной толщины и ширины или формируется в виде растрового изображения если это DLP принтер. Например ширина такой линии для FDM 3d принтера – это диаметр сопла, высота это толщина слоя. Для того чтобы задать экструдеру маршрут необходимо сформировать своего рода карту. Простыми словами – этот набор команд и есть gcode, а формируется он автоматически, программой сласером типа Cura, Slick3r и т.д., при подгрузке в нее 3d модели.
Каждый вектор траектории в gcode описывается декартовыми координатами, по которым и перемещается экструдер. В этом файле еще описываются такие параметры как нагрев, скорость перемещения, скорость выдавливание пластика и т.д. Вообще Gcode создавался для ЧПУ станков, он имеет множество различных команд и функций. Для этих устройств G-код на много сложнее, нежели для 3d принтеров. Для sla и dlp 3d принтеров слайсеры устроены немного по другому принципу, т.к. sla иcпользую лазеры, которые управляются гальванометрами с зеркалами, а dlp — проекторы засвечивают каждый слой пятном созданным в виде растрового изображения.
Для просмотра gcode, существует удобный онлайн-инструмент http://gcode.ws/.
Немного истории, gcode был создан компанией Electronic Industries Alliance ещё в 1960-х годах. В дальнейшем распространился по всему как стандарт для применения во всех устройствах с ЧПУ.
Итак, ваш 3d принтер – это устройство с числовым программным управлением. Работает он в соответствии с командами которые описаны в запушенном Gcode.
Файл содержащий код имеет расширение. gcode и условно его структура выглядит следующим образом:
1. Подготовительные операции. Здесь подготавливается 3d принтер к печати, запускаются нагрев стола, экструдера, устанавливается параметры системы координат, включается охлаждение, перемещение головки в нулевую точку отсчета, выдавливается тестовая порция пластика и другие установленные параметры.
2. Непосредственно 3d печать объекта.
3. Заключительный этап. Перемещение экструдера и стола в исходное положение, отключение нагрева всех элементов 3d принтера и т.д.
Весь код состоит из строк, каждая из них называется кадром. При этом для каждого кадра или группы кадров, для того что бы было понятно что будет выполняться можно прописать комментарии которые понятны только разработчикам и начинаются они со знака точка с запятой ; , например:
Ну а прошивка (машина воспринимает только 0 и 1) работает только по командам которые можно разделить на:
1. G – Основные (называемые в стандарте подготовительными) команды которые выполняют перемещение от точки к точке по прямой линии, в высоту или заданной дуге окружности определенного радиуса. Т.е. позиционирование экструдера или инструмента в пространстве.
2. М – Вспомогательные (технологические) команды. Различные команды которые включают рабочие элементы нагрев, охлаждение, передача, считывание параметров и их вывод на дисплей и др. Это самая многочисленная группа.
3. T— смена инструмента т.е. в нашем случае переход от с первого на второй экструдер T0, T1.
Ниже идут параметры которые необходимо передать команде для ее выполнения. Это конкретные числовые значения:
1. X, Y, Z – координаты для позиционирования инструмента в пространстве. Могут быть целыми, дробными, отрицательными, положительными.
2. F — скорость движения печатающей головки в мм/мин.
3. S – значение температуры, время в секундах, напряжение
4. P – параметры в миллисекундах для настройки PID-контроллеров
5. Е – кол-во пластика в мм. Зависит от указанного диаметра сопла и диаметра нити. В Gcode устанавка скорость работы мотора подающий пластик в самом начале с помощью параметра F200 [G1 F200 E10], так же в настройках самого 3d принтера, можно увеличить обороты двигателя в %. До обнуления в каждом кадре указывается общее кол-во в мм начиная сначала. Может принимать отрицательные значения если необходимо втягивание нити.
6. H — номер нагревателя. H0 — Для стола, H1 — H… для экструдера и т.д.
7. R – радиус дуги
8. D – диаметр нити.
Основные команды G, которые применяются для управления 3d принтерами:
- G0 — Холостой ход, без выдавливания пластика. Например [G0 F5400 X92.570 Y102.081 Z0.300] – Перемещение в точку с координатами X92.570 Y102.081 Z0.300, со скоростью 5400 мм/мин.
- G1 — Прямолинейное движение по осям X Y Z, с выдавливаем пластика Е в мм. Например [G1 F1200 X93.754 Y101.488 E0.0660] – это координаты точки куда необходимо перемеcтиться экструдеру, со скоростью 20 мм/с, при этом израсходуется 0.066 мм нити.
- G2 и G3 – перемещение по дуге. Эта команда практически не применяется если ее не задать вручную, т.к. периметр всегда представляет из себя ломанную (поверхность состоит из треугольников), а заполнение формируется прямыми линиями. Для этой команды необходимо задать R радиус окружности дуги.
- G4 — Пауза в секундах в S – в сек, P – миллисекундах. [G4 S15] — Останавливаемся на 15 мин.
- G21 – значения единиц измерения в мм. Устанавливается один раз в подготовительной части.
- G28 — Команда Home — паркуем головку. [G28 Y0 X0 Z0] – перемещение экструдера в указанные координаты.
- G90 — Использовать абсолютные координаты. В этой команде отсчет производиться от начально нулевой точки декартовой системы координат. Устанавливается один раз в подготовительной части.
- G91 — Использовать относительные координаты. В этой команде отсчёт производится от последней точки траектории перемещения.
- G92 — Установить текущую заданную позицию.
Основные команды M которые применяются для управления 3d принтерами:
Обязатльные:
- M0 — Пауза и ожидание нажатия кнопки на LCD дисплеи (работает если в прошивку установлен параметр ULTRA_LCD) [G0 X20 Y20 Z20 M0]
- M17 — Подать ток на двигатели (двигатели руками не вращаются)
- M18 — Убрать ток с двигателей (двигатели можно вращать руками, аналог M84)
- M42 — Управлять контактами ARDUINO MEGA 2560 [M42 P4 S255]
- M80 — Включить питание, для ATX — блок питания
- M81 — Выключить питания, для ATX — блок питания
- M84 — Выключение всех осей (моторов после простоя) [M84 S10]
- М112 — Экстренная остановка
- M114 — Получить текущие координаты
- M115 — Получить версию прошивки
- M117 — Написать сообщение на экране [M117 Best Print!!!]
- M119 — Получить статус концевиков
- M300 — Проиграть звук [M300 S300 P200] — S частота в Гц, P – продолжительность в миллисекундах.
Команды для SD карты
- M20 — Прочитать SD карту (передать список файлов)
- M21 — Инициализировать SD карту
- M22 — Открыть SD карту
- M23 — Выбрать файл на SD карте [M23 3dbenchy.gcode]
- M24 — Начать/возобновить печать с SD карты
- M25 — Пауза печати с SD карты
- M26 — Установить позицию SD карты в байтах [M 26 S4321]
- M27 — Узнать статус печати с SD карты
- M28 — Записать файл на SD карту [M28 3dbenchy.gcode]
- M29 — Окончить запись файла на SD карте
- M30 — Удалить файл с SD карты [M30 3dbenchy.gcode]
- M31 — Получить значение, сколько прошло времени с последнего M109
- M32 — Выбрать файл на SD карте, начать печатать [M 32 / path / 3dbenchy #]
- M928 — Логирование на SD карту [M928 3dbenchy gcode]
Команды для экструдера:
- M82 — Установить экструдер в абсолютную систему координат
- M83 — Установить экструдер в относительную систему координат
- M104 — Нагрева экструдера до определенной температуры [M104 S210] – нагрев до 210 град.
- M105 — Получить текущую температуру экструдера [M105 S2]
- M106 — Включение вентилятора обдува детали [M106 S255] — мощность 100% , [M106 S128]- мощность 50%
- M107 — Выключение вентилятора обдува детали
- M109 — Нагреть и удерживать температуру экструдера [M109 S210] – температура 210 град
Управление стол для 3d печати:
- M140 — Установить температуру стола [M140 S75] – температура 75 град.
- M190 — Нагреть стол и удерживать температуру [M190 S70] — температура 70 град
PID (параметры для регуляторов температуры):
- M301 — Записать PID параметры в EEPROM [M301 H1 P1 I2 D3]
- где: H0 – стол, H1 – экструдер – это обязательные параметры.
- M302 — Разрешить холодное выдавливание [M302 P1].
- M303 — Запустить процесс PID калибровки [M303 E-1 C8 S110]
- где: E-1 – стол, E0 – хотэнд, C8 – количество попыток, S – температура.
- M304 – Задать PID параметры для стола [M304 P1 I2 D3]
EEPROM – внутренняя память микроконтроллера (не обнуляется при выключении)
- M500 — Сохранить параметры в EEPROM
- M501 — Прочитать параметры из EEPROM
- M502 — Сброс параметров EEPROM
Параметры для пластиковой нити:
- M200 — Задать диаметр нити [M200 D1.75] – диаметр 1.75
- M600 – Заменить пластик.
Вообще различных комманд великое множество, а также появляются новые, посмотреть все вы сможете тут — http://reprap.org/wiki/Gcode
А теперь разберем Gcode сформированный программой Ultimaker — Cura, 3d модель 3dbenchy с двумя экструдерами. Поддержки печатаем вторым экструдером.
Приложено 2 скриншота, с основными настройками и продвинутыми:
Сопоставить параметры Cura и исходных записей Gcode:
M190 S70.000000 – температура стола
M104 T1 S210.000000
M109 T0 S210.000000 — температура первого экструдера 210
M109 T1 S210.000000– температура второго экструдера 210
Дальше описываются параметры первого и второго экструдера + комментарии:
Выбираются единицы измерения, система координат, точки начального отсчета.
M 117 – сообщение о начале печати, если все подготовительные операции выполнены.
Затем:
M107 – включается вентилятор.
Дальше идет формирование первого слоя LAYER 0
G0 F5400 X92.570 Y102.081 Z0.300 – Холостой ход со скоростью 90 мм/с. Обратите внимание на продвинутые настройки.
G1 F1200 X93.754 Y101.488 E0.06606 – скорость первого слоя 20 мм/с, расход нити на этот кадр 0.066 мм.
Ниже указывается скорость для структур заполнения:
G1 F4800 E18.03179
G1 F1200 X134.460 Y114.661 E18.06728
G0 F5400 X133.848 Y115.470
Смена экструдера для печати поддержек
Заключительный этап 3d печати: Перемещение экструдера и стола в исходное положение, отключение нагрева всех элеменетов 3d принтера и т.д.