Самодельный 3D принтер на гальванометрических сканаторах
История о том, как я делал свой первый 3D принтер.
Скажу сразу, статья больше обзорная и историческая, потому как деяния проходили в далёком 2013 году.
Сначала определимся со способом формирования изображения. В данном случае — это лазерный луч, отклоняем сканирующей системой (гальванометрическим сканатором). Процесс создания объекта можно увидеть на GIF анимации ниже.
Отличие будет состоять лишь в том, что построение в моём принтере будет не от поверхности ко дну, а от дна к поверхности. У этого метода есть плюсы и минусы.
Плюсы построения от дна:
простая механика (нет необходимости в выравнивающем устройстве);
необходимо меньшее количество фотополимера , находящегося в ванночке для выращиваия объекта;
ванночку можно сделать небольшую по высоте;
Минусы построения от дна:
необходимость обработки дна ванночки антиадгезионным покрытием;
борьба с эффектом «присоски»;
С минусами и плюсами понятно.
Но какие задачи необходимо будет решить, для изготовления принтера ? (считаем, что у нас ничего нет, и всё делаем с нуля)
порезать 3D модель на слои;
преобразовать слои в управляющую программу (УП);
сделать управление лазером и гальванометром согласно УП;
спроектировать корпус и собрать его;
подобрать фотополимер;
подобрать антиадгезионное покрытие дна ванночки;
порадоваться или наоборот разочароваться в результате;
Задачи такие поставил т.к. хочу чтобы всё было своё, чтобы принтер был автономным — вставил флешку, запустил печать и готово, ждёшь только. Более подробно опишу каждую задачу и её реализацию.
Резка модели на слои.
Реализацию этой задачи я попросил заняться другого человека. Суть в следующем: берём 3D модель желаемого объекта, выбираем на нём грань, от которой будет идти построение модели и «режем» её на слои, параллельные выбранной грани. Шаг резки задаём в программе. В конечном итоге я получил на руки приложение, загрузив модель в которое на выходе получал 1-битные картинки, получившиеся нарезанием модели на слои.
Интерфейс программы
Подготовка управляющей программы
Эту задачу как и все последующие я решал уже сам. Описывать процесс, думаю, нет смысла, просто покажу на примере одного слоя.
Допустим, у нас есть слой (один срез нашей 3D модели) размером 6×7 пикселей.
Пример слоя
Управляющая программа одного слоя будет выглядеть так:
step=0;
2_1–5;
3_1–6;
5_2–6;
6_3–6;
7_3–6;
Где step — текущий слой.
Строка 6_3–6. В строке 6 засвечиваем область от 3 до 6 пикселя включительно.
Если будет несколько областей, например, 3, то строка будет иметь следующий вид
17_3–3–6–13–22–23;
В 17 строке засвечиваем область от 3 до 3 пикселя (по факту засвечиваем 1 пиксель), засвечиваем область от 6 до 13 пикселя включительно, засвечиваем область от 22 до 23 пикселя, включительно. Засвечиваем область — имеется в виду наличие 3Д модели. Мне так показалось проще и так сделал.
Реализация управление лазером и гальванометром согласно УП
Многие, думаю, помнят старые добрые стрелочные индикаторы, наподобие такого:
киловольтметр)
В его основе лежит гальванометр. Точно такой же гальванометр используется и в устройстве, управляющем отклонение зеркал. Отличие состоит лишь в том, что для зеркал используется обратная связь по положению ротора гальванометра для более точного и быстрого позиционирования зеркала.
Внешний вид гальванометрического сканатора (точнее элементов для управления):
Цифрами помечено: 1 — блок питания, 2 — драйвер гальванометров, 3 — демо плата с программами (была выкинута за ненадобностью), 4 — гальванометрические головы (2 шт)
Для того, чтобы управлять гальванометром необходимо на драйвер (на управляющий вход) подать напряжение в диапазоне 0–10 В. 0 В -это одно крайнее положение зеркала, 10 В — другое крайнее положение зеркала. Остальные положения получаются пропорционально изменению напряжения на входе. Для задания напряжения я использовал 12-ти битный ЦАП, точнее два ЦАПа, по одному на каждую ось.
Три ЦАПа и отладочная плата
Вот что в итоге можно получить, управляя зеркалами и, соответственно, отражённым от них лазерным лучом.
Естественно, мне захотелось сразу же что-нибудь попробовать вырастить перед тем, как буду делать корпус принтера.
И немного изображений.
Результат мне понравился и обнадёжил!
Спроектировать корпус и собрать его
Т.к. угол отклонения зеркал гальванометров мал, то и для получения поля 100×100 необходимо чтобы расстояние от зеркал до дня ванночки должно быть порядка 400 мм. Поэтому, необходимо использовать зеркала с внешним отражающим слоем. Почему с внешним ? Напишу чуть позже. Сначала нарисовал на бумажечке то, как принтер будет выглядеть.
И создал 3D модель в SolidWorks.
Немного красивостей и рендеринга
Ну и начал собирать. Сначала каркас.
Гальванометр с лазерным модулем.
Принтер в сборе.
Хочу пару слов сказать о плате управления принтера. В его основе лежит микроконтроллер LM3S8962. Прошивку я делал на LabView. Вот так оно всё работает (на столе, что называется)
Немного от зеркалах
Теории. При отражении от обычного зеркала световой поток деформируется и изображение теряет целый ряд важных качеств — яркость, четкость и соответственно контрастность. Кроме всего прочего картинка просто искажается. Причина тому в строении обычного зеркала.
Как можно видеть на чертеже, потоку света (красный луч), преломляясь, приходится проходить через стекло целых два раза — до отражающего слоя (отмечено жёлтым) и обратно. При этом теряется яркость, какое бы чистое и прозрачное оно не было. И самое главное, что при попадании под углом, отличным от 90 градусов свет в обычном зеркале отражается не только от самой отражающей поверхности, но и от поверхности самого стекла (фиолетовый луч) — все помнят, как видели в обычном стекле свое отображение. Мало того, часть светового потока, отражающегося от зеркальной поверхности отражается от внутренней поверхности стекла (серый луч), потом попадая снова на отражающий слой и так до бесконечности — эффект так называемого «призрачного отражения». Избежать такой «порчи» изображения позволяет специальное зеркало, у которого отражающий (серебряный) слой на стекле не закрыт защитным покрытием (отмечено чёрным), как на обычном зеркале. Такие зеркала используются в теле-, микроскопах и других высокоточных оптических приборах.
Что же это даёт на практике? Сверху — обычное зеркало, снизу — с внешним отражающим слоем.
Если зеркала засветить лазером под углом 10–20 градусов к поверхности стекла, то можно увидеть, какое отражение получим. Сверху — от обычного зеркала, снизу — от зеркала с внешним отражающим слоем.
При использовании обычного зеркала чётко видны затухающие переотражения. При использовании зеркала с внешним отражением такой эффект полностью отсутствует.
Подбор фотополимера
Когда я только начинал заниматься проектированием принтера на рынке, в свободном доступе было крайне мало фотополимеров. Но ситуация, стечением времени сильно изменилась. О полимерах, тестах и муках выбора можно посмотреть здесь.
Подбор антиадгезионного покрытия дна ванночки
Антиадгезонное покрытие — один из важнейших элемент 3D принтера. Это покрытие должно полностью препятствовать прилипание фотополимера ко дну ванночки. В данном принтере я использовал Dow Corning Sylgard 184 силиконовый оптически прозрачный заливочный компаунд. У него есть плюсы и минусы. Минусов больше Немного прозрачного силикона на оргстекле.
Готовая ванночка, точнее аж 2 штуки.
Результаты
Напечатанные изделия
Это вообще самая первая получившаяся печать. Именно, да, я хотел напечтать плоский прямоугольник, аналог «Hello, world!» из IT сферы)
Деталь форт.
Деталь кольцо
Деталь труба. Задача: напечатать кусок трубки с «кольцами» внешним диаметром 9 мм и внутренним 7 мм.
Время печати примерно 40 мин. С торцов сломано — это я сломал. Проверял на прочность
Деталь колпак.
Длина мелкого — 20 мм, длина большого — 30 мм. Объём большого 3 см.куб, объём мелкого 1,94 см.куб. Время печати большого — 2 ч 57 минут, время печати мелкого не знаю, т.к. печатался не один. Большой на фотках — справа, мелкий — слева. толщина «корки» большого колпака — 1,5 мм, малого — 2,5 мм.
На это всё про всё я потратил примерно 9 месяцев.