Металл2024 Реклама
Метобр2024 Реклама

Датчик контроля филамента для Tevo Tarantula Pro на основе оптической мыши

I.Petrov
Идет загрузка
Загрузка
15.04.2020
4623
15
Техничка

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

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

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

4

Датчик контроля филамента для Tevo Tarantula Pro на основе оптической мышиМногие так или иначе обращались к теме контроля движения филамента (см. в конце статьи). Имеющиеся решения по выполняемым функциям можно разделить на:

  •  -  обеспечивающие контроль окончания (обрыва) - выполняются на основе микровыключателя или оптопары. Такое решение поддерживается в Marlin 1.1.9, а может, и более ранних;
  •  - обеспечивающие контроль движения - выполняются на основе энкодера, как один из вариантов - оптопары и диска с прорезями, - реагируют на окончание (обрыв) или другое _прекращение_ движения филамента. Прямая пооддержка энкодера встроена в Marlin 2.0. Имеются и решения в виде отдельных устройств,

 например:

    - https://www.thingiverse.com/thing:3071723

    - https://www.thingiverse.com/thing:3926841

 На этом же принципе выполняются и счетчики метража, например:

      https://3dtoday.ru/blogs/dagov/counter-filament-from-an-old-mouse

К сожалению, у меня не было возможности проверить работу Marlin 2.0 с "умным" датчиком (например ТАКИМ) - заказывать долго и не очень дешево, тем более когда нет уверенности в том, что он работает так, как мне нужно, т.е. умеет реагировать не только на прекращение, но и на замедление движения при частичном засорении сопла, когда экструзия полностью не прекращается, а лишь уменьшается - был у меня такой случай... 

 Поэтому решил подключать датчик не напрямую к принтеру с Марлином 2.0, а, оставив Марлин 1.1.9, реализовать нужную логику работы на отдельной Ардуине.

 Дальше будет много буквов, поэтому, кому интересно, можно читать первый раз "по заголовкам"

1.  Выбор типа датчика.

Вначале мне подумалось (об этом позже), что датчик на основе оптики будет точнее, т.к. с разрешением оптической мыши тяжело тягаться прорезям на диске, а если использовать механическую повышающую передачу - повышается вероятность проскальзывания, особенно при ретрактах - поэтому датчик решил использовать от оптической мышки. Мышек на выбор было несколько с разными датчиками, поэтому решил изучить характеристики и выбрать осознанно. Для определения требований смотрим на файл Configuration.h:

#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 10000 }

- т.е. для экструдера 10 м/с2 == 1,02g

#define DEFAULT_MAX_FEEDRATE          { 400, 400, 50, 45 }

- т.е. для экструдера 45 мм/с == 1,77 ips

  Данные для некоторых датчиков:

ДатчикADNS-261012085120865020PAW3101D
Ускорение (g)0.25???8220
Ускорение (мм/с2)2450???7840019600196000
Скорость    (ips)1212301421
Скорость    (мм/с)304304762355533
Разрешение(cpi)400400от 150 до 1350500/1000400/800
Разрешение(т/мм)15,715,7от 6 до 5319/3915,7/31

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

  Учитывая, что под изменение координат отводится 1 байт (+-127), можем посчитать необходимую частоту опроса датчика в зависимости от разрешения (при максимальной скорости экструдера):

Путь за 1 секунду (мм)45454545
Разрешение (cpi)2004008001000
Разрешение (точек/мм)7,815,73139
Точек за секунду35170214041755
Опросов за секунду2,85,611,113,8

Т.е. вполне достаточно опрашивать датчик с частотой всего 20 Гц.

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

Да и деталей выпаивать из платы мышки меньше, можно вообще все оставить на месте (хоть я и выпаял микрики и энкодер колеса).

2. Принцип контроля

Не придумал ничего лучше, чем сравнивать количество филамента, которое считает прошедшим через экструдер ПО принтера, и количество филамента, которое посчитает прошедшим через него датчик (сенсор). Если через датчик прошло меньше, чем должно было - это повод объявлять тревогу.

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

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

DEFAULT_AXIS_STEPS_PER_UNIT   { 80.058, 80.058, 399.2901, 408 } файла Configuration.h

- в нашем случае 408.

  Для подсчета "реального" количества по сигналу таймера опрашивается датчик в "мышке".

3. Конструкция датчика

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

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

 Видео процесса калибровки и последующего испытания датчика (заранее прошу прощения за качество):   

Желающие могут скачать Модели деталей датчика

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

  - https://www.thingiverse.com/thing:3071723

  - https://www.thingiverse.com/thing:3926841

  - https://3dtoday.ru/blogs/dagov/counter-filament-from-an-old-mouse

  - https://3dtoday.ru/blogs/kick-2/sensor-the-stopend-of-the-filament-from-the-mouse/

  - https://sites.google.com/site/tunelldev/home/filamentmonitor#TOC-3D-Printer-Filament-Monitor

  - https://3dtoday.ru/blogs/evgen2/test-sensor-filament-

  - https://3dtoday.ru/blogs/levscha/kontroller-podachi-filamenta-na-osnove-gmr-datchika-ugla

  - https://habr.com/ru/post/128972/  - https://3dtoday.ru/questions/i-snova-pro-datchik-okonchaniya-filamenta

  - http://3dtoday.ru/questions/alarm-stop-feeding-filament/

  - https://3dtoday.ru/blogs/elementus/sobiraem-datchik-dvizheniya-plastika-dlya-3d-printera-iz-ekstrudera/

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

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

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

4
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама