Jump to content

Українська 3D спільнота

Створено телеграм канали. Підписавшись на них ви будете отримувати повідомлення про появу нових тем на форумі. Також там Ви знайдете посилання на канал допомоги для вирішення термінових питань по друку та принтерам.
3DUA_Help 3DUA.info
Важливо!
  • 3Dua.info проти Covid19. Об'єднуємось! телеграм канал @ukraine_3dua_info

Recommended Posts

Давным давно, еще когда телефоны были кнопочными а 3д принтеры фанерными я поставил на принтер датчик диаметра филамента. Оптический, датчик был огромный по размерам, ставил на прошивку марлин, но он работал и я был рад.

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

И пока я не перешел на прошивку Клиппер он у меня работал. После перехода на Клиппер я подключил модуль tsl1401cl_filament_width_sensor и продолжил работать. Но в голове снова завелась МЫСЛЬ. Она мешала спать и пришлось ее думать. На самом деле у клиппера есть достаточно много свободных ресурсов а у платы есть неиспольсованные аналоговые входы, почему бы не отказатся от лишней платы Ардуино и что еще более важно дополнительного преобразования цифрового сигнала в аналоговый и обратного преобразования из аналога в цифру, как ни крути это потеря точности. Потому к клипперу был написан свой модуль для этого датчика. Будет ли он на гитхабе в релизе - не знаю, постараюсь сделать толковое описание и возможно тогда он там будет.

 

итак, что надо для того чтобы запустить датчик на клиппере

Предполагается что клиппер уже стоит и в октопринте есть плагин для клиппера

 скопировать модуль hall_filament_width_sensor.py отвечающий за работу с датчиком на малину/апельсину в папку ~/klipper/klippy/extras

 

пока он не добавлен в основной репозиторий  сделать это можно так

 

cd ~/klipper
git pull "https://github.com/test3210-d/klipper"

 

Все уже добавлено в основной репозиторий клиппер

 

далее перезагрузить клиппер

sudo service klipper restart

теперь можно идти в октопринт, открываем конфиг и добавлям параметры для работы с датчиком

[hall_filament_width_sensor]
adc1: analog11 #adc channel 1 
adc2: analog12 #adc channel 2
Cal_dia1: 1.48 #REFERENCE DIAMETER 1 (mm)
Cal_dia2: 1.97 #REFERENCE DIAMETER 2 (mm)
Raw_dia1:9630  #RAW VALUE FOR REFERENCE DIAMETER 1
Raw_dia2:8300  #RAW VALUE FOR REFERENCE DIAMETER 2
default_nominal_filament_diameter: 1.75 # This parameter is in millimeters (mm)
max_difference: 0.15 # mm
measurement_delay: 70 #mm

В данном конфиге ориентация на ардуино плату и aux2 разъем, у него как раз и питание есть и 2 канала АЦП. Так-же можно использовать и aux1 тогда в конфиге будут

adc1: analog3 #adc channel 1 
adc2: analog4 #adc channel 2

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

Сразу обращаю внимание, на платах с питанием 3.3 вольта датчик запитывается от 3.3 а на 5вольтовых от 5 вольт

 

следующий шаг в конциге надо добавить в меню возможность смотреть диаметр филамента (если у вас нет дисплея то смело пропускаем эту секцию

итак добавляем


[menu __filament_width_current]
type: item
name: "Dia:{0:4.2f} mm"
parameter:  hall_filament_width_sensor.Diameter


[menu __filament_raw_width_current]
type: item
name: "RAW:{0:4.0f}"
parameter:  hall_filament_width_sensor.Raw


[menu __filament]
type: list
name: Filament
items:
    __temp __hotend0_current, __temp __hotend0_target
    .__unload
    .__load
    .__feed
    __filament_width_current
    __filament_raw_width_current

данные секции для дефолтного меню , в меню филамент появится строка с диаметром и цифровым значением датчика для директа   подпункты     .__unload .__load .__feed можно убрать, по крайней мере если они вам не нужны

 

Далее , нам надо 2 сверла (или любых прутка с известным диаметром)  у меня это были прутки 1.48 и 1.97 мм. Диаметры желательно 1.5 и 2 мм для прутка 1.75. Если филамент 3 мм то желательно 2.8 и 3.2 мм, с тем рассчетом чтобы номинальное значене было в середине.  Прописываем ваши значения в конфиг

Cal_dia1: 1.48 #REFERENCE DIAMETER 1 (mm)
Cal_dia2: 1.97 #REFERENCE DIAMETER 2 (mm)

 

Предварительно готово, сохраняем конфиг

если есть дисплей идем в меню, вставляем калибровочный стержень 1 и засекаем raw значение при установленном стержне.

повторяем для второго калибровочного стержня , в результате имеем два диаметра и 2 значения датчика для этих диаметров у меня это 9630 для 1.48 и 8300 для 1.97 записываем в конфиг.

Raw_dia1:9630  #RAW VALUE FOR REFERENCE DIAMETER 1
Raw_dia2:8300  #RAW VALUE FOR REFERENCE DIAMETER 2

Если все сделано верно то после этого при установленном стержне в меню будет отображать правильный диаметр

Если дисплея нет, есть команда

QUERY_RAW_FILAMENT_WIDTH

она позволяет получить значения с каналов АЦП и значение датчика

так-же поддерживаются все команды от  tsl1401cl_filament_width_sensor описанные в документации клиппера

для совместимости G-кода с марлином можно добавить в конфиг

[gcode_macro M405]
gcode: ENABLE_FILAMENT_WIDTH_SENSOR 

[gcode_macro M406]
gcode: DISABLE_FILAMENT_WIDTH_SENSOR 

[gcode_macro M407]
gcode: QUERY_FILAMENT_WIDTH 

Либо использовать штатные команды клиппера.

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

hall_filament_width_sensor.zip

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Отличная работа. Спасибо!

Share this post


Link to post
Share on other sites

Сейчас пробую несколько иной вид датчика, хочу отказатся от подшипников в пользу осей. я применил ролики от подшипника 4х8 (примерно такие https://podhibnikdnepr.ua.market/product/5443512-rolik-tsilindricheskiy-4h8.html ) мм соберу  протестирую и отпишусь. В теории если получится то еще немного поднимется точность - минус биения подшипников. А вот как тянутся через датчик  будет посмотрю

 


fil_sensor.zip

слой 02 без доролнительных поддержек, хватит тех что есть в модели. Надо винт м3 15-16 мм гайка м3 два датчика холла ss49e магнит ниодимовый диаметр 5 толщина 2 мм, пружинка от авторучки

датчик ss49e - 2 шт https://aliexpress.ru/wholesale?SearchText=ss49e или купить по месту

ролики или куски сверла 4 мм. Модель можно переделать под то что есть в доступности вместо ролика.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×