История о том, как я делал свой первый 3D принтер.
Скажу сразу, статья больше обзорная и историческая, потому как деяния проходили в далёком 2013 году.
Сначала определимся со способом формирования изображения. В данном случае – это лазерный луч, отклоняем сканирующей системой (гальванометрическим сканатором). Процесс создания объекта можно увидеть на GIF анимации ниже.
![](https://habrastorage.org/getpro/habr/upload_files/8d3/ea3/7bc/8d3ea37bc1ec3a303b086cc3077e22b4.gif)
Отличие будет состоять лишь в том, что построение в моём принтере будет не от поверхности ко дну, а от дна к поверхности. У этого метода есть плюсы и минусы.
![](https://habrastorage.org/getpro/habr/upload_files/235/941/19d/23594119d2ddf0bb35d393fd05e5acab.jpeg)
Плюсы построения от дна:
простая механика (нет необходимости в выравнивающем устройстве);
необходимо меньшее количество фотополимера , находящегося в ванночке для выращиваия объекта;
ванночку можно сделать небольшую по высоте;
Минусы построения от дна:
необходимость обработки дна ванночки антиадгезионным покрытием;
борьба с эффектом «присоски»;
С минусами и плюсами понятно.
Но какие задачи необходимо будет решить, для изготовления принтера ? (считаем, что у нас ничего нет, и всё делаем с нуля)
порезать 3D модель на слои;
преобразовать слои в управляющую программу (УП);
сделать управление лазером и гальванометром согласно УП;
спроектировать корпус и собрать его;
подобрать фотополимер;
подобрать антиадгезионное покрытие дна ванночки;
порадоваться или наоборот разочароваться в результате;
Задачи такие поставил т.к. хочу чтобы всё было своё, чтобы принтер был автономным – вставил флешку, запустил печать и готово, ждёшь только. Более подробно опишу каждую задачу и её реализацию.
Резка модели на слои.
Реализацию этой задачи я попросил заняться другого человека. Суть в следующем: берём 3D модель желаемого объекта, выбираем на нём грань, от которой будет идти построение модели и «режем» её на слои, параллельные выбранной грани. Шаг резки задаём в программе. В конечном итоге я получил на руки приложение, загрузив модель в которое на выходе получал 1-битные картинки, получившиеся нарезанием модели на слои.
![Интерфейс программы Интерфейс программы](https://habrastorage.org/getpro/habr/upload_files/4c8/49c/109/4c849c109d91cd95f9960c25171defde.jpg)
Подготовка управляющей программы
Эту задачу как и все последующие я решал уже сам. Описывать процесс, думаю, нет смысла, просто покажу на примере одного слоя.
Допустим, у нас есть слой (один срез нашей 3D модели) размером 6х7 пикселей.
![Пример слоя Пример слоя](https://habrastorage.org/getpro/habr/upload_files/ad9/05f/ed1/ad905fed1b4693dd49ae9e24949308fe.jpeg)
Управляющая программа одного слоя будет выглядеть так:
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Д модели. Мне так показалось проще и так сделал.
Реализация управление лазером и гальванометром согласно УП
Многие, думаю, помнят старые добрые стрелочные индикаторы, наподобие такого:
![киловольтметр) киловольтметр)](https://habrastorage.org/getpro/habr/upload_files/ca3/5b0/159/ca35b015914bd1b2e5d0eb9ca1ce66c0.jpeg)
В его основе лежит гальванометр. Точно такой же гальванометр используется и в устройстве, управляющем отклонение зеркал. Отличие состоит лишь в том, что для зеркал используется обратная связь по положению ротора гальванометра для более точного и быстрого позиционирования зеркала.
Внешний вид гальванометрического сканатора (точнее элементов для управления):
![](https://habrastorage.org/getpro/habr/upload_files/037/432/e82/037432e82c52380a83d25c1e5e4845da.png)
Цифрами помечено: 1 – блок питания, 2 – драйвер гальванометров, 3 – демо плата с программами (была выкинута за ненадобностью), 4 – гальванометрические головы (2 шт)
Для того, чтобы управлять гальванометром необходимо на драйвер (на управляющий вход) подать напряжение в диапазоне 0-10 В. 0 В -это одно крайнее положение зеркала, 10 В – другое крайнее положение зеркала. Остальные положения получаются пропорционально изменению напряжения на входе. Для задания напряжения я использовал 12-ти битный ЦАП, точнее два ЦАПа, по одному на каждую ось.
![Три ЦАПа и отладочная плата Три ЦАПа и отладочная плата](https://habrastorage.org/getpro/habr/upload_files/79a/c16/95c/79ac1695ca63691f271b1776a905fda5.jpeg)
Вот что в итоге можно получить, управляя зеркалами и, соответственно, отражённым от них лазерным лучом.
Естественно, мне захотелось сразу же что-нибудь попробовать вырастить перед тем, как буду делать корпус принтера.
И немного изображений.
![](https://habrastorage.org/getpro/habr/upload_files/5c1/d02/b14/5c1d02b14dcacefef1159a639132512f.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/447/870/b13/447870b13c5aa780d164c72b9552a2ee.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/232/99a/1fd/23299a1fd8fd6e141a70940f517e8e03.jpeg)
Результат мне понравился и обнадёжил!
Спроектировать корпус и собрать его
Т.к. угол отклонения зеркал гальванометров мал,то и для получения поля 100х100 необходимо чтобы расстояние от зеркал до дня ванночки должно быть порядка 400 мм. Поэтому, необходимо использовать зеркала с внешним отражающим слоем. Почему с внешним ? Напишу чуть позже. Сначала нарисовал на бумажечке то, как принтер будет выглядеть.
![](https://habrastorage.org/getpro/habr/upload_files/cb5/863/d78/cb5863d786304346bb8550d02d03ae68.jpeg)
И создал 3D модель в SolidWorks.
![](https://habrastorage.org/getpro/habr/upload_files/3dd/053/5f0/3dd0535f03149e565ade30432885c53b.jpeg)
Немного красивостей и рендеринга
![](https://habrastorage.org/getpro/habr/upload_files/2df/ebf/946/2dfebf946ccc9e92ee372ea708762d35.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/002/a12/7f0/002a127f0765d509b542b63a52b58b21.jpeg)
Ну и начал собирать. Сначала каркас.
![](https://habrastorage.org/getpro/habr/upload_files/32d/41c/3b8/32d41c3b82e0a5dc7abda0af9d565568.jpeg)
Гальванометр с лазерным модулем.
![](https://habrastorage.org/getpro/habr/upload_files/2ec/e6d/4b0/2ece6d4b087211b6cb1a509d5d1e6523.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/159/188/cb8/159188cb8f5cdbacf275b397f15422a9.jpeg)
Принтер в сборе.
![](https://habrastorage.org/getpro/habr/upload_files/b76/fe6/756/b76fe6756ef8a776ad96770ee57ccc7d.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/e87/6fc/bab/e876fcbab896d21d9bff085e81bf7213.jpeg)
Хочу пару слов сказать о плате управления принтера. В его основе лежит микроконтроллер LM3S8962. Прошивку я делал на LabView. Вот так оно всё работает (на столе, что называется)
Немного от зеркалах
Теории. При отражении от обычного зеркала световой поток деформируется и изображение теряет целый ряд важных качеств – яркость, четкость и соответственно контрастность. Кроме всего прочего картинка просто искажается. Причина тому в строении обычного зеркала.
![](https://habrastorage.org/getpro/habr/upload_files/b22/359/19b/b2235919bbc5d57cb7ad64dfbada69cf.png)
Как можно видеть на чертеже, потоку света (красный луч), преломляясь, приходится проходить через стекло целых два раза – до отражающего слоя (отмечено жёлтым) и обратно. При этом теряется яркость, какое бы чистое и прозрачное оно не было. И самое главное, что при попадании под углом, отличным от 90 градусов свет в обычном зеркале отражается не только от самой отражающей поверхности, но и от поверхности самого стекла (фиолетовый луч) – все помнят, как видели в обычном стекле свое отображение. Мало того, часть светового потока, отражающегося от зеркальной поверхности отражается от внутренней поверхности стекла (серый луч), потом попадая снова на отражающий слой и так до бесконечности – эффект так называемого «призрачного отражения». Избежать такой «порчи» изображения позволяет специальное зеркало, у которого отражающий (серебряный) слой на стекле не закрыт защитным покрытием (отмечено чёрным), как на обычном зеркале. Такие зеркала используются в теле-, микроскопах и других высокоточных оптических приборах.
Что же это даёт на практике? Сверху – обычное зеркало, снизу – с внешним отражающим слоем.
![](https://habrastorage.org/getpro/habr/upload_files/59f/027/920/59f0279200c8c2f44887797dfe5492e5.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/09e/128/d31/09e128d31db3c57fa08bacb00ec8841c.jpeg)
Если зеркала засветить лазером под углом 10-20 градусов к поверхности стекла, то можно увидеть, какое отражение получим. Сверху – от обычного зеркала, снизу – от зеркала с внешним отражающим слоем.
![](https://habrastorage.org/getpro/habr/upload_files/602/9d8/f08/6029d8f08d74b9b9f40820f9d65714b0.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/8bb/daa/317/8bbdaa3176692518164d941ca2be5cc3.jpeg)
При использовании обычного зеркала чётко видны затухающие переотражения. При использовании зеркала с внешним отражением такой эффект полностью отсутствует.
Подбор фотополимера
Когда я только начинал заниматься проектированием принтера на рынке, в свободном доступе было крайне мало фотополимеров. Но ситуация, стечением времени сильно изменилась. О полимерах, тестах и муках выбора можно посмотреть здесь.
Подбор антиадгезионного покрытия дна ванночки
Антиадгезонное покрытие – один из важнейших элемент 3D принтера. Это покрытие должно полностью препятствовать прилипание фотополимера ко дну ванночки. В данном принтере я использовал Dow Corning Sylgard 184 силиконовый оптически прозрачный заливочный компаунд. У него есть плюсы и минусы. Минусов больше Немного прозрачного силикона на оргстекле.
![](https://habrastorage.org/getpro/habr/upload_files/6cb/2d4/c19/6cb2d4c194ed91b0dae833c01904633f.jpeg)
Готовая ванночка, точнее аж 2 штуки.
![](https://habrastorage.org/getpro/habr/upload_files/e68/82d/162/e6882d162cb611b471ce48442082ca4e.jpeg)
Результаты
Напечатанные изделия
Это вообще самая первая получившаяся печать. Именно, да, я хотел напечтать плоский прямоугольник, аналог "Hello, world!" из IT сферы)
![](https://habrastorage.org/getpro/habr/upload_files/118/e83/ece/118e83ece593619853e0425f14dca671.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/f8f/15a/5d8/f8f15a5d8d1295c3c2e7bd122a401bca.jpeg)
Деталь форт.
![](https://habrastorage.org/getpro/habr/upload_files/3bd/e91/486/3bde91486cb562599f2b7cc0bee0ecac.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/04a/872/168/04a872168dc69e2e66033ae8d88a8cb8.jpeg)
Деталь кольцо
![](https://habrastorage.org/getpro/habr/upload_files/12d/5b7/08a/12d5b708a032e3d0ee91cc0b565c4159.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/2cb/8df/6c8/2cb8df6c8d81fc45d035707af29be959.jpeg)
Деталь труба. Задача: напечатать кусок трубки с «кольцами» внешним диаметром 9 мм и внутренним 7 мм.
![](https://habrastorage.org/getpro/habr/upload_files/87d/4f9/d39/87d4f9d393729638764bd60e52fac5b6.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/b18/325/45e/b1832545eea1988fef268842e20fc66e.jpeg)
Время печати примерно 40 мин. С торцов сломано – это я сломал. Проверял на прочность
Деталь колпак.
![](https://habrastorage.org/getpro/habr/upload_files/056/da1/d67/056da1d6755dead3dac6c75629a993ee.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/453/a63/646/453a6364684329588ee0c5c3e55a6c36.jpeg)
Длина мелкого – 20 мм, длина большого – 30 мм. Объём большого 3 см.куб, объём мелкого 1,94 см.куб. Время печати большого – 2 ч 57 минут, время печати мелкого не знаю, т.к. печатался не один. Большой на фотках – справа, мелкий – слева. толщина «корки» большого колпака – 1,5 мм, малого – 2,5 мм.
На это всё про всё я потратил примерно 9 месяцев.
Комментарии (8)
Sergiv Автор
06.06.2022 18:11+2Странно, но отложенная на декабрь запись почему-то опубликовалась, так и не дождавшись правок...постараюсь быстро поправить
screwer
06.06.2022 18:14+2Концептуальная проблема такой развертки луча - без ф-тета линзы невозможно обеспечить фокусировку по всему полю. Даже в случае одной оси невозможно (сканаторы от лазерных принтеров). А для мелкого поля в пару сантиметров оно как бы и смысла не имеет.
extiander
Moai 130 ( - они обещали сделать ее опенсор изначально
классная платформа, жаль что забросили
они довели эту идею до воплощения
Sergiv Автор
Зато другие довели и сильно раньше - Form1)
extiander
они вроде это и начали , не ?
сейчас с приходом 8 16к они вытесняются протыми матрицами/длп
а так очень прикольные ощущения от пользования
он прекрасно рисует гладкие вещи
а вот углы - наборот нужны компенсации разные чтобы выдерживать
Sergiv Автор
Матрицы сейчас наиболее актуальны ( и по скорости печати и по точности), даже DLP ушёл на второй план.
PTM
если инженерка то с матрицами беда... все более менее инженерные полимеры либо DLP, либо густые