Программа коррекции не перпендикулярности осей

Talester
Идет загрузка
Загрузка
31.03.2020
1467
18
печатает на WANHAO Duplicator i3
Личные дневники

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

13

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

    Пока #сидимдома появилось время написать заметку которую давно хотел написать, да все не досуг было. Попал ко мне на диагностику и ТО потрепанный самодельный фанеробот:  заменить сопло, заменить ремни и т.д. Тестовая печать после ТО показала, что все оси не перпендикулярны между собой. Отклонения небольшие, в пределах 1-2 градусов. Однако хозяин отказался от исправления, сказал, что для его задач такие отклонения не играют роли. Ну, что сказать, хозяин-барин. Эта ситуация натолкнула на мысль: для  исправления такого дефекта не обязательно перебирать конструкцию принтера, достаточно измерить  искажения, вносимые в распечатку не перпендикулярностью осей, внести в исходную модель соответствующие предварительные компенсирующие искажения и в результате должна получиться вполне годная, печать с прямыми углами.

    Да, я знаю что подобный механизм есть в марлине - skew correction. Возможно, что этот функционал  присутствует и в другом ПО, например, в Нетфабе, а возможно, это уже обсуждалось и решилось здесь на портале. Честно говоря не искал, не смотрел, не интересовался и вот почему: а) просто интересно реализовать свое решение и убедиться в его работоспособности; б) самая главная причина - некоторое время назад начал изучать очередной инструмент программирования Python, а как известно, новому языку лучше учиться на реальной задаче, и эта задача мне показалась очень даже подходящей.

    Для усиления эффекта обучения решил сделать программу многопользовательской с возможностью хранения в SQLite у пользователя множества моделей и профилей принтеров. Так же решил, что кроме исправления перпендикулярности осей было бы неплохо так же  исправить искажения длинны по осям (то что в прошивке исправляется изменением шагов/мм). Ввод и вывод моделей из/в STL как в текстовом так и в бинарном формате. Возможно, для Питона есть библиотеки для работы с stl, но мне было интересно самому сделать разбор/сбор stl-файлов.

    В T-Flex был создан своеобразный "виртуальный" принтер, в котором можно было реализовывать различные искажения геометрии. На вход этого принтера подается исходная модель, T-Flex с помощью подключенной таблицы Excel рассчитывает предварительные корректирующие искажения модели и выводит на экран скорректированную модель, а так же результат печати исходной модели без корректировки, с учетом искажений в принтере. Математика не сложная, по-моему даже школьная программа, уравнение плоскости, матричные операции, векторы, но это не точно, я в школе давно учился.

Исходная модель

Результат печати модели в виртуальном принтере с искаженной геометрией

Скорректированная модель, в которую внесены предварительные искажения

    После этого математика и некоторые функции из T-Flex была переписаны на Питоне. И вот наступил час истины - натурные испытания. И тут же нарисовалась проблема - в обозримом окружении не было принтера, который выдавал бы более менее приличные искажения. Хотя, если честно, не так уж и много принтеров в моем окружении, не более трех-четырех вместе с моим. Оставалось одно - специально расстроить оси какого-нибудь принтера. Как я и думал, ни один из хозяев на это не пошел, я был убедительно пОслан, хотя все попросили сообщить им о результатах эксперимента. Пришлось использовать в качестве стенда свой старый и надежный как АК Ваньку Дуприкатор i3.

    Немного покрутил крепление рамы и направляющие, немного изменил шаги на мм, все в пределах разумного, без фанатизма, близко к реальности. Не думаю, что кто-то использует принтер с отклонением осей больше нескольких градусов. В качестве тестовой модели взял не банальный кубик, а деталь из текущего проекта. Мне она показалось более подходящей чем куб - одинаковая длинна по осям 60мм, все грани под прямым углом, нет лишнего расхода пластика.

    Пока процедура выглядит так: загружаю исходную модель в РепетиерХост, позиционирую ее, кручу-верчу, сохраняю в СТЛ, этот СТЛ с моделью загружаю в программу и обрабатываю, выгружаю скорректированную модель в СТЛ и снова загружаю в Репетиер уже для нарезки и печати.

    Распечатал две штуки, одна распечатка (ближе, с размытой буквой М) - без корректировки, с текущими искажениями принтера, вторая (с буквой К) - скорректированная модель.

Инструмент для измерений

Итак, результаты. Сначала измерения печати модели без коррекции со всеми недостатками в геометрии

Затем результаты измерений печати модели, в которую внесены корректирующие искажения.

Эксперимент показал, что метод рабочий и может быть использован. Что дальше?

1. собрать десяток отдельных программ на питоне в какую-то одну логическую единицу и прикрутить интерфейс. Идеально было бы в виде веб-сервиса, но тут я пасс, вообще не знаком, а времени изучить точно не будет.

2. оптимизировать математику

3. оптимизировать загрузку из STL в SQLite. Пока медленно, уже знаю почему и как поправить

4. разработать для каждого измерения свою специальную простую тестовую модель. Жизнь показала, что точность корректировки зависит от точности и удобства измерений и лучше, чтобы для каждого вида измерения или двух максимум была своя простая модель.

5. добавить функций поворота модели по осям.

6. как-то найти на все это время

7. Но самое главное, найти в пределах Уфы реально кривой принтер и проверить еще раз в реальных условиях. Почему в Уфе? Все-таки надежнее, когда первые тестовые отпечатки сам измеряешь.

Вот пока и все. Всем удачи. И сидим дома, читаем 3DToday

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

13
Комментарии к статье

Комментарии

31.03.2020 в 13:08
1

Класс.

Еще бы добавить коррекцию прямолинейности.

31.03.2020 в 14:02
0

Сейчас думаю над таким вариантом: есть прюша в директом, в середине оси Х получается провис примерно на 0.15 мм. Получается, что экструдер бегает по траектории линзы: чем ближе к центру стола, тем ближе к столу. Вторая проблема - направляющие по Y не паралельны, пропеллером. Это сложнее, но поправимо.

Исправить можно практически все, главное верно измерить параметры искажения, даже воблинг.

31.03.2020 в 16:32
0

Х получается провис примерно на 0.15 мм. Получается, что экструдер бегает по траектории линзы: чем ближе к центру стола, тем ближе к столу. 

Построение карты неровности стола, разве не решает эту проблему?

31.03.2020 в 17:56
1

В общем, конечно решает, это решение лучшее. Но есть два момента

1. в данном конкретном принтере установлена какая-то старая разновидность мелзи и я не уверен, что с ней такая фишка прокатит.

2. общая идея в том, чтобы принять принтер за черный ящик, данность и добиться от него геометрически правильной печати без вмешательства в механику и прошивку только за счет компенсации его недостатков путем коррекции модели.

Почему без вмешательства? Ну тут причин может быть много: недостаток опыта, отсутствие технической возможности, чужой принтер, банальная лень и т.д. Согласитесь, что измерить и внести в программу искажения, выдаваемые принтером гораздо легче, чем перебрать направляющие или установить БЛтач с последующей перепрошивкой.

31.03.2020 в 22:06
1

измерить и внести в программу искажения, выдаваемые принтером гораздо легче, чем перебрать направляющие или установить БЛтач с последующей перепрошивкой.

Согласен, легче. Но это БОЛЬШОЙ костыль. Удобнее и проще когда сам принтер отстроен и оставшиеся свои косяки учитывает .

Возможно вам стоит рассмотреть и другие варианты по образцу Марлина. Либо вариант интеграции с октопринтом, чтоб эта процедура была максимальна прозрачна для пользователя.

 Согласитесь использовать постоянно костыль совершенно неудобно.

31.03.2020 в 22:40
0

Согласен с вами безоговорочно, это костыль. Конечно, удобнее, если этот механизм уже встроен в прошивку, слайсер или окту или еще гораздо лучше если принтер просто от рождения имеет ровную и качественную геометрию. Но вот представьте ситуацию (мой случай из жизни): у вас срочное задание, вы понимаете, что просто не успеете его выполнить на своем/своих имеющихся принтерах. Вы берете принтер в аренду. Мне в такой ситуации повезло, что арендованный мною принтер был в свое время на 80% мной же и построен и я точно знал что беру нормальный аппарат. А если бы арендованный принтер имел проблемы с геометрией? Вы бы начали с того, что заменили бы на нем прошивку на модифицированную с неизбежными тестовыми распечатками? Или бы стали заниматься юстировкой направляющих вместо выполнения задания? Но перед этим все равно нужно было бы потратить время на согласование своих действий с владельцем аппарата. Не проще просто занести в программу профиль геометрии принтера, прогнать через программу модель и приступить к выполнению заказа?

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

04.04.2020 в 00:55
0

Согласен в описанной ситуации, пожалуй наиболее быстрый способ получить нужную геометрию. Я как-то не подумал об аренде принтеров.

31.03.2020 в 17:48
1

Сделайте скрипт для FreeCAD. С передачей параметров в командной строке. Будет совсем немного доп. работы. При желании в нем можно сделать плагин с графическими примочками. Но я неподскажу насколько это сложно.

31.03.2020 в 18:02
0

Интересная идея, спасибо.  Я как-то перепрыгнул через него, хотел уже заняться, да тут T-Flex на глаза попался и завертелось... Сейчас посмотрел, FreeCAD с Питоном дружит. Присмотрюсь как посвободнее буду.

02.04.2020 в 03:50
0

"тестовая печать после ТО показала, что все оси не перпендикулярны между собой. Отклонения небольшие, в пределах 1-2 градусов."

А можете рассказать, как проверить свой самодельный принтер на предмет отклонений? 

Заранее благодарю.

02.04.2020 в 08:19
0

Я проверял угломером, который на фото, его точности вполне достаточно для наших задач печати. Если нет угломера, то можно распечатать куб, чем больше тем точнее будет, но, думаю, по 50мм вполне достаточно. Измерьте диагонали и стороны у трех перпендикулярных плоскостей, в идеале стороны одной плоскости равны между собой, диагонали тоже. Если нет, открывайте в вики статьи про ромб и основные тригонометрические функции. Путем вычислений найдете углы отклонений.

Совет: если стороны диагонали не равны, значит перекос и, возможно, неверный масштаб. Сначала исправляйте перекос, только потом обращайте внимание на длину по осям (шаг/мм), ибо при перекосе всегда длина по осям не совпадает с расчетной. Выправите перекос - возможно и масштаб по осям на место встанет

02.04.2020 в 08:25
0

еще совет: примите одну ось за базовую. Я например принял ось Y за базу и все углы отмерял от нее. Т.е. вы принимаете что ось У априори правильно выставлена и если есть угол ХУ, то это ось Х искажена. Тоже с ZY.

02.04.2020 в 09:35
0

Дельты в пролете)

02.04.2020 в 12:22
0

Почему же в пролете? Корректировочные искажения вносятся в STL-файл модели. Какая разница на какой кинематике модель потом будет распечатана, главное правильно снять профиль искажений принтера. Обработка точек сетки происходит в системе координат СТЛ и никак не привязана к физическим координатам принтера. Да, и еще не вертеть модель в слайсере после коррекции.

02.04.2020 в 13:03
0

Вроде да, но дельты искажают концентрически)

23.04.2020 в 22:06
0

я не согласен что это "костыль"... думается прога полезна будет для компенсации усадки... 

вот только не уверен, что все последствия усадки можно этой прогой устранить? усадка она ведь такая, изменяет не только линейные размеры, но и геометрию. Например, в зависимости  от конструкции модели вместо "кубика" может получиться "бочка" или "песочные часы"

25.04.2020 в 23:27
0

Согласен, искажение геометрии имеет две составляющие - систематическую и случайную. Вы говорите о случайных искажениях, они зависят от материала, размера и геометрии модели, параметров печати и т.д. Программа компенсирует только систематические искажения, заданные геометрией принтера. Думаю, чтобы компенсировать случайные искажения нужно подключать искусственный интеллект. Хотя, если провести много тестовых распечаток, наверное, можно вывести какую-нибудь статистику как минимум по материалу.

26.04.2020 в 01:35
0

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

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Постоянно отрывает первый слой от стола? Возможно дело не в столе.

Range vision spectrum= reverse engineering

XTLW Climber 7 IDEX - первые впечатления

Часы на ГРИ

Встречайте – Raise3D E2

Материалы для печати на FDM 3D-принтерах на примере Ultimaker S-line