Проблемы стереолитографии, детализация, пигмент, опыт создания выравнивающей маски для принтера EGL3D EGL1

Всем привет. Продолжаю писать в своем блоге про стереолитографию , а точнее ее разновидность DLP SLA. В этой статье хочу поговорить про следующие проблемы и методы их решения: плохая детализация, “заплытие” элементов, неравномерность засветки. Как бы на первый взгляд не казалось, но с помощью стреолитографии не так просто получить идеальный отпечаток с четким соответствием всех размеров, пропечаткой мелких деталей и четкостью граней и углов, например очень хорошо известна проблема с “мылом” крапанов на ювелирных моделях. Давайте по порядку.
“Заплыв” по оси Z
Данная проблема возникает из-за того что полимер при засветке способен отвердеть на величину превышающую вичину одного слоя. Заметна эта проблема на “нависающих” элементах модели, постараюсь показать на картинке
parazitnaya zasvetka

Т.е. для решения этой проблемы требуется так подобрать параметры печати, чтобы полимер твердел на нужную величину близкую к величине одного слоя. Способность полимера твердеть вглубь зависит от многих параметров: “реактивность” фотополимера, мощность светового потока, прозрачность полимера, время засветки. Реактивность полимера и мощность потока регулировать не так просто, поэтому очевидным для решения проблемы является подбор времени и регулирование прозрачности полимера. Из собственного опыта хочу сказать, что просто временем засветки в большинстве случаев проблему решить не удается, поэтому приходится добавлять пигмент. Лучше всего использовать пигментную пасту, как можно более концентрированную, чтобы снизить количество инородного вещества в полимере, некоторые фирмы производители полимеров продают также и пигмент, но ничего специального в нем нет, можно использовать любой доступный вариант. Также мне известно, что в некоторых составах используется особый поверхностный тип фотоинциатора, что препятствует затвердеванию полимера вглубь, но думаю это больше относится к дорогим профессиональным составам.

Плохое сцепление слоев “перепигментованность”
Как и в любом деле с добавлением пигмента главное не переборщить, рассмотрим обратную картинку, когда содержание пигмента в полимере слишком большое.

otriv modeli

Очевидно, что при сильной перепигментованности модель просто не вырастет, но чаще бывает, что модель, все таки, растет, но идут различные артефакты в виде смещения слоев(горизонтальных полос). Возникают артефакты в том числе от частичного отрыва слоев друг от друга(даже при отличной механике оси Z и хороших мощных поддержках), обычно это проявляется на больших площадях слоев из-за большей нагрузки при отделении, тут в игру должна вступать система реализации слоя. Чем более мягкое отделение слоя ото дна ванны, тем больше принтер дает нам пространства для экспериментов с пигментом. По процессу сильно проще печатать не пигментованным полимером, сцепление слоев которого очень хорошее, он гораздо менее требователен к параметрам печати, но говорить об идеальной детализации в таком случае не приходится. Из реальных полимеров хочу привести в пример B9 Cherry, он имеет избыточную пигментованность, но печатать им очень сложно, а на слоях больше 25 микрон, практически невозможно. На родном форуме, люди не выдерживая мучений, часто мешают его 1 к 1 с B9 Red, чтобы уменьшить пигментованность, однако наиболее детализированные распечатки получаются именно из чистого B9 Cherry.

“Заплыв ” по XY
По осям XY полимер плывет значительно меньше и уже изначально имеет хорошую детализацию, но и влиять на этот процесс значительно сложнее. На мой взгляд, один из определяющих факторов в детализации по XY — это состав полимера и то, насколько сильно он захватывает прилегающие не засвеченные области в результате химических процессов полимеризации. Конечно, можно в какой то степени уменьшить заплытие по XY с помощью пигмента и времени засветки, но часто даже с огромным количеством пигмента и минимальным временем засветки на грани пропечатки нужного результата достичь не удается. В пример приведу фото. Тестировал один состав полимера(верхнее кольцо), добавил огромное количество пигмента и ставил минимальное время засветки на грани пропечатки, но крапана(прошу прощения если не правильно называю дырки под камни) все равно заплывали, в то время как значительно менее пигментованный полимер пропечатывал их на отлично. В любом случае, если на модели имеется рисунок или часть, которая должна быть пропечатана наиболее детализировано, рекомендую располагать ее в плоскости XY.

krapan
Неравномерность засветки.
Не секрет, что в DLP проекторах интенсивность света проецируемого изображения – неравномерна, при этом в разных местах пятна интенсивность света может отличаться довольно сильно, этот факт может создавать трудности при печати. Допустим, мы подобрали оптимальное время засвета для моделей, которые находятся в более интенсивной части рабочего поля, но при этом из-за разности интенсивностей света модели в другой области рабочего поля просто не пропечатаются. Или, например, мы подобрали время засвета для менее интенсивных областей печати, но модели в более интенсивных областях при засветке с таким временем будут подплывать. Решением данной проблемы может стать выравнивающая маска – изображение, которое накладывается на слой при засветке и затемняет наиболее интенсивные области. Однако встает вопрос как можно получить такую маску, потому как картина распределения интенсивности света индивидуальна для каждого проектора.
Ну что ж, начнем эксперименты. Первый способ — это распечатать тестовый шаблон, забитый маленькими конусами(столбиками), выставить минимальное время засвета и по высоте столбиков и пропечатке посмотреть проблемные области. Далее в любом графическом редакторе нарисовать маску, с помощью кистей и градиента. Приведу фото подобного шаблона.
test
Четко видно, интенсивность света на одной стороне(особенно угол) — ниже, что приводит к непропечаткам.
Второй способ — это использовать фотоаппарат и снять свое световое пятно. По фотографиям должно быть видно затемненные области. Не самый точный способ, но для прояснения картины сделаем и это. Приведу 2 фотографии — просвет бумажки и отражение от нее.
foto otrag
В целом, картина с тестовым шаблоном подтверждается, однако не так очевидна.
Ну и третий способ — это использовать датчик УФ света. Собрать установку по измерению УФ излучения — не самая тривиальная задача, поэтому я решил использовать датчик освещенности, который есть в любом современном android смартфоне. Конечно картина распределения УФ света не на 100% совпадает с распределением белого света, но должна быть очень близка. Я создал картинку-шаблон точек для высвечивания на проектор и простенькую программку под Android для записи измерений, ссылки на них в конце статьи. Если соберетесь повторить мои эксперименты, то хочу сразу предупредить, у некоторых смартфонов датчик освещенности ступенчатый с 3-4 значениями, такой нам не пойдет, нужен полноценный датчик , например, в Sony Xperia Acro S — то что надо! Второе, лучше, проектор снять и высвечивать шаблон на большой экран, так и проще мерять, и датчик не зашкаливает. Если датчик все же зашкаливает, можно наклеить затемнитель, например, скотч(мне пришлось клеить в несколько слоев), потому как нам важны только относительные значения, а не абсолютные. Фото эксперимента.
shablon exp2 exp1
Картина, полученная в первых двух экспериментах, подтверждается, один угол меньше освещен. Далее измерил интенсивность во всех точках шаблона и скинул файл на компьютер. Расчет маски на смартфоне решил не делать, потому как Java не самое лучшее решение для этого, и расчет получался около 10 минут (Native методы решил не использовать). Расчет добавил в свою программу EGL3Desktop во вкладку настройка маски – маска из файла измерений, тут все побыстрее около 5-10 секунд. Результат на скриншоте:
mask
Настало время использования маски, на мой взгляд прямое использование – не правильно, потому как затемняя наиболее освещенные области мы теряем полезную мощность проектора. Поэтому в EGL3Desktop я реализовал временную маску, т.е. наиболее освещенные области(пиксели) высвечиваются меньшее время, менее освещенные — большее время. Соотношение времени определяется исходя из глубины цвета пикселя в маске, выглядит засветка следующим образом(прошу прощения, фокус камеры при таком ярком свете гуляет):
zasvet
Надеюсь мой опыт будет вам полезным, выкладываю ссылки на инструменты:png шаблон для создания маски — http://www.egl3d.ru/downloads/mask_grid.png
Программа EGL3DMask для записи измерений — http://www.egl3d.ru/downloads/EGL3DMask.apk
Программа EGL3Desktop(бинарник) — http://www.egl3d.ru/downloads/EGL3Desktop.zip
Исходник EGL3Desktop — http://www.egl3d.ru/downloads/EGL3Desktop_source.zip