Утилита калибровки 3D принтеров. Часть 3. Жажда скорости.

Подписаться на 3Dtoday
vadik1000
Идет загрузка
Загрузка
07.07.18
3739
30
Техничка
38
В продолжение постов:
Утилита калибровки 3D принтеров
Утилита калибровки 3D принтеров. Часть 2.

Продолжаю дорабатывать эту утилиту.
На этот раз появилась функция автоматического поиска максимальных скоростей принтера:
2cb34aeaad8c0df6b4d656f9de9a17af.png
Небольшое вступление по этому поводу.

Как я раньше говорил, идея этой утилиты родилась как раз с желания автоматизировать поиск максимальных скоростей и ускорений механики принтера. Но из-за некоторых технических проблем, трудоёмкости алгоритма этого поиска, а так же в связи с тем, что точное знание предельных скоростей и ускорений, как оказалось, это не самая большая проблема при печати, я это дело отложил и разрабатывал утилиту, вставляя в неё функции, которые действительно нужны и нужны не один раз, а периодически.

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

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

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

Так же можно выбрать начальные скорости, с которых программа начнёт подбор.
Для каждой оси свой набор параметров.
Так же можно выбрать оси, скорости на которых необходимо подобрать.
Результат работы функции отобразится в окошке справа.

Теперь немного об алгоритмах поиска, чтобы было понимание, что, почему и зачем происходит при работе программы и чем это грозит.

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

Вторая часть алгоритма ловит, скажем так, фейковые скорости. Т.е. вы например, можете задать в принтере скорость 1000 мм/с и печатать на ней и даже не будет пропусков шагов и вы будете считать, что у вас реально такая скорость и говорить об этом на всех форумах. Но это может быть не так. По разным причинам. Ну например, будет недостаточно производительности платы, при этом ни ошибок ни пропусков может не быть.

Вот вторая часть алгоритма учитывает такие вещи. В результате на выходе отображается именно реально возможная скорость перемещения.

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

Ограничения пока следующие:
Поиск производится только скоростей, ускорения используются текущие.
Концевики должны быть min и на XY без смещения нуля, на Z отработка смещения нуля реализована.
Результат ни автоматически ни в ручную не применяется к прошивке, выводится просто как информация.
Ну и главное. Пока эта функциональность тестировалась только мной и на одном принтере, поэтому возможны глюки, сбои, ошибки со всеми вытекающими.

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

Кого это всё не пугает, кому интересно потестировать новый функционал - доработанная версия утилиты доступна по ссылке из первого поста.

Ещё мелки доработки:
Кто-то в комментариях говорил, что недостаточны таймауты, я их изменил, можно потестить.
И скрыты в коде некоторые моменты, которые мы обсуждали с SergeyR7.

Всем спасибо.
Подписаться на 3Dtoday
38
Комментарии к статье

Комментарии

07.07.18 в 22:53
2
Имхо, подбор ускорений важнее чем абсолютная максимальная скорость - пропуски чаще бывают от завышенных ускорений.
Обычно в слайсере по дефолту стоит даже скорость перемещений 150мм/с и при равномерном движении на этой скорости движки еще не теряют момент настолько. А рабочий ход и того медленней
И во всей этой штуке еще нужно учесть что пропуск можно словить позже, после прогрева драйвера
07.07.18 в 22:55
1
Согласен! Так же на различных принтерах с тяжёлыми осями они нужны для подбора качества с отсутсвием вибрации после поворота.
08.07.18 в 00:04
2
Благодарю!
Протестирую по мере возможности - в разных ОС и отпишусь.
Хорошо,что нет инсталляшки.

Удачи!
Ski.
08.07.18 в 00:08
3
Концевики должны быть min
А это мягко говоря недочет. Почему не сделать галки с выбором какие установлены концевики.
08.07.18 в 14:10
4
Потому, что :
> На данный момент это первая версия этой функциональности, имеющая некоторые ограничения.

Я могу сделать любую галку, это не сложно, я могу например сделать галку: "Сделать мир лучше", но он от выбора этой галки лучше не станет.
Нужно ещё эту галку кому-то реализовать. А для этого для начала надо выяснить как это реализовать, реализовать и найти как это потестировать.
Само это всё не делается. И на это нужно время и желание.
08.07.18 в 15:27
1
"Сделать мир лучше",
Да, вы юморист. Вы же прекрасно поняли, смысл.
Вы пишите, тестировать на разных принтерах, у вас нет возможности. О чем пишите сами
Если вы мне предоставите "широкий спектр принтеров" на тестирование и оплачиваемый отпуск на время этого тестирования, с удовольствием этим займусь.
Обратная связь для вас как "писателя" важна, НЕ нужно воспринимать в штыки ответы тестеров. Складывается впечатление, что вы нам делаете одолжение, осчастливив "пипл" своим "продуктом". У меня такое сложилось впечатление. Свой "продукт" вы сможете улучшить быстрее и качественнее лишь в синергии с тестерами. А потому будьте серьезнее и терпимее, сообщайте больше информации которая необходима "тестерам".
Ваш продукт запускал первую и вторую версию, чисто "потыкать", для настроек не использовал, потому как все настроено и работает. С новым пластиком возможно попробую вкладку "температура". Третью версию не скачивал даже, так как у меня "мин" только по Х. Так что пока не вижу смысла. В целом на мой взгляд "продукт" интересен, но сырой. И еще такой момент, кнопочка "отблагодарить автора" расположена и окрашена в стиле "попрошайничества". Ее имеет смысл перенести на другую вкладку.
Удачного "писательства" и
время и желание.
в ваших проектах. При качественном продукте непременно вас отблагодарят.
08.07.18 в 15:55
4
> НЕ нужно воспринимать в штыки ответы тестеров.

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

> Складывается впечатление, что вы нам делаете одолжение, осчастливив "пипл" своим "продуктом". У меня такое сложилось впечатление.

Это впечатление сложилось лично в вашем мозге, доступа к которому я не имею. А я лишь хотел объяснить почему и откуда такие ограничения программы. Если вы этого не поняли, а поняли, то что поняли, мне жаль.
08.07.18 в 22:47
1
Человек, цитату, которого вы привели никакой не тестер,
Тестер- любой кто решает опробовать ваш "продукт".Человек вам об этом и написал, но не как
хочет получить готовый продукт
он лишь пишет, что вы не проводили тестов, и не описываете алгоритм как- оно у вас работает.
Это впечатление сложилось лично в вашем мозге
тут вы про свой мозг точно подметили.
Напротив, он мог бы сам потестировать программу и написать результаты этих тестов здесь,
Об этом он вам и написал,
Может опишете хотябы в общих чертах?
Насчет
и никакой дядя со стороны не обязан ему его тестировать
Об этом также он не просил. В данной ситуации никто ни кому ни чего не обязан.
Ответьте на вопрос ЗАЧЕМ вы выложили, и не ограничились, первой одной статьей, а написали еще две, и ввели новые функции.
Предположу, вам это интересно, и у вас есть желание сделать более менее рабочий вариант, а без добровольных тестеров, это не выйдет.
Этот продукт не коммерческий
Соответственно и добровольные помощники будут, а вы пикируете, вместо спокойного пояснения на возникшие вопросы.
08.07.18 в 03:06
2
ловить их приходится хитро.
Как хитро то? Вы даёте некую имплементацию довольно опасного алгоритма, при этом и не говорите как он работает, и не тестируете его сами на широком спектре принтеров. В итоге я, даже будучи заинтересованным в такой функции, не стану ей пользоваться, потому что даже не понимаю, подходит ли она к моим принтерам. Может опишете хотябы в общих чертах? А так программа хорошая, хоть и сыровата пока немного. Очень давно такой ждал и надеюсь что у вас получится довести её до ума.
08.07.18 в 12:16
3
Не надо нести чушь про опасные алгоритмы.
Опасность находится в вашем принтере, который не умеет ловить пропуски шагов.
В результате даже при обычной печати из любой программы, да даже с самого принтера может возникнуть ситуация, что он начнёт биться кареткой о корпус или в то, что там у неё на пути будет.
08.07.18 в 12:32
1
Можно предположить, что происходит парковка по оси, потом "медленный" отъезд по ней же на определенное количество шагов, и возврат на тестируемой скорости. Если концевик не сработал, значит были пропуски.

Вот только не могу понять, как пропуски могут спровоцировать "удары механизмов друг о друга"?
08.07.18 в 14:25
2
> не тестируете его сами на широком спектре принтеров. В итоге я, даже будучи заинтересованным в такой функции, не стану ей пользоваться, потому что даже не понимаю, подходит ли она к моим принтерам.
>Может опишете хотябы в общих чертах?

Если вы мне предоставите "широкий спектр принтеров" на тестирование и оплачиваемый отпуск на время этого тестирования, с удовольствием этим займусь.
Я делаю то, на что мне хватает моего личного времени и совершенно свободно это выкладываю на использование и тестирование тем, кому это интересно и необходимо.
А вы хотите, чтобы вам всё предоставили на тарелочке с голубой каёмочкой. Вам это нужно, но вы даже не хотите сами потестировать, дядя для вас это должен сделать.
Все ограничения, последствия и общий принцип работы я описал в посте, вы даже не хотите его внимательно прочитать.
08.07.18 в 23:24
1
Уважаемый, что за агрессия? Я не говорил, что вы должны всё тестировать, не знаю откуда вы эту мысль взяли. Я говорил что либо алгоритм открытый хоть в общих чертах, либо оттестированный, либо ему нельзя доверять. У вас третий вариант, и все понимают что второй для вас неприемлим, так описали бы его как-нибудь подробнее чем "ловить их приходится хитро".


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

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

Не надо нести чушь про опасные алгоритмы.
Ваша же цитата:

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


И еще раз, не надо так агриться без причины. Мне ваша программа нравится, вы делаете хорошее дело, я пытаюсь вам обратную связь дать и критику. Если этого делать нельзя и вы хотите принимать только отзывы, в которых этого нет, то так и напишите в тексте поста.
08.07.18 в 12:41
1
> Вот только не могу понять, как пропуски могут спровоцировать "удары механизмов друг о друга"?

Объясню даже не на примере программы, а на примере просто печати.
Вы печатаете большую крышку коробки на весь стол. Например 200х200.
Принтер даёт команду на перемещение из координаты 0 в координату 200. У вас возникли пропуски шагов, неважно по какой причине - превышение скорости, ускорения, головка споткнулась о наплыв, просело напряжение от включение мощного стола и ещё +100500 причин. В результате вы, например, находитесь в координате 195, а принтер то думает, что вы находитесь в координате 200 и даёт команду на возврат в координату 0 и едет 200 мм, а у вас там только 195, в результате - удар.
08.07.18 в 13:24
0
Ограничения пока следующие:
Поиск производится только скоростей, ускорения используются текущие.
Концевики должны быть min и на XY
Эх-х.. жаль.. будем ждать такого же, но с "максимальными" пуговицами :-)
08.07.18 в 23:18
0
А максимальную скорость экструдера? У меня вот по личному опыту всё упирается именно в возможности экструдера. Причём упирается на "дрыгостоле". Что уж говорить про более скоростные кинематики...
08.07.18 в 23:38
0
Да у меня тоже всё упирается в экструдер. Я поэтому особо и не хотел функциональность поиска скоростей механики делать. Просто люди в комментариях к первым двум постами меня попросили, плюс самому было интересно, что из этого получится вот я и сделал, что успел за прошедшие пару дней.

Касаемо экструдера, а как вы собрались мерить его максимальную скорость? На разных пластиках и температурах он будет давать разную скорость, мало того, на разных влажностях один и тот же пластик давится по разному, мало того если он у вас давится в холостую то он может давиться с большей скоростью, чем если под соплом уже будет напечатанный слой, мало того напечатанный слой может иметь разную плотность и давится новый пластик тоже будет по разному, ну и самое главное, каким образом программа сможет узнать давится ли пластик или шестерня уже его съела и он не давится???
19.09.18 в 15:28
0
Тест на скорость экструзии сделать достаточно просто - по принципу калибровки некоторых принтеров, например Robox.
Алгоритм:
1. Печатаете 5-10 небольших деталек на разных скоростях, по нарастающей
2. после печати пользователь в программе указывает какая из деталей получилась максимально быстрой и качественной.
3. печатаете еще несколько деталей с небольшим разбросом скорости в большую и меньшую сторону от той, которую выбрал пользователь в п. 2.
4. Скорость экструзии, с которой была напечатана деталь, которую выбрал пользователь и будет самой эффективной в соотношении скорость/качество.

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

Удачи в разработке!
09.07.18 в 08:32
0
Если программа не тестирует скорость движения головы по диагонали, то смысла в ее использовании нету. Если посмотрите на кинематику движения CoreXY и H-bot, то поймете почему.
09.07.18 в 08:55
0
Вы может быть удивитесь, но я видел кинематику движения CoreXY и H-bot.
Вы может быть удивитесь, но я уже несколько раз здесь пытался объяснить почему сейчас в программе нет всего, что хотят все пользователи всех 3d принтеров на земле.
Вы может быть удивитесь, но кроме кинематики CoreXY и H-bot есть и другие кинематики, и обладателям таких принтеров программа может быть полезна.
09.07.18 в 09:01
0
Вы может удивитесь, но Вам уже несколько раз писали про агрессию, будьте терпимее. Тем более в посте я не видел, чтобы было написано, что принтеры с кинематикой CoreXY и H-bot не подходят.
09.07.18 в 09:15
0
Хорошо, уговорили, на глупые комментарии глупых людей отвечать не буду.
09.07.18 в 10:00
1
Выглядит как оправдание своей некомпетентности и лени. Вы не указали какие принтеры должны участвовать в тестировании, ни условия тестирования, сами просили и в итоге виноват кто-то другой из-за того, что вы не до конца все продумали и выложили в сыром виде, а ля: "Херакс, херакс и в продакшен". Удивляетесь почему вас не носят на руках, а делают замечания. Примите критику, исправьте хотя бы текст поста и не оправдывайтесь. Программировать - это не только умение кодить (сейчас этому никого не удивишь), но и способность вести сопроводительную документацию, решили поделиться, молодец, но будьте добры оформлять по человечески. Мы все таки не на местечковом форуме находимся, одолжения тут не прокатят. Если вы сейчас так настроены, то я сомневаюсь, что вы вообще будете в дальнейшем вести сопровождение своей программы и на все проблемы просто забьете такими же оправданиями.
09.07.18 в 10:34
0
Да, я просто забыл и не сказал, что для всех принтеров этот тест не имеет смысла. Так как для движения по диагонали двигатель должен вращаться примерно в 1,4 раза быстрее чем по одной оси. Просто для CoreXY и H-bot нагрузки на двигатель больше.
09.07.18 в 14:27
0
Я так и не понял.
Измеряется максимальная скорость холостого хода ??
Или максимальная скорость при печати ??
Максимальная холостая скорость упрется в жесткость рамы - принтер будет ходить и прыгать ходуном.
Максимальная скорость печати упрется в скорость подачи пластика в сопло - начнутся пропуски в слоях.
Экструдер банально не будет успевать продавливать в сопло филамент.
Смысл этой проги ?? Принтер будет скакать и печатать через слой, но зато без пропуска шагов !!!!

Еще раз повторю что важно для настройки и тестирования печати -
- Flow (поток)
- ширина (или высота) слоя (первого и последующих)
- ретракт (длина и скорость)
- скорость печати
Автор доработай прогу до ума. И не надо изобретать велосипед.
Все уже придумали - тест CaliGator .
11.07.18 в 03:11
0
доработанная версия утилиты доступна по ссылке из первого поста.
Это плохое решение:
1. заставляет искать , и лезть в первый пост
2. не дает возможности скачать старую версию которая возможно не имеет глюков новой

О самой программе. НЕ понял совершенно как работает тест скорости и как идет проверка клина/пропуска шага

Допустим у меня простая пруша i3 с двумя моторами по Z, или Tevo Tarantula c двумя моторами по Z. Вопрос: как программа будет ловить? Из текста:
Основа алгоритма проста. Программа гоняет движки на разных скоростях и ловит пропуски шагов. Поскольку программа написана для прошивок и принтеров, которые не имеют обратной связи по пропущенным шагам, то ловить их приходится хитро. Это, а так же некоторые другие технические моменты приводят к не очень быстрой работе функции поиска максимальных скоростей.
мне не понятно. А вот как угробить механику я вижу
11.07.18 в 10:16
0
Ускорения и скорости по Z, как правило, не очень актуальны (и вроде как программой не вычисляются) . Если боишься за то, что один двигатель будет двигаться в то время, как второй нет и что-то обязательно перекосится, то напечатай и поставь обычный разборный oldham типа такого и забудь про такую возможность. (но при этом не забудь переделать его под свои размеры и отступы, ессесна)
11.07.18 в 09:54
0
По поводу концевиков только в min, бедой это не счетаю.

1) Идете в прошивку принтера, инвертируете направление мотора с концевиком не на Min. (править надо направление мотора, а концевик переткнуть в min) (все равно придется прошивать несколько раз, подбирая значения ускорения)

2) С помощью утилиты узнаете максимальную скорость

3) Перетыкаете все как было, в прошивке возвращаете направление движения.

4) Profit. Теперь у вас есть имперически полученные значения ускорения и максимальной скорости. Для моего самодельного дрыгостольного принтера это очень актуально. Автору однозначно плюсик.

По поводу пожеланий - Было бы вообще круто при проверке скорости опрашивать датчик вибрации на предмет резонанса.
12.07.18 в 10:16
0
Profit. Теперь у вас есть имперически полученные значения ускорения и максимальной скорости. Для моего самодельного дрыгостольного принтера это очень актуально. Автору однозначно плюсик.
При движении по диагонали все ваши "расчеты по программе" будут ошибочными.
04.08.18 в 03:01
0
как сделать, чтобы программа печатала температуру?
довольно-таки просто:
1. прикладываете к программе stl-файлы секций с нанесённой на них температурой.
2. пользователь генерирует g-code в своём любимом слайсере. при этом старт/стоп скрипты должны быть отключены. сохраняет в папку с программой все эти g-code с заранее оговоренными именами, например: t-220, t-230, t-240...
3. программа собирает новый g-code из этих "кубиков" в соответствии с установленным диапазоном и дописывает старт/стоп скрипт (можно отдать пользователю возможность ввести свой или использовать стандартный)
4. всё.
5. по желанию - можно навешать защит от дурака - типа вычисления высоты кубика пользователя или принудительного перевода координат в относительные.
дарю ))

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

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

Опыт приобретения и использования принтера Alekmaker

Делаем фигурку свинки.

Печать на 3D принтере SkyOne в горизонтальной плоскости

Команда Йозефа Пруши предлагает «самый лучший филамент» под брендом Prusament

В Москве стартовала выставка-конференция «Top 3D Expo. Цифровое образование 2018»

XpreSki-09.11: Marlin-1.1.9 - адаптивная подача (Linear Advance) для ускорения печати