Рубрики
Схемы на Arduino

Плоттер с ЧПУ на основе Arduino Uno

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

В этом проекте мы рассмотрим создание самодельного (DIY) плоттера с ЧПУ на основе платы Arduino Uno. Из всех плоттеров, которые можно изготовить самому, этот является одним из самых простых. Наш самодельный плоттер сможет рисовать большинство основных форм, текстов и даже мультфильмов. Он работает примерно по такому же принципу, как и человеческая рука, но намного быстрее и точнее чем может рисовать человек. Подробно процесс функционирования этого плоттера вы можете посмотреть на видео, приведенном в конце статьи.

Работа плоттера с ЧПУ

Для работы плоттера с ЧПУ при построения графиков с ЧПУ требуется 3 оси (ось x, ось y и ось z). Оси x и y работают в унисон для создания 2D-изображения на обычной бумаге. Эти оси (x и y) расположены под углом 90 градусов друг к другу таким образом, что любая точка на плоской поверхности определяется заданным значением x и y. Ось z используется для подъема и опускания пера на плоскую бумагу.

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

Необходимые компоненты

Аппаратные компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Шилд (плата расширения) драйвера двигателей L293D (купить на AliExpress).
  3. Старый HP/Epson принтер. Можно использовать старый компьютерный DVD привод.
  4. Мини сервомотор (купить на AliExpress).
  5. Алюминиевый лист (710mm x 710mm).
  6. Органическое стекло.
  7. Болты и гайки.
  8. Ручка.

Примечание: механическая часть этого проекта может во многом отличаться от того, что вы видите на фотографиях в этой статье. Но какую бы “механику” вы не использовали, убедитесь что в ней есть сервомотор. Мы, к примеру, не смогли найти старый DVD привод, поэтому использовали части от старого принтера для конструирования нашего плоттера.

Инструменты

Отвертка
Дрель
Режущий инструмент (ножовка)
Клей
Стендовое устройство

Программное обеспечение

Arduino IDE version 1.6.6 или новее
Processing IDE version 3.1.1 или новее (последнюю версию можно скачать здесь)
Inkscape version 0.48.5 или новее. (скачать здесь)
Grbl controller (опционально)

Основание для ЧПУ плоттера

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

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

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

Сборка X, Y и Z осей

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

Для z-оси мы использовали мини сервомотор, который мы прикрепили к y-оси с помощью клея. Этот сервомотор будет использоваться для подъема и опускания ручки (карандаша). Также необходимо сконструировать хороший поддерживающий механизм, который бы позволял свободно поднимать и опускать ручку.

Платформа рисования для плоттера

В связи с огромными размерами нашей машины она может рисовать на листах бумаги формата A5. Поэтому мы вырежем платформу размера A5 (148mmx210mm) из оргстекла и приклеим ее к движущейся части x-оси нашего плоттера.

Схема плоттера

Вставьте шилд (плату расширения) драйвера двигателей L293D в плату Arduino. Эта плата расширения может одновременно управлять двумя шаговыми и двумя серводвигателями. Присоедините к ней два шаговых двигателя как показано на рисунке. Соединения “земли” необходимо оставить не соединенными поскольку у нас двигатели биполярного типа.

Также подключите мини сервомотор к разъему servo1. Подайте питание напряжением 7.5V — 9V на порт питания шилда драйвера мотора. Устройство готово к тестированию.

Написание программы управления плоттером для Arduino и тестирование проекта

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

Поскольку в нашем проекте мы используем шилд драйвера двигателей L293D нам необходимо скачать библиотеку AFmotor Library. Затем добавьте ее в каталог библиотек Arduino IDE. Переименуйте его в AFMotor. Если у вас открыта Arduino IDE, то закройте ее и снова откройте (то есть перезапустите), кликните на пункт меню file -> examples -> Adafruit Motor Shield Library -> stepper. Убедитесь в том, что вы выбрали правильный COM порт и плату Arduino и затем загрузите код этого примера в вашу плату Arduino. После этого на шаговом двигателе 1 вы должны наблюдать некоторые движения.

Для того чтобы протестировать работу шагового двигателя 2 измените порт двигателя с 2 на 1 в следующем фрагменте кода и снова загрузите код примера в плату Arduino.

Код программы для Arduino

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

G-код (G-Code) для плоттера с ЧПУ

G-код представляет собой язык, на которым мы говорим машине с числовым программным управлением (ЧПУ) что она должна делать. В основном он содержит координаты X, Y и Z.

Пример этого кода:

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

Программная среда Processing IDE для загрузки G-кода в Arduino

Программная среда с открытым исходным кодом Processing IDE поможет нам в загрузке G-кодов в плату Arduino. Для этого вам сначала необходимо скачать GCTRL.PDE file. После скачивания откройте этот файл в Processing IDE.

После этого нажмите “run” (запуск программы). На экране появится окно со всеми необходимыми инструкциями. Нажмите “p” на клавиатуре. Система попросит вас выбрать порт. Выберите порт, к которому подключена ваша плата Arduino. В нашем случае это порт 6.

Теперь нажмите “g” на клавиатуре и выберите папку на компьютере, где у вас хранится ваш G-код. Выберите необходимый файл с G-кодом и нажмите enter. Если все соединения в схеме у вас сделаны правильно, то вы заметите как устройство (плоттер) начнет рисовать на бумаге.

Если вы хотите остановить процесс рисования, то просто нажмите “x” и плоттер остановит свою работу.

Как сгенерировать свой собственный G-код

В этом разделе статьи мы рассмотрим как с помощью программного обеспечения Inkscape сгенерировать G-код для надписи HELLO WORLD.

Примечание: Inkscape не умеет сохранять G-коды. Поэтому дополнительно установите вот этот MakerBot Unicorn plugin который позволяет экспортировать изображения в G-коды. Но новые версии Inkscape, возможно, уже умеют сохранять G-коды. Оригинал этой статьи был написан в 2017 году, возможно, с тех пор уже что то изменилось.

Если установка прошла успешно, откройте File menu в Inkscape кликните на «Document Properties» (свойства документа). Сначала измените размеры с px на миллиметры (mm). Также уменьшите ширину и высоту до 90 мм. Теперь закройте это окно. После этого в зоне рисования появится квадрат – именно в нем мы и будем писать наш текст.

Теперь слева в панели инструментов кликните на “create and edit text object tab”. Напишите текст «HELLO WORLD» и установите его необходимую позицию с помощью инструмента, показанного на следующем рисунке.

Кликните text и выберите необходимый вам шрифт. Кликните apply (применить) и закройте.

Теперь кликните на «path» и выберите «object to path». Теперь ваш текст готов к сохранению в виде G-кода. Кликните на file -> save и напишите имя файла «hello world».

Измените тип файла на «MakerBot Unicon G-Code» как показано на следующем рисунке (эта возможность будет вам доступна если вы успешно установили плагин MakerBot Unicorn). Теперь нажмите на «save» и кликните на «ok» в открывшемся окне.

Сохраненный G-код вы можете использовать для рисования на плоттере с помощью выше описанных операций.

Контроллер GRBL

После того как вы сгенерировали G-код с помощью Inkscape может возникнуть необходимость в проверке того, укладываются ли он в заданные ограничения (по возможности рисования).

Ограничения по рисованию определяются в следующих строчках кода нашей программы для Arduino:

В следующем окне GRBL контроллера можно проверить не выходит ли изображение на сгенерированном нами G-коде за пределы рисования, указанные в программе для Arduino. Если какая то часть изображения будет выходить за эти ограничения, то она не будет нарисована.

В нашем примере значения x и y изменяются в диапазоне от 0 до 40 мм. Но поскольку мы сконструировали плоттер с большей зоной рисования, то мы изменили максимальную границу с 40 до 60 мм.

Поэтому после того как вы нарисовали G-код в Inkscape желательно перед загрузкой его в плату Arduino проверять его с помощью программы GRBL не выходит ли он за пределы области рисования. Если выходит, то просто измените его размеры в Inkscape.

Исходный код программы

Таким образом, в этой статье мы рассмотрели один из самых дешевых способов создания собственного плоттера с ЧПУ. Далее представлен полный код программы для Arduino для этого проекта. Я специально оставил некоторые комментарии в нем без перевода (так часто более понятно некоторым разработчикам), но если необходимо я могу их для вас перевести если у вас возникнут затруднения.

Видео, демонстрирующее работу плоттера с ЧПУ

2 ответа к “Плоттер с ЧПУ на основе Arduino Uno”

Код прошивки УЖАСЕН!
Половина целочисленных переменных объявлена как вещественные. Про парсинг я вообще молчу…
Почему по команде M300 делаются действия с ручкой — вообще не понятно.

M300: Play beep sound

Вы про то что координаты объявлены с помощью вещественных переменных? Так координаты могут в определенных ситуациях принимать вещественные значения.
А про команду M300 там же в комментариях к коду указано что это будут команды действия с ручкой

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *