Кремень КД Реклама
Кремень КМ Реклама

MKS TFT28 (3) + MKS-DET: ловля марлина на сниффер

eta4ever
Идет загрузка
Загрузка
24.10.2016
17108
86
Техничка

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

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

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

54
MKS TFT28 (3) + MKS-DET: ловля марлина на сниффер
И снова здравствуйте, уважаемые читатели. Вашему вниманию предлагаются очередные китайские грабли. Обнаружились они при попытке завести модуль детектирования сетевого напряжения MKS-DET, работающий совместно с дисплеем-контроллером MKS TFT. Отправной точкой стал пост 3DFirst, где автор описывает косяк - 'не взлетает' эта конструкция совместно с прошивкой Marlin.

Начал проверять на своем зоопарке. 'Боевой репрап' у меня сейчас один функционирует, это WoodBot Mini под управлением MKS SMini (Smoothieware). Так вот, со 'смузи' MKS-DET работает как положено. Подключаем модуль к дисплею (B0, 3v3, GND), конфигурируем. Далее соблюдаем все возможные и невозможные правила электробезопасности. Я настоятельно не рекомендую эксплуатировать MKS-DET без корпуса, так как там вполне ощутимые 220 вольт по нему гуляют. Не надо делать так, как у меня на видео - это тестовый стенд, который нужно постоянно держать под наблюдением и не совать в него выступающие части тела.

Вот как это работает на SMini.

https://youtu.be/aHXnTO2C2IQ



В целом, конструкция такая: MKS-DET включается в розетку до ИБП. Принтер - соответственно, после. Когда пропадает сетевое напряжение, MKS TFT отводит на 10 мм по Z сопло и останавливается. Орет еще при этом мерзко. Через сколько-то минут ИБП гаснет, и все погружается во тьму. Затем питание (надеюсь) возвращается, и вся эта конструкция включается в режиме паузы. Остается нажать на кнопку Resume, все прогревается, Z возвращается на место и продолжается печать. На SMini это именно так и работает.
А вот с 'марлином' засада. Z не возвращается, и печать продолжается по воздуху.

Вот как это не работает с 'марлином'.

https://youtu.be/sfmmh0NKXuc



А вот так оно работает с 'репетиром'.

https://youtu.be/uyn9CDCiT9Q



Ладно, осталось попробовать Repetier-firmware. Там интересно. Восстановление отрабатывается как надо, но отображаемая высота по Z уходит в минус на те самые 10 мм. К сожалению, нет возможности прогнать эксперимент на реальном принтере, но наблюдение за процессом на тестовом стенде показывает, что реально этой ошибки в позиционировании нет.

Хорошо. Займемся подслушиванием. Для этого используем USB UART, его RX надо подцепить к RX платы, чтобы понять, что MKS TFT шлет при паузе и восстановлении. Цеплялся я маленьким зажимом от логического анализатора к резистору R5, который идет на RX 'меги'. Это такой типа сниффер последовательного порта будет, если в кульхацкерской терминологии.

При срабатывании датчика сетевого напряжения MKS TFT выдает принтеру следующее:



G91 (переход к относительным координатам)

G1 E-1 (ретракт)

G1 Z10 (подъем Z на 10)

G90 (возвращение к абсолютным координатам)

M114 (получение текущих координат)


Ничего странного или нелогичного! Максимально универсальный G-код. При конфигурации MKS TFT для Marlin или Repetier он одинаков.

А вот что происходит при восстановлении:



M104 S00 (нагрев сопла, на 0 внимание не обращайте, у меня нагреватели отключены)

M109 S00 (нагрев стола)

G92 X53.84 Y86.89 Z10.4 E265.2599 (загрузка сохраненных координат)

G91 (переход к относительным координатам)

G1 Z-10 (опускание Z на 10)

G1 E1.0 (компенсация ретракта, сделанного при остановке)

G90 (переход к абсолютным координатам)


Тоже все абсолютно логично. И где засада? Сейчас, сейчас. Все будет. Теперь воспроизводим эту последовательность действий, только уже из Pronterface. Для платы, прошитой Repetier, все четко. За исключением кривого отображения Z на дисплее. По M114 выдаются правильные координаты, что характерно. А вот в случае прошивки Marlin мы спотыкаемся на G1 Z-10. Эта команда не выполняется, хотя по M114 и по дисплею у нас Z 10.4. Если ручками дать G1 Z10 (получится Z 20.4), а потом G1 Z-10 - работает, опускается до 10.4. Но не дальше!

И вот тут рождается гипотеза. Marlin в каком-то месте думает, что у него Z в нуле. И не хочет ехать в минус! А где это искать? Мысль была только одна - программные концевики. По умолчанию стоит #define min_software_endstops true, этот параметр прокомментирован как раз словами 'если включено, то принтер не поедет дальше домашней позициии'. Ставлю #define min_software_endstops false, прошиваю, испытываю. Вуаля, работает как надо.

Теперь оно работает с 'марлином'.

https://youtu.be/ct7IrdYG81o

Остается только подумать вот о чем. Если программные концевики отключены, это ведь позволит вручную загнать голову туда, где ей быть не надо, и что-нибудь отломить?
P.S. И еще немного реверс-инжиниринга для тех, кто не хочет платить за три с половиной детальки почти тысячу рублей. Простая как табуретка схема MKS-DET. Тут в Eagle.
MKS TFT28 (3) + MKS-DET: ловля марлина на сниффер

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

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

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

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