ВЫБОР ПРОШИВКИ

После изучения возможных свободных прошивок, отзывов на них и примеров работы остановил свой выбор на GRBL v1.1f. Выбор этой прошивки, в общем, был сделан на этапе подбора управляющей электроники — ARDUINO UNO (ARDUINO NANO) и CNС SHIELD v3.0 (CNС SHIELD v4.0). GRBL v1.1f в совокупности с выбранным контроллером и шилдом позволяет построить бюджетный станок для домашней лаборатории.

ЗАГРУЗКА ПРОШИВКИ

Детальную информацию по текущим и предыдущим версиям GRBL можно найти на GitHub.

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

Для этого потребуется скачать непосредственно HEX файл прошивки
grbl_v1.1f.20170801.hex и утилиту XLoader для непосредственной загрузки прошивки в память контроллера.

После скачивания нужно запустить утилиту Xloader (инсталляция не требуется), выбрать HEX файл, тип контроллера, порт, к которому подключен контроллер, установить скорость обмена 115200 и загрузить прошивку, нажав «Upload». Как пример приведен скриншот окна утилиты.

НАСТРОЙКА ПРОШИВКИ

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

Вкратце нужно отметить, что настройка прошивки происходит посредством записи констант в EEPROM контроллера. Чтение и запись осуществляется через порт контроллера терминальной программой. Мне такой вариант не очень понравился и, в результате поиска альтернативы конфигуратора GRBL, наткнулся на функцию управляющей программы LaserGRBL, позволяющую в привычном «оконном» виде производить настройки станка без нудного обмена информацией в терминале. В пользу выбранного варианта отмечу, что подстройку констант прошивки осуществлял непосредственно при гравировке тестовых картинок в LaserGRBL. Управляющая программа имеет возможность остановить гравировку, скорректировать настройки, сохранить их в памяти контроллера и продолжить гравировку. Именно в таком режиме есть возможность оперативно оценить результат.

После запуска LaserGRBL и подключения контроллера в настройки EEPROM можно попасть из вкладки «GRBL» -> «GRBL Configuration».

После загрузки EEPROM из контроллера откроется окно:

В этом окне возможно изменить настройки вручную и сохранить в EEPROM контроллера кнопкой «Write».

На скриншоте выше приведен окончательный результат моих тестов. С этими параметрами станок трудится без каких-либо проблем.

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

Осталось только разъяснить значения некоторых параметров. Поскольку станок изготавливался для лазера мощностью 2,5Вт, рабочие скорости не превышают 1500 мм/мин. По этой причине я сильно ограничил максимальные скорости перемещения по осям X, Y (3000 мм/мин). Здесь возможно увеличение скорости перемещения — на собранных мной станках механика позволяет перемещаться быстрее. Но, поскольку лазеру при этом не хватает мощности, то передвижений со скоростями свыше 3000 мм/мин просто не будет.

Зазор по ускорениям для ZDV LASER ENGRAVER также присутствует. Вполне реально поднять… Но, опять же, мне показалось, что 500 мм/сек2 обеспечивает хорошее качество при приемлемом наращивании скорости. Да и в гравере, в отличие от 3D принтера, перемещения без остановок очень длительные, что не дает значительно поднять общую скорость гравировки за счет увеличения ускорения. А значит нет и особого смысла «загонять» шаговые двигатели.

Кол-во шагов на мм для шаговиков установлено для шкивов на 20 зубов. В случае шкива на 16 зубов, вместо 80 нужно вписать значение 100. При этом необходимо проконтролировать, что драйверы шаговых двигателей установлены в режим 1/16 микрошага. В данном режиме DRV8825 обеспечивают приятный на слух звук перемещения каретки и сохраняют необходимую мощность.

Необходимо обратить внимание на то, что если станок планируется использовать для гравировки в полутонах, то следует перевести GRBL в режим «лазера», установив «$32 = 1». В режиме «лазера» GRBL не будет делать остановок при перемещениях. Мощность лазера будет управляться на лету изменением параметров на ТТЛ линии управления лазером. Если лазер не оснащен ТТЛ управляемым драйвером, то «$32» следует сбросить.

После тестирования гравера на гравировке в полутонах пришлось внести изменения (дополнения) в настройки GRBL. В кратце опишу ситуацию.

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

Еще раз внимательно изучил описание настроек. Процитирую описание из статьи Владимира Волошина:

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

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

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

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

После описания все стало еще более непонятным. Пришлось задаться вопросом. Каким образом ТТЛ выход контроллера формирует напряжение на выходе? Дать ответ на вопрос можно исследуя схему шилда:

СХЕМА ЭЛЕКТРИЧЕСКАЯ ПРИНЦИПИАЛЬНАЯ CNC SHIELD V3

На схеме отчетливо видно, что вывод D11 (управление мощностью лазера) подключен напрямую к разъему без каких-либо преобразователей. Значит все же на выходе имеем ШИМ в ТТЛ уровнях. Осциллографа под рукой не оказалось. По этой причине не удалось сопоставить скважность ШИМ с уровнями мощности лазера.

В итоге все же решил взять в руки вольтметр и промерить напряжения на лазере на разных мощностях. Эксперимент показал, что лазер начинает проявлять активность при напряжении на нем выше 3.0 вольт. Пришлось еще раз изучить описание параметров $30 (Maximum spindle speed) и $31 (Minimum spindle speed). Значит можно предположить, что уровень черного ($30) должен соответствовать 5.0 В, а уровень белого ($31) — 3.0 В.

С уровнями в напряжении ясность появилась, осталось решить задачку в каком диапазоне значений $30 и $31 напряжение на лазере будет соответствовать уровням черного и белого. И какие значения должны быть в этих настройках снова не понятно из доступных статей по настройке GRBL!

Как бы не хотелось мне обращаться к исходникам, единственным путем решения осталось изучение исходных кодов GRBL! И решение оказалось именно в исходниках, точнее в файле конфигурации «config.h».

Цитирую:

// Used by the variable spindle output only. These parameters set the maximum and minimum spindle speed
// «S» g-code values to correspond to the maximum and minimum pin voltages. There are 256 discrete and
// equally divided voltage bins between the maximum and minimum spindle speeds. So for a 5V pin, 1000
// max rpm, and 250 min rpm, the spindle output voltage would be set for the following «S» commands:
// «S1000» @ 5V, «S250» @ 0.02V, and «S625» @ 2.5V (mid-range). The pin outputs 0V when disabled.

#define SPINDLE_MAX_RPM 1000.0 // Max spindle RPM. This value is equal to 100% duty cycle on the PWM.

#define SPINDLE_MIN_RPM 0.0 // Min spindle RPM. This value is equal to (1/256) duty cycle on the PWM.

Исходя из цитаты, 100% уровню заполнения ШИМ соответствует 1000 rpm и драйвер лазера должен позаботиться о напряжении 5.0 В на лазере. Отсюда следует, что минимуму должна соответствовать константа 600 rpm (3.0 В).

Вносим $30 = 1000 и $31 = 600. Осталось подтвердить расчеты на практике.

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

Забегая вперед, приведу фото с уровнями серого на скорости прожига 1000 мм/мин.

КАЛИБРОВКА УРОВНЕЙ СЕРОГО

На нижнем изображении видны уровни серого при диапазоне ШИМ от 600 до 1000. Можно заметить, что светлые тона теряются, темные, начиная с 75% трудноразличимы. Поэтому решил откорректировать уровни и сделал пробную гравировку в диапазоне от 650 до 900 по «горячим следам». Результат на верхнем изображении. Диапазон серых оттенков существенно изменился. Уровни черного и белого относительно которых готовится GCODE на гравировку задаются в управляющей программе.

В следующей статье попробую рассказать о том как быстро подготовить картинки к гравировке и азах работы с гравером на примере ПО LaserGRBL и LaserWEB.

Теперь можно приступать к гравировке. Удачных экспериментов!!!

Если Вам помогла статья и есть желание поддержать новые проекты, ссылка для поддержки:

Яндекс-деньги для поддержки сайта

Добавить комментарий