![](https://habrastorage.org/webt/zh/kb/2r/zhkb2rwo-nnwln20wuwn_mtfq0c.jpeg)
Есть один весьма примечательный вид ЧПУ-устройств, который не оставит равнодушным никого — самодельный принтер.
Мало того, что он является хорошим демонстратором принципов числового программного управления, задействуя все основные его элементы, но может также применяться для конкретных практических задач.
И именно об интересных путях создания подобного устройства мы и поговорим в этой статье.
Любой принтер состоит из ряда компонентов, которые имеет смысл рассмотреть отдельно.
Двигатель
▍ Шаговый двигатель
В качестве силового привода для любительских конструкций (и не только) используются в основном шаговые двигатели.
Шаговый двигатель существенно отличается от обычного двигателя постоянного вращения, так как позволяет обеспечить поворот вала на строго определённый угол и удерживать его в этом положении.
Шаговые двигатели могут быть биполярными или униполярными.
Биполярный двигатель устроен так, что содержит только одну обмотку в каждой фазе, которая для изменения направления движения должна переполюсовываться драйвером двигателя.
Подобными двигателями управляют с применением мостового или полумостового драйвера.
В общей сложности подобные двигатели имеет две обмотки и четыре выходных контакта для управления (вариант «а» на рисунке ниже):
![](https://habrastorage.org/webt/pt/id/a3/ptida3w9bvfjfckby-cxxyxajgg.gif)
Существует также вариант униполярного двигателя, который отличается от приведённого выше тем, что у него помимо наличия двух фаз от середины каждой фазы отведён отвод. Это даёт возможность управлять направлением движения двигателя простым переключением половинок обмотки, что существенно упрощает конструкцию драйвера двигателя, который в этом случае должен содержать только четыре ключа.
Для упрощения конструкции иногда в подобных двигателях она выполняется таким образом, что серединные обмотки объединяются внутри двигателя (вариант «б» на рисунке ниже):
![](https://habrastorage.org/webt/yx/hz/a8/yxhza8k6_4vzgnxdborckb1qxgg.gif)
В таком случае двигатель содержит пять выводов. Если средние выводы не объединены внутри двигателя и выведены отдельно, то в таком случае двигатель содержит шесть выводов.
Также подобного типа двигатель иногда может быть изготовлен таким образом, что все четыре обмотки выполняются отдельными — в таком случае двигатель будет содержать восемь выводов (вариант «в» на рисунке ниже):
![](https://habrastorage.org/webt/mb/1h/rx/mb1hrxshqrs04uwypeoftcjtyjk.gif)
В зависимости от типа соединения подобный двигатель может быть использован как в качестве униполярного, так и биполярного. Униполярный двигатель с двумя обмотками и серединными отводами также может быть использован и в качестве биполярного — в таком случае серединные отводы у него остаются неподключёнными.
Момент шагового двигателя зависит от величины магнитного поля, которое создают обмотки статора. Для увеличения магнитного поля существуют два пути: повышение силы тока или увеличение количества обмоток. В теории ограничителем при увеличении силы тока является достижение насыщения сердечника, однако это только в теории, так как в реальности обычно ограничителем выступает нагрев двигателя.
И здесь как раз наиболее полно и проявляются преимущества биполярных двигателей, так как благодаря своему устройству в них задействованы обе обмотки. В униполярном же двигателе в каждый момент времени используется только одна половина обмоток, а другая половина только занимает место.
Другими словами, при прочих равных условиях биполярный двигатель даёт возможность увеличить силу тока в два раза, так как его обмотки обладают в два раза меньшим сопротивлением, и в два раза лучше рассеивают тепло благодаря своей площади, что даёт выигрыш в моменте приблизительно на 40%, если сравнивать его с униполярным двигателем.
На практике обычно применяют униполярные двигатели, так как они требуют гораздо более простых систем управления.
▍ Сервопривод
Тем не менее, шаговые двигатели не являются панацеей и применяются в основном в бюджетных решениях. Так как существует иной способ механического привода, дороже и существенно производительнее: сервоприводы.
Сервопривод представляет комбинированное устройство, сочетающее в себе отрицательную обратную связь и электродвигатель. Благодаря наличию обратной связи возможно отслеживание угловых положений вала двигателя.
Таким образом, можно сказать, что сервопривод:
- обеспечивает точное позиционирование вала двигателя;
- оптимизирует работу электродвигателя, давая ему столько питания, сколько ему необходимо для выполнения конкретной работы. Благодаря чему увеличивается ресурс механических частей конструкции и экономится затрачиваемая энергия. Из-за этого КПД современных сервоприводов весьма высок (более 90%).
В общем случае преимуществами сервоприводов можно назвать следующие:
- большая мощность: может достигать даже 15 кВт, в то время как у шаговых двигателей редко превышает 1 кВт;
- большая скорость работы: скорость вращения сервоприводов может превышать и 10 000 оборотов в минуту, тогда как у пошаговых двигателей обычно находится в пределах до 1 000 оборотов, так как дальше может происходить падение момента и увеличивается вероятность ошибок;
- бесшумность работы: благодаря своему алгоритму;
- энергоэффективность: потребляемая мощность сервопривода зависит от нагрузки на валу, в то время как у шагового двигателя она постоянна, вне зависимости от нагрузки;
- наличие постоянной точной информации о положении вала двигателя, в то время как у шаговых двигателей возможно проскальзывание и накопление ошибок;
- высокая плавность хода: в шаговых же двигателях подобное достигается только применением особых методов контроля.
В то же время нельзя сказать, что шаговые двигатели однозначно проигрывают сервоприводам. Так как у них тоже есть свои преимущества:
- гораздо меньшая цена, так как сам двигатель устроен существенно проще и ему требуется более простой драйвер;
- может работать на очень низких оборотах без уменьшения момента и не требует для этого применения редуктора;
- точность позиционирования превосходит сервоприводы благодаря своей конструкции;
- для остановки вала достаточно всего лишь убрать с него питающее напряжение, в то время как для сервопривода требуется тратить мощность на удержание вала либо использовать некий электромеханический способ торможения.
Рамки статьи не позволяют в полной мере рассказать обо всех моментах, касающихся двигателей, однако наиболее интересные из них были подсвечены. Желающие могут углубиться в эту тему ещё больше.
Так как в любительских конструкциях в подавляющем большинстве используются именно шаговые двигатели, дальше мы будем вести речь только о них.
▍ Драйвер двигателя
Для управления двигателем требуется специальная электронная плата, именуемая «драйвером».
Некоторые любители используют в своих конструкциях самодельные драйверы двигателя, однако для уменьшения трудозатрат автор статьи видит наиболее удобным использование покупного драйвера, подобрав его по поддерживаемому рабочему напряжению и максимальному току (взяв драйвер не впритык, а с некоторым запасом, например, в 30% по максимальному току).
Оптимальное напряжение для питания шагового двигателя (если оно не указано производителем) зависит от его индуктивности, значение которой можно взять из документации на двигатель:
Наиболее широко распространёнными драйверами двигателей, которые используются в DIY-проектах, которые приходилось видеть автору, являются следующие:
L9110 L9110S / HG7881CP
Поддерживает:
- максимальное напряжение на канал — в диапазоне от 2.5 до 12 В,
- максимальный рабочий ток — 0.8 A.
![](https://habrastorage.org/webt/gn/eg/qs/gnegqsugxen4rw2r4bkucukneda.jpeg)
L293D
Поддерживает:
- максимальное напряжение на канал — до 25 В,
- максимальный рабочий ток — 0.6 A.
![](https://habrastorage.org/webt/px/op/1a/pxop1abzrw_b0jaoshkwqkkz84m.jpeg)
L298N
Поддерживает:
- максимальное напряжение на канал — в диапазоне от 5 до 35 В,
- максимальный рабочий ток — 2 А.
![](https://habrastorage.org/webt/t-/uo/71/t-uo71ffof2dgcuncynsbtngoem.jpeg)
Возможно использовать и любые иные, однако приходилось видеть эти наиболее часто в использовании (здесь специально не упомянуты драйверы «с ножками», которые, например, вставляются в платы FDM 3D-принтеров, а приведены исключительно драйверы с разъёмами, к которым можно что-то подключить).
Контроллер
Отдельно рассматривать контроллер, как представляется, смысла нет, так как это очень сильно зависит от того, какие возможности есть у самодельщика, а также какие требования на него возлагаются. Тем не менее, можно только упомянуть, что с типичными задачами справляется даже простой микроконтроллер вроде Arduino Nano.
Способы кодирования для печати
▍ G-код
Наиболее часто встречающимся способом (среди самодельных конструкций) кодирования информации для передачи её на исполнение устройству является её преобразование в так называемый G-код (весьма известная процедура для владельцев 3D-принтеров, которую там производит программа-слайсер).
Сразу стоит оговориться, что выделение способа управления через G-код в отдельную категорию принтеров весьма условно, т. к. теоретически все нижеприведённые принтеры могут его использовать (хотя для «попиксельного» способа печати, рассмотренного ниже, это не очень рационально, а для Polarograph, также рассмотренного ниже, не удалось выяснить этот момент).
G-код представляет собой особый язык программирования, появившийся ещё в начале 1960-х годов. Это последовательность команд, в которых содержатся инструкции машине на перемещение инструмента(ов) по определённым координатам, а также осуществление определённых операций с ним(и):
![](https://habrastorage.org/webt/_6/ol/v5/_6olv52yug8nvggvubajsnhbimg.jpeg)
Более подробно об этом способе кодирования вы можете прочитать вот здесь.
А вот тут вы можете для интереса посмотреть список кодов, которые использует для своей работы известная прошивка 3D-принтеров Marlin.
Поэтому наиболее типичным способом использования G-кода в любительских конструкциях принтеров является следующий алгоритм:
- выбор требуемого изображения/ надписи/узора;
- преобразование его в G-код с использованием специального программного обеспечения;
- загрузка G-кода в микроконтроллер;
- выполнение задания микроконтроллером.
Именно подобный алгоритм и реализован в весьма простой конструкции, которая и привлекла внимание автора своей лаконичностью:
Как можно видеть, аппарат представляет собой всего лишь два шаговых двигателя с винтовыми приводами, которые отклоняют печатную головку по XY, которая представляет собой комплекс из письменной ручки и отклоняющего её сервопривода (служит для подъёма ручки, когда печать на данном участке не требуется).
Вкратце алгоритм работы с собранным устройством выглядит следующим образом:
- скачать и установить open-source графический редактор Inkscape;
- скачать и установить модуль для генерации G-кода из среды Inkscape;
- загрузить какую-либо картинку в Inkscape;
- экспортировать её в G-код;
- загрузить и установить среду разработки Processing;
- скачать написанный автором простой GUI под среду разработки Processing и запустить его изнутри этой среды;
- загрузить с помощью GUI из предыдущего этапа G-код на микроконтроллер;
- исполнить код с помощью микроконтроллера.
С примерно аналогичным принципом функционирования существует великое множество проектов, просто рассмотренный выше привлёк автора своей простотой.
«Попиксельное» кодирование
Так как не всегда требуется печатать нечто сложное, и часто достаточно всего лишь скромных пиксельных текстов или изображений, существует и альтернативный подход к печати изображений, ярким представителем которого является достаточно интересный проект (о котором, впрочем, уже было на Хабре):
Устройство построено на базе автомобильного бачка стеклоомывателя с насосом, к которому подключены восемь автомобильных инжекторных форсунок, разбрызгивающих воду:
![](https://habrastorage.org/webt/jh/1n/bg/jh1nbgfdsd0xov5dr0o3a00ez5c.jpeg)
Автор принтера не стал отрисовывать собственные шрифты, вместо этого он воспользовался онлайн-генератором, в котором можно выбрать один из нескольких пиксельных шрифтов, после чего скачать его в виде кода ассемблерного типа.
Кстати сказать, если вы захотите построить подобное устройство, вы можете на странице проекта, которая была приведена выше, посмотреть исходный код устройства и, в частности, как подобный код шрифта загружается в скетч Arduino (устройство было построено именно на базе этого микроконтроллера). Шрифт хранится на SD-карте, с которой эта версия платы Arduino и читает информацию в процессе работы (ЗЫ: русского языка вроде как нет).
С технической точки зрения устройство достаточно несовершенное и не содержит даже приведения в соответствие скоростей двух колёс с отдельными двигателями в них (что, естественно, приводит к необходимости постоянного подруливания оператором, так как аппарат постоянно заносит «то туда, то сюда»). Кроме того, никаким образом не учитывается скорость движения аппарата (прямо просится доработка).
Тем не менее, работа аппарата выглядит достаточно впечатляюще. Сам автор описывает интересный эксперимент, который он проводил с этим устройством: заливал в него не просто воду, а воду с моющим средством, что приводило к повышенному очищению дороги на этих местах и надписи читались несколько месяцев!
В дальнейшем идея этого аппарата была развита ещё дальше установкой подобного устройства на велосипед:
Ближайшим известным промышленным аналогом подобного устройства являются ручные маркираторы:
Хотя если иметь в виду попиксельный способ нанесения (если его так можно назвать, хотя автор и понимает, что, наверное, это не совсем корректное название), то сюда же можно отнести и термотрансферные принтеры и прочее, прочее, прочее.
Печать каждого пикселя с учётом его яркости
Ещё более интересным проектом, который сочетает преимущества предыдущих двух подходов и позволяет печатать уже полноценные изображения, является проект с открытым программным обеспечением, так называемый Polargraph.
Когда автор статьи его только увидел, он сразу неуловимо стал напоминать ему что-то… И автор вспомнил, что аналогичный проект ему уже доводилось видеть в начале двухтысячных годов, и назывался он Hektor. Как позже выяснилось, разработчик Polargraph тоже вдохновлялся именно этим устройством :-)
Hektor представлял собой в систему из двух шаговых двигателей, которые управляли «печатающей головкой», изменяя длину двух верёвок, на которых был подвешен аэрозольный баллон для граффити с сервоприводом для нажатия на кнопку пуска:
В отличие от первых попыток, которые делал Hektor, Polargraph уже является более совершенным устройством:
Что позволяет ему создавать достаточно сложные изображения, которые можно найти в его онлайн-альбоме на Flickr:
![](https://habrastorage.org/webt/12/i1/f1/12i1f1c-gmu4clrq6yfbihooww4.jpeg)
Хотя некоторые используют это программное обеспечение для создания аналогичных изображений, которые описывались выше, в разделе про G-код:
А также выкладывают подробное описание по сборке аналогичного устройства.
Кстати сказать, если кому интересно, приведённый в «шапке» статьи коллаж составлен из работ, выполненных на аналогичного типа принтере. Сам автор не раскрывает точное устройство, отделываясь фразами «в интернете много аналогичных мануалов». Но делится способом подготовки файла, который даёт такой же результат, как в начале статьи. Рекомендует гуглить по ключевым словам «TSP art» и «алгоритм voronoi-stippling» ;-)
Внимательный читатель, прочитавший весь рассказ, наверняка отметил, что среди рассмотренных самодельных проектов как будто чего-то не хватает ;-) А именно: нет полноценного цветного принтера (например, струйного), печатающего по цветовой модели CMYK! Хотя учитывая наличие в продаже высокоскоростных форсунок (например, легко можно взять инжекторные от автомобиля), подобное устройство не является чем-то заоблачным, но, тем не менее, автору его не удалось найти…
Учитывая, что подобные устройства продаются на известном китайском сайте и стоят достаточно приличных денег (сейчас речь исключительно о широкоформатных настенных принтерах), то сборка самодельного устройства подобного типа является весьма интересной. Как с точки зрения хобби, которое может помочь в оформлении как собственного помещения, так и в оформлении помещений на заказ и для создания на продажу подобного аппарата. Кроме того, сборка подобного устройства является интересным инженерным вызовом, требующим от создателя сочетания множества навыков: от программирования до обработки материалов и сборки.
Кроме того, нужно отметить, что рассказ о сервоприводах выше был не просто так. Автору в своё время пришлось иметь дело с японскими режущими плоттерами, приводимыми в движение скоростными сервоприводами. Несмотря на то, что в них не использовались шаговые двигатели, система работала очень точно, быстро, с минимальным уровнем шума (если сравнивать с шаговыми приводами).
Как показал анализ большинства самодельных проектов, подавляющее большинство из них используют для приведения в движение именно шаговые двигатели, хотя использование сервоприводов дало бы новые преимущества в производительности. Так что здесь видится интересный вариант для кардинального улучшения подобных самодельных систем в целом.
Завершая рассказ, хочется сказать, что сборка любого принтера достаточно увлекательное занятие и, наверняка, осмелившегося ждёт множество интересных минут.
Играй в нашу новую игру прямо в Telegram!
![](https://habrastorage.org/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png)