UBL Bed autoleveling, хардварные концевики по всем направлениям и турбовентиляторы 5015 на 24В.

Подписаться на 3Dtoday
admlaz
Идет загрузка
Загрузка
03.06.18
1605
17
Техничка
9
Собственно начну с последнего...
Наткнулся я в свое время на сайте треугольников на любопытный хотэнд, отличающийся от привычных всем кубиков. Решил, при постройке нового принтера, попробую использовать его. Однако по умолчанию он рассчитан на 24В. ОК, значит пусть будет 24В БП у нового принтера! На столе силиконовая грелка на 220В, движкам все равно, хотэнд на 24В, остаются вентиляторы. Ну пускай тоже на 24В будут, решил я... На радиаторе хотэнда обычный осевой 4020, а на обдув модели запроектировал турбинку 5015. Заказал у уже проверенного продавца вентиляторы ровно той же фирмы и размеров, что покупал и использовал ранее, только на 24В. Получил и даже проверять не стал, продавец проверенный, да и вентиляторы(фирма) тоже. Собрал принтер, включаю, осевой вентилятор работает отлично, а вот обдув не хочет. Проверил напряжение, все нормально поступает. Ладно, думаю, не повезло, зря не проверил... Беру второй такой же (покупал пару), ставлю и тоже тишина... Что делать, разбираю из любопытства один из вентиляторов, вроде все целое, горелым не пахнет...:)
На платке всего одна микросхема, напрямую подключенная к входному питанию. Ищу на нее даташит и... в нем четко написано, что микросхема работает в диапазоне входных напряжений 3-18В. А ушлые китайцы ее в 24В вентиляторы ставят.
В общем свою проблему я решил понижающим DC-DC преобразователем 24/12В на данный вентилятор. Остальным же на заметку...:) Дело еще в том, что при поиске 24В 5015 турбинок Алиэкспресс выдает 90% вентиляторов именно данной фирмы и остальные без маркировки. В общем будьте бдительны...
68d30a603f8b06d0cc9661c6a8cdcaea.jpg
d43dd858620424a53a72c402f3eeaa25.jpg
2d6181db842a52ff0ab061b82c53e931.jpg
Теперь о UBL и концевиках...
В общем без малого неделю провозился с этими проблемами, даже пытался спрашивать в "Вопросы и ответы", но видимо мои вопросы прошли мимо людей способных на них ответить...:)
Скажу сразу - документацию на прошивку Марлин читал, статью о UBL, публиковавшуюся на данном ресурсе - тоже. Кстати в статье довольно много неточностей и недоговоренностей. Те с которыми мне удалось разобраться попробую затронуть...

Сначала о проблемах которые привели меня к необходимости более глубокого "копания" в прошивке.
У мня есть второй принтер на котором я давно и без проблем печатаю через octoprint, при чем скорость передачи стоит 250000. На новом принтере я так и не смог победить обрывы связи, хотя и скорость понизил до 115200 и шнурок где-то уже 40см поставил(экранированый). Octoprint тот же, порт тоже. Может часов 5 печатать без проблем, а может через 10 минут отвалиться.
Самое обидное если отвалится в конце многочасовой печати(и такое случалось). И это не только обидно, но и опасно, ибо при отвале связи сопло останавливается в точке печати(в контакте с печатаемой моделью) не отключает нагревы, ни стола , ни сопла...
Вторую проблему я изначально связывал с настройкой концевиков, ибо я наставил их(хардварных) по всем направлениям. Обнаружил проблему случайно, пытаясь распечатать большую модель(почти на весь стол). Выражается проблема в следующем.
В процессе печати, при превышении координатой Х некоего значения, печать прерывается и стол начинает движение вниз. Если внизу нет хардварного концевика(активированного на постоянную работу), стол доходит до упора и начинает прощелкивать шаговиком до бесконечности. Если есть концевик - то ударившись о него стол начинает движение вверх. А поскольку вместо хардварного концевика Zmin, стоит Zprobe 3D-Touch, то сопло пытается со всей дури продырявить стекло стола...:(
За эту неделю я перебрал все возможные варианты настроек концевиков в прошивке, "копал", правда, только config и config_adv. Разумеется, каждый раз чистил EPROM. Ничего не помогало.
И тут я вспомнил, что на старом принтере я пользовался билинейной системой автовыравнивания стола, а на новом решил сразу UBL поставить... Отключил G29A в стартовом скрипте - сразу пошла печать на всю область стола без проблем...
Во всяком случае нашел причину. Засел за более пристальное изучение UBL.
Во-первых, хочу отметить ошибочное заявление о том, что для активации системы UBL достаточно в стартовой скрипте написать G29A после G28. Система, конечно активируется, но сам мэш при этом не будет загружен в оперативную память
контроллера, даже если Вы сохранили его в слот 0, а стало быть "подруливать" ось Z не будет. Правильная последовательность команд в стартовом скрипте будет G28 G29 Ln G29A, где n - номер слота в который Вы записали мэш при зондировании.
Поэтому, лучше и в команде G29 Sn указать слот в явном виде. G29 S = M500 = G29 S0. Все команды одинаково запишут мэш в слот 0. А вот команде G29 Ln, указание номера обязательно, даже если это 0.
Во-вторых, и это прямо указано в документации, раздельная установка отступов в config_adv, для UBL , в отличии от той же билинейной, устанавливает отступы для сопла, а не для зонда!!! И работает это довольно криво..., в моем случае не работает совсем...:(
Возможно где-то в конфигах есть еще установки для UBL? Я так сходу найти не смог. Так для билинейной системы, если мне память не изменяет, была установка по интерполяции за пределами зоны замера. Для UBL я ничего похожего не нашел.

Итак, что же я имею на данный момент.

1. Движение по осям
Xmin=0 Xmax=262
Ymin = -9 Ymax=243
Это возможные координаты именно сопла.

2. Размеры стола(печатной области)
240х240
центр 120,120

3. Отступы для Zprobe
X= - 46(левее сопла)
Y= + 5 (дальше сопла)

4. Мэш строится с отступом 0(пробовал разный, в том числе и 22)
координаты соответственно
0,240 216, 240
0, 0 216, 0

Вообще мэш строится правильно при любых установках в конфигах.

5. В config_adv Xmax для сопла указана
MESH_MAX_X (X_BED_SIZE - (MESH_INSET) + 22)

Однако при попытке печати в зоне X >= 216, я получаю реакцию принтера описанную выше. При этом я не могу именно печатать в данной зоне, холостой проход - пожалуйста...
То что я не имею никаких ошибок ни на этапе компиляции, ни в момент зондирования поверхности стола, ни при печати в зоне X < 216, а так же довольно дикая реакция принтера, говорит скорее об ошибке в коде, либо об отсутствии обработчика данной ситуации.
216 = Xmax - X_PROBE_OFFSET_FROM_EXTRUDER = 262 - 46

В общем если у кого будут какие-либо соображения, с благодарностью выслушаю и опробую.

Теперь вернемся к концевикам.
В той же статье было довольно "мутное" описание по переносу концевика Y на Xmax именно как бы с целью включения работы концевиков по прерываниям для снижения нагрузки на микроконтроллер от включения UBL.
Какого-либо внятного описания работы концевиков в прошивке Марлин я не нашел. Поэтому буду рассуждать логически с практическим перебором всех возможных опций в прошивке.
Сам факт возможности снижения нагрузки заинтересовал меня именно в связи с потерями соединения принтера с Octoprint, описанными выше. Есть подозрение что отвал связи может происходить по тайм-аут-у из-за загрузки контроллера, в том числе и обработкой UBL(которым раньше я не пользовался). Кстати, в Octoprint есть настройки тайм-аут-ов связи, Если кто подскажет какие и до какой величины можно подкрутить, буду благодарен.
Итак, у меня установлены механические концевики(платки с подтяжкой) по всем направлениям кроме Zmin. На Zmin подключен Zprobe 3d-touch.
Соответственно в config я раскомментирую все хардварные концевики, Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, и отключаю все софтовые концевики кроме Zmin.
В config_adv включаю опцию ALWAYS_ON для хардварных концевиков, чтобы они работали те только в момент автохоума.
И пробую в config включить работу концевиков по прерываниям.
Что получаем?
1. Автохоум работает правильно.
2. При наезде на концевик движение останавливается и его невозможно продолжить в том же направлении. Однако при этом крутя ручку энкодера можно дальше менять координату в недопустимом диапазоне. При движении в обратном направлении отсчет идет уже от этой недопустимой координаты и не приходит в соответствие реальности даже при наезде на противоположный концевик. Все равно необходимо сделать автохоум, чтобы привести координаты в соответствие с действительностью. Что совсем нелогично...:( Зачем спрашивается тогда нужны хардовые концевики...
3. У меня материнка MKS GEN v1.4. В плане распиновки концевиков ничем не отличается от классического RAMPS. Стало быть по прерываниям могут работать только концевики по оси X и Z. Часто в процессе тестов приходилось прерывать печать ресетом. И вот пару-тройку раз, автохоум после ресета, умудрялся проскакивать именно срабатывание концевика Xmin, который должен работать по прерываниям. Возможно сам концевик(микрик) дурит и его следует поменять, но тем не менее осадок остался...
В общем вопрос к знающим людям. Объясните логику работы концевиков в прошивке Марлин, а так же вариант настройки прошивки для получения максимального профита по разгрузке микроконтроллера.
На этом у меня пока все, надеюсь на дискуссию в комментариях...:)
Подписаться на 3Dtoday
9
Комментарии к статье

Комментарии

03.06.18 в 23:14
0
Двигателям не все равно. Двигателям чем больше тем лучше.
03.06.18 в 23:19
0
1. Никто не мешает переподключить и перепиновать так чтобы х и у были по прерываниям. Если так хочется.
2. С энкодером похоже на косяк прошивки.
3. В прошивке есть места где на какое-то (по идее - небольшое) время запрещается обработка прерываний. Т.е. видимо есть небольшая, но отличная от 0 вероятность не обработать прерывание. И я читал что в марлине с этим особенно криво потому что планировщик, кладя команды управления шаговиками в очередь, тоже запрещает прерывания

А вообще там в марлине похоже назревает мини революция -
https://github.com/MarlinFirmware/Marlin/pull/10688
04.06.18 в 00:05
0
Тут вопрос не в том хочется /не хочется, а как лучше, если даже те концевики которые должны по-умолчанию работать по прерываниям не отрабатывают.
По ссылке версия 2.х, На сколько я понимаю она только 32-битных контроллеров касается, или нет?
04.06.18 в 13:15
0
она вроде всех касается, и 8битных тоже. просто с 2.х еще не было официального релиза.

а в этом пулл-реквесте пишется как пришел чел и грит я вам тут всю эту балалайкку с планировщиком и функцией обработки степов наконец-то по уму переделал. и вроде в итоге взяли его код. так что может быть скоро качество печати в марлине немного улучшится
04.06.18 в 13:23
0
вообще имхо смысл всегда включенных концевиков (кроме того чтобы не дать заехать за область печати при ручном двигании)
в том, чтобы когда при печати с СД карты произойдет сдвиг слоев и в результате голова выедет за границы - остановить печать
04.06.18 в 13:44
0
Это все понятно, и не только с CD, при любом случае пропуска шагов движками...
Хотелось бы чтобы при наезде на концевики(и "съезде" с них) выполнялась бы проверка соответствующей координаты, и при расхождении корректировалась...;)
04.06.18 в 17:27
0
я бы так не сказал. понятно что постоянно включенные концевики будут не давать ходить за границы.
но если печатает внешний контроллер (копм, малина\апельсина, тфт24) - вполне возможно что он об этом может и не узнать (если не обрабатывает сообщение "endstops hit: ") и продолжать фигачить жкод до конца.
а вот фича ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED дествительно полностью останавливает печать задания-файла с СД карты, выключает нагрев и т.д.

кстати распространенное мнение то что концевики У подключены к пинам не обрабатывающим прерывания - оказывается ошибочно. на изменение 13 и 14 пинов можно получать прерывание, но по другому (через векторные прерывания на изменение пина).
04.06.18 в 20:28
0
Со слепу видимо не туда нажал...:) Мой ответ Вам чуть ниже....
04.06.18 в 12:49
0
Перечитав свою же статью, вдруг подумал - а пробовал ли я ставить отступ для UBL в config - 24?
24=240 - 216.
В общем с утра решил проверить...:)
Проверяю на печати теста Bed center 175мм, выставляя необходимое расстояние от модели для skirt.
Выставил Xmax=216, и запустил печать. Принтер смог пропечатать на данной координате около 4см скирта и дальше пошел не вниз, как
это было раньше, а вверх...:( Еле успел ресетнуть принтер пока он мне стол не вывернул...
А тот факт, что принтер все же успел пропечатать 4см по "запретной" координате, косвенно говорит о приличной загрузке микропроцессора этой самой UBL.
В общем похоже UBL так и не допилили до конца...:( Придется возвращаться на билинейную систему, которая работает без проблем.
04.06.18 в 20:06
0
Я немного о другом...:)
Механикой принтера заведует контроллер и прошивка. Пофиг откуда брать g-код. А контроллер не знает ни о каких пропусках шагов движками...;) Никакой обратной связи не существует. Стало быть ни он сам не может принять никакого решения ни компу чего-то внятного отправить.
Наезд на хардовые концевики может лишь помочь контроллеру восстановить точку отсчета по данной оси.
04.06.18 в 22:12
0
это все понятно и очевидно.
другое дело уже при наезде на концевики остановит ли печать "контроллер второго порядка" - репитер хост, репитер сервер, октопринт, вумная жк панель и т.п.
или будет фигачить до победного
04.06.18 в 23:41
0
Ну тут тоже все очевидно...:) Только если контроллер "первого порядка" будет в состоянии диагностировать проблему, можно говорить о контроллерах иного порядка...;)
04.06.18 в 13:55
0
Есть у меня смутное подозрение, что некорректная реакция на печать по границе и за границами мэша в моем случае связана с отрицательным отступом зонда от сопла. Ведь именно в этом направлении и происходят проблемы. Никаких проблем при печати за пределами мэша в других направлениях нет(если выставить отступы >0).
Я, конечно, не гуманитарий, но и не кодер, чтобы читать большие простыни чужого кода, особенно когда используют сокращенный синтаксис, сдвиговые операции и т.д. Да и без знания архитектуры конкретного микропроцессора, копать код бессмысленно. Поэтому надеюсь только на то, что люди способные
это проделать, заметят эту статейку и посмотрят, что там и как с кодом UBL...:)
04.06.18 в 14:36
0
https://www.thingiverse.com/thing:1976680
Marlin с ubl правда для дельты. Вроде работает исправно. Возможно пригодится.
04.06.18 в 14:50
0
Увы, ничего полезного не увидел...:( G29 P1 и у меня исправно работает.
05.06.18 в 15:42
0
Победил я таки UBL...:) В общем поставил в config отступ 0, а в config_adv для минимумов - 0 , для максимумов - 240(мой размер стола). Мэш стал строиться для квадрата :
0,240 240, 240
0,0 240, 0
Правда, поскольку зонд по X дальше 216 заехать не может(в моем случае), вместо отсчетов по правой границе получаем точки(т.е. отсутствие отсчетов).
Это не беда, алгоритм проинтерполирует их. Просто вместо сетки 5х5 точек, делаю 9х9.
Однако, нужно хорошенько запомнить, что движение по границе мэша - запрещено! Возможно данная фича связана с тем, что ширина экструзии отлична от нуля и при движении по границе печатной области, мы фактически за нее залезаем. В общем на данный момент у меня проходит печать 0,5х239,5 по обоим осям. При попытке печати по зоне 0х240 - получаю ту же некорректную реакцию принтера. Возможно чуть передвину концевики, на 0,5-1мм(есть еще немного места), за пределы области печати, дабы не думать об этом. Слайсер ведь дает возможность печати вплоть до границ печатной области.
В любом случае, реакцию принтера на печать в "запретной зоне", нужно как-то переделывать в коде UBL. Разумно было бы поднять головку на величину Z_safe и поставить печать на паузу.
05.06.18 в 15:47
0
А вот работой хардовых концевиков, пока не доволен...:( По прежнему иногда наблюдаю попытки заезда за концевики при парковке. Попробую отключить always_on, и включить софтовые концевики. Работу по прерываниям разрешу.

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

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

Как использовать Google Earth в качестве исходника для 3D-моделей

КРаЗ 255 с катером БМК - Т в пожарном исполнении

Хоппер дозатор ЦНИИ ДВЗ 1/87

Все что вы уже знали, и чуть больше. О Ceramo Nero и Tex!

Маленькая бейсболистка с 3D-печатным протезом руки открывает игры Мировой серии

Когда Масква далеко, а из Китая долго.