[Из песочницы] Самодельный плоттер: советы для начинающих, работа с grbl-прошивкой
Во время изучения в университете такого занимательного предмета, как схемотехника, мне пришло в голову сделать в рамках курсового проекта «Двух осевой плоттер на бумаге с головкой из авторучки на базе Arduino». К моменту начала работы я себе весьма смутно представляла разработку электрической части проекта, впрочем, как и механической. Подобного опыта в моей жизни еще не бывало. Именно поэтому я нашла в сети, перебрав множество ресурсов, показавшийся мне наиболее простым и понятным туториал, и решила точно следовать ему. Однако, скоро выяснилось, что все простое на первый взгляд расписано не достаточно подробно для такого «умельца» как я. Поэтому в оставшихся «за кадром» вопросах пришлось импровизировать, не всегда удачно, как оказывалось в последствии. Это была небольшая предыстория. Теперь хотелось бы поделиться своим ценным опытом по ряду ключевых вопросов. Приводить полностью новую инструкцию с моей версией этого устройства не буду, т.к. на просторах интернета итак достаточно более удачных решений.
Содержание
- Конструкция
- Схема электрическая
- ПО
1. Конструкция
Конструкция, которую я выбрала, изготавливалась из фанеры. В качестве осей использовались шпильки, которые крутились шаговыми двигателями, и за счет этого платформа на гайках двигалась по оси. Одна ось крепилась на платформу другой одним краем. Из изготовления всего этого могу сказать:
- Если верхняя ось не имеет опоры с двух сторон, а крепится, как у меня, только одним краем, то необходимо заранее продумать баланс осей. Верхняя неизбежно будет крениться, если вообще не заваливать всю конструкцию весом своего «висящего» края.
- Линии рисунка могут идти волнами по размеру резьбы шпильки, а также из-за дрожания самой конструкции во время работы.
- Две вышеперечисленные проблемы приводят еще к одной: перо (в моем случае ручка) может писать неравномерно в разных частях страницы.
- Вес и размеры устройства тоже стоит рассчитать заранее, чтобы потом не выяснилось, что ваши двигатели не тянут такую нагрузку.
- И еще одна важная деталь: лучше всего везде где возможно использовать для крепления шурупы, гвозди и т.д. Конструкции на клее, пусть даже самом надежном, имеют свойство разваливаться в самый неожиданный момент. И в некоторых случаях после сборки основной части будет весьма сложно возвращаться к «переклеиванию» мелких, но очень важных, внутренних деталей, не разбирая готовые части.
- Если же используете где-то клей, то очень и очень внимательно следите, чтобы он не попал в движущиеся части конструкции. Даже маленькая капелька способна застопорить механизм и привести в его негодность.
2. Схема электрическая
Сама схема была предельно проста и не требовала даже пайки. Я даже взяла готовый CNC Shield специально для работы с ЧПУ. Тем не менее и тут есть свои нюансы:
- Мой китайский аналог Arduino под кодовым именем WAVGAT на отрез отказался прошиваться как обычная Arduino Uno R3. В интернете утверждали, что подобные платы полностью совместимы со всем ПО arduino, но для работы с ним через IDE пришлось скачивать отдельную библиотеку WAVGAT Update. Так мне удалось залить скетч на плату, но само ПО по прежнему не хотело корректно работать. Я испробовала все найденные варианты исправления такого рода проблем (перегружала бутлодер платы, изменяла файлы boards и константы самой библиотеки с ПО), но итог остался тем же. Видимо, именно для этой задачи придется обзавестись классической Arduino.
- Еще одной проблемой стал запуск шаговых двигателей. Они жужжали, грелись, несмотря на холодные драйвера, но не двигались. Методично проверяя цепочку поэлементно поняла, что проблема в их подключении. Дело в том, что и в этот раз китайцы соригинальничали. Оказалось, что выводы двигателя содержат перекрещенные пары А-В. Если у обычного магазинного двигателя пары шли по порядку 2В-2А-1А-1В, то у китайцев почему-то оказались 2В-1А-2А-1В. Выяснить это можно «пропикиванием» схемы мультиметром в соответствующем режиме: пищат парные А-В выходы.
- И еще, как оказалось, безобидный маломощный сервопривод вполне способен безвозвратно «подпалить» всю плату arduino при длительной чрезмерной нагрузке на него. При этом плата продолжит работу, но будет иногда прерываться на середине, останавливаясь на командах сервопривода.
- Поэтому следите за температурой устройств во время работы во избежании неисправимых последствий.
3. ПО
Тут есть варианты:
- Проще всего взять замечательную простенькую программу BenВox. Она специализирована именно под работы с ЧПУ и проста в установке и обращении. Минус этого варианта в его ограниченности. Во-первых прошивка для платы в комплекте ПО содержится уже в hex-файле, потому возникают проблем с ее редактированием. Да и функционал в общем не особо обширен, похож на простейший графический редактор. Если не хотите вдаваться в подробности работы всего этого механизма, то можно поработать с этим вариантом.
- Немного сложнее, но и перспективней работа через GRBL-прошивку. Эту библиотечку можно без проблем взять в интернете и она дает значительно больше возможностей, чем BenBox. Но для работы через этот механизм надо разобраться с начальной настройкой всего этого.
- Итак, скачиваем и распаковываем grbl-servo библиотеку. Теперь ее можно залить на плату через IDE, просто отыскав ее среди примеров.
- Для пересылки непосредственно команд устройству понадобится Universal Gcode Sender (или другое подобное ПО). После его установки на компьютер в нем открываем канал связи с платой по com-порту, к которому подсоединена плата.
- Для начальной и последующих настроек платы в командной строке приложения набираем »$$». По этой команде получаем полный набор базовых настроек платы, которые можно менять, настраивая нужные параметры. К примеру, команды »$110=380» и »$111=380» ставят скорость двигателей на осях Х и У на 380 мм\мин. Важными пунктами настройки являются скорость и ускорение двигателей, направление осей (прямое или инверсное). Подробнее инструкцию по такой настройке можно найти в интернете.
- Также есть возможность машинного контроля над двигателями (вкладка machine control) и серво (команды М5(поворот в начальное положение) и М3 s90(поворот на 90 или любое другое кол-во градусов)).
- Далее надо подготовить изображение для работы. Для этого тоже понадобится доп. ПО, к примеру, Inkscape. Оно похоже на любой другой графический редактор и подробно работу с ним можно изучить также в интернете. Но есть пара важных замечаний:
- Для начала надо задать правильные размеры страницы в свойствах, чтобы размеры вашего изображения не оказалось больше возможностей плоттера. Так же необходимо заменить пиксели на миллиметры в единицах измерения.
- После создания изображения жмем ctrl+shift+C и идем в меню — расширения — MI GRBL… — задаем скорости двигателей и угол поворота серво — сохраняем изображение в формате gcode.
- Наконец возвращаемся в Universal Gcode Sender и во вкладке File Mode открываем наше gcode-изображение. Кнопкой Visualize можно графически отслеживать работу программы, а в окне command Table можно проследить по командное выполнение. Осталось только запустить все это и наблюдать за результатом.
В итоге работа над подобным устройством оказалось сложной и кропотливой, а конечный результат не идеальным. Но подобный опыт интересен и не бесполезен. Поэтому, надеюсь, кому-то пригодятся и помогут избежать лишних «граблей» мои советы.