Кастрация прошивки 3D принтера

Подписаться на 3Dtoday
operrr
Идет загрузка
Загрузка
13.05.18
2995
13
печатает на Prusa i3
Техничка
2
Статья относится к принтерам:
Prusa i3 Anet A8
С ростом сложности 3D моделей, и особенно с увеличением скоростей печати производительности микроконтроллеров управляющих плат 3D принтеров( а большая часть это атмега) может не быть недостаточно, что приводит к ухудшению качества печати, фризам и зависаниям. В основном конечно недостаток производительности будет ощутим при переходе на более высокие скорости печати. Я неоднократно высказывал свое мнение о скоростной печати(можете перейти по ссылке и посмотреть видео), я не то что бы противник и мне тоже порой приходится печатать достаточно быстро, но я все-таки придерживаюсь мнения, что получить высокодетализированое и что самое важное качественное изделие можно только при печати на небольших скоростях. Но опять же - это только лично мои наблюдения и выводы, они могут кардинально разниться с вашим и естественно быть не верными.
Тем не менее, пользователи хотят печатать быстро, это их право и остается найти решение как избежать, а точней всего как минимизировать эту потерю производительности. Решение уже есть, и оно работает скажем так "из коробки" - это переход на 32-х битную платформу. Таких решений не мало, у них много плюсов, но есть и минусы. Самый главный минус при переходе на 32бита это стоимость оборудования. Если связка меги и рампса обойдется вам менее чем в 1000руб, то тот же самый 32битный MKS увеличит затраты в 3-4 раза. Для кого-то это копейки, но я бедный, жадный и люблю принимать нестандартные решения.
И так, если мы отбрасываем возможность перехода на 32 бита, то остается только одно - ускорить работу существующей системы.
За основу конечно берем атмегу 2560. Можно конечно увеличить тактовую частоту путем замены кварца, но это черевато не стабильностью а так же нужно вносить существенные изменения в прошивку. Второй способ - это ускорение работы прошивки путем ее облегчения. Я конечно знаком с основами программирования, но самостоятельно и тем более в одну каску перепелить прошивку мне не по силам. Я долго анализировал то, как я общаюсь с своим принтером , что мне нужно, что не нужно и сделал некоторые выводы.

1. Обдув детали.

Как это работает. В процессе печати прошивка перебирая строки G-кода встречает команду на включение обдува и начинает выполнение соответствующей функции. Т.е. она начинает формировать шим сигнал с определенной скважностью импульсов, тем самым заставля вращаться вентилятор с заданной скоростью. Да, это не сложная функция, но она в любом случае отнимает процессорное время. Соответственно отключив эту функцию мы пусть совсем чуточку, но разгрузим процессор. Вы скажете бред! обдув нужен! и я с вами полностью соглашусь, тем более, что современные программы позволяют очень гибко работать с обдувом включая и выключая его только в нужный момент и с нужной интенсивностью. Но как раз в тот момент, когда я думал на счет обдува, мне на глаза попалась вот эта парочка.
b1fc7da148ec87807484ed64dc2d903b.jpg

Печатал я ее на заре моего знакомства с миром 3D печати, тогда я был ну очень поверхностно знаком с слайсерами и совсем не разбирался в тонкостях настройки. Точно помню, что печатал из куры - это был мой первый слайсер, и на тот момент обдув изделия для меня имел два режима - вкл и выкл, я даже не регулировал скорость. Статуэтка высотой всего 10см, она конечно не идеальная, но при таком размере пропечатались пальцы, уши и другие мелкие детали и с учетом отсутствия у меня на тот момент какого-либо опыта я считаю, что она получилась очень даже не плохо. Но к чему я все это говорю - пока я ностальгировал о том как я печатал эту парочку я поймал себя на мысли о том, что крайне редко вот так гибко настраиваю обдув и как показывает практика можно с легкостью обойтись без всех этих новомодных функций. Так как же нам управлять обдувом, который все-таки нужен, но при этом не тратить процессорное время? Да элементарно!
Можно использовать примитивный потенциометр, можно собрать простенький шим и управлять включением и скоростью вентилятора путем вращения энкодера или нажатия клавиш. Сделать все это можно на коленке не обладая при этом глубокими познаниями в электронике. Идем дальше.

2. Нагрев стола.
Многие принтеры вообще не имеют в арсенале стола с подогревом и при этом чувствуют себя не плохо. Но как ни крути, при нынешнем разнообразии пластиков подогрев стола жизненно необходим. Многие кстати включают PID стола, и я не был исключением. Но немного побаловавшись его отключил. В большинстве случаев стол представляет из себя бутерброд состоящий в основном из аллюминия у которого очень высокая тепловая инертность. Если площадь и объем термоблока хотенда достаточно маленькие, то те же самые сквозняки могут влиять на колебания температуры, а средне статистически стол весит под киллограм и повлиять на температуру такой массы прогретого металла не так уж и просто. По этому в прошивке указываем, что стола с подогревом у нас нет, тем самым минусуем выполнение еще одной функции и опять же разгружаем процессор. Но так как подогрев нам все-таки необходим, то как-то же нужно им управлять и контролировать. Тут нам на подмогу приходит любая ардуинка, в моем случае будет нано, так как в закромах у меня их предостаточно. Ну а написать скетч который будет обрабатывать данные с термодатчика, выводить их на экран и с помощью мосфета управлять нагревательным элементом стола в наше время сможет наверное каждый второй школьник. После физической реализации проекта будет отдельное видео, где я выложу скетч для всех желающих. Идем дальше.

3. Экран.
На заре моего знакомства с 3D принтером я в основном печатал с SD карты, но достаточно быстро пришел к тому, что мне гораздо комфортней контролировать процесс печати с компьютера. Ту же самую температуру, подачу или скорость обдува намного проще и быстрей подкорректировать одним движением мышки, чем тыкать в кнопки принтера. И уже очень продолжительное время я печатаю только с компьютеа. Исходя из выше сказанного можно с легкостью отказаться от поддержки SD карт и обработчика экрана.

Теперь подведем итоги:

Перечень "деактивированных функций"

1. Функция генератор ШИМ обдува детали
2. Функция управления нагревом стола
3. Функция обработки SD карт
4. Функция обработки кнопок или энкодера
5. Функция отвечающая за вывод информации на дисплей


К сожалению я не знаю способа оценки загрузки той же самой атмеги, по этому судить о том, что эти изменения приведут к ускорению работы можно только коственно. Но чисто логически, так как микроконтроллеру теперь будет нужно обрабатывать на 5 функций меньше, а тот же самый вывод на экран однозначно занимает не мало микропроцессорного времени, то думаю что эти изменения пойдут только на пользу и прилично разгрузят микроконтроллер. Но это не точно :-) ...
Подписаться на 3Dtoday
2
Комментарии к статье

Комментарии

13.05.18 в 16:13
0
Пост - сразу понравился, я тоже - немножко "хирург"... ;-)

Согласен полностью с п/п 1. и 2.

Что же касается п/п 3-4-5 - я предпочитаю печатать БЕЗ компьютера, однако - аж с двумя дисплейными модулями, подключёнными к RAMPS .
MKS-TFT28 и LCD2004.

Возможно, освоив полностью и попробовав не только Cura b Simplify3D, но и Pronterface, и пр. и др. - может и приду к пониманию отключения функционала по 3-4-5,
просто потому, что стараюсь при одной механике - иметь несколько "МЕГ", "заточенных" по-разному.

Про Ваш канал - не знал, сейчас - познакомлюсь!

Благодарю!
Ski.
13.05.18 в 18:00
9
Т.е. она начинает формировать шим сигнал с определенной скважностью импульсов, тем самым заставля вращаться вентилятор с заданной скоростью.
Эммм... Вообще-то в МК ШИМ аппаратный. Работает он самостоятельно и не использует вычислительных ресурсов МК.
Так что вы зря его отключили, оно никак на производительность не влияет.


К сожалению я не знаю способа оценки загрузки той же самой атмеги, по этому судить о том, что эти изменения приведут к ускорению работы можно только коственно.
Вот именно! А ведь с выяснения изначальной загрузки МК и надо было начинать. А не резать пршивку потому, что что-то показалось.
13.05.18 в 18:23
1
Вы просто видимо не разобрались с работой МК, поэтому вам кажется то, чего нет. Главное в работе любого МК, это прерывания. Все прерывания имеют приоритет. Обработка прерывания с наиболее высоким приоритетом будет выполняться всегда по первому требованию, внезависимости от общей загрузки МК в ущерб выполнению менее приоритетных прерываний. Они будут ставиться в очередь. И так, как главная задача МК на плате принтера крутить шаговики и плеваться пластиком, значит этим он и будет заниматься в первую очередь. А вот уже всем остальным он уже будет заниматься в свободное от основной работы время.
А вы просто порезали то, что и так не могло никак повлиять на основную задачу. МК и сам достаточно умный, чтобы распределить свои ресурсы так, чтобы главные процессы не страдали и не стояли в очередях.
13.05.18 в 20:19
0
Да и один из параметров влияющих, как мне кажется, на максимальную достижимую скорость печати сложных объектов - объём буфера команд тут не изменился.
13.05.18 в 20:27
0
Не, максимальная скорость механикой ограничена. От неё качество зависит. А саму скорость с пульта принтера можно вручную хоть на 200% поднять - в лёгкую проглатывает и не кашляет.
13.05.18 в 20:33
0
И нет разницы между печатью квадрата, описываемого (условно) четырьмя командами, и "хрен-сколько-там-знает-многоугольником"?
13.05.18 в 20:53
0
Так попробуйте, принтер у вас есть. Распечатайте квадрат и цилиндр.
Сколько бы вы там не пытались сделать многоугольников в модели, всеравно их больше, чем способен отработать микрошаг мотора, не будет. А все команды, четыре их, или миллион будут идти по очереди, по мере освобождения входного буфера.
13.05.18 в 18:56
1
Цена на 32-битные платы завышена искусственно. По комплектующим цена должна быть практически одинакова и в большей степени зависеть от обвязки контроллера, но тогда платы на Мегах брать никто не будет. Те, кто могут, делают себе платы самостоятельно, так как есть где взять открытые исходники. Делай себе то, что нужно и не переплачивай. Я себе сделал.
14.05.18 в 13:24
0
Было бы очень любопытно почитать на эту тему статью.
Ну или хотя бы ссылок набросайте по которым сами ориентировались.
Спасибо!
14.05.18 в 22:46
0
Завышена однозначно. сам беру периодически контроллеры для тех или иных задач. Но самим разводить далеко не лучший вариант, если только ты не специалист. Я занимаюсь разработкой промышленного оборудования, когда делал плату для 3D принтера, более менее рабочий вариант получился только на третьей ревизии. Ниже одна сторона только одного модуля для примера плотности монтажа.
62757c8019626e8bc7734498110eb5ab.jpg
13.05.18 в 21:59
0
А моделька та где?
13.05.18 в 23:54
0
На самом деле оптимизация g кода зависит от слайсеров и только, и мудрить тут нечего. Есть галочка в слайсере включить обдув - будет лишняя строка в g коде, будет дополнительная миллисекунда на исполнение, будет включен отвод прутка - будет ~4 дополнительных строки. Флешка и прочее во время исполнения кода - ни о чем.
14.05.18 в 16:00
0
Всё это мышкины слёзы. Основная проблема 8-ми б итной ардуины - среда разработки Ардуино.
Код компилятор генерит не оптимальный. В идеале надо использовать что-то вроде IAR и критические прерывания писать на ассемблере.
Также много времени расходуется на разбор G-кода и чисел с плавающей точкой в нем.

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

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

Как подобрать настройки пластика.

13 декабря официально откроются более тридцати детских технопарков «Кванториум»

Краткий обзор высокотемпературного 3D-принтера Intamsys FUNMAT HT

Origin Robotics предлагает 3D-печатные телеуправляемые роботы Origibot2

Компания «АБ Универсал» займется продажами 3D-принтеров XJet на территории России

Обзор пластика от 3D Partner