Перейти до публікації

Рекомендовані повідомлення

Давным давно, еще когда телефоны были кнопочными а 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

Посилання на повідомлення
Поділитися на інших сайтах

Сейчас пробую несколько иной вид датчика, хочу отказатся от подшипников в пользу осей. я применил ролики от подшипника 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 мм. Модель можно переделать под то что есть в доступности вместо ролика.

Посилання на повідомлення
Поділитися на інших сайтах
  • 3 місяці потому...

Всім привіт, знву з питаннями, дещо пробую на тв бокс і з датчиком неможу розібратись знову 

 

Internal error during connect: 'module' object has no attribute 'RunoutHelper'
 
це черкз якесь оновлення?
Посилання на повідомлення
Поділитися на інших сайтах

@Maks здається це схоже на перевезення

бетону літаком АН2

:classic_biggrin:

Щось зібралось не правильно, може десь кому, або крапку пропустив у параметрах?! 

 

Посилання на повідомлення
Поділитися на інших сайтах

та думаю я просто в цьому не тямлю, і неможу знайти як правильно прописати в конфіг...

хоча вже і запоров бокс ,перевстановлюю

Посилання на повідомлення
Поділитися на інших сайтах

@Maks як писав Денис, для цього датчика потрібно використовувати два аналогових піни., якщо це кліппер, або з'єднання за допомогою ардуіно нано. 

Може трохи придушити жабу і налаштувати малину зеро(мінімум) та отримати результат? 

Посилання на повідомлення
Поділитися на інших сайтах

Та на малині в мене він працює, але до оновлення конфіга,  (зараз попросив один протестити тему) і щоб не накосячити дістав тв-бокс і на ньому оновив конфіг звідси почалося... 

 

Тестував оце 

IMG_20200606_002341_508.jpg

Посилання на повідомлення
Поділитися на інших сайтах

@Maks можно зробити імідж сд карти і потім не перейматися, що щось піде не так. Накатив імідж і знову робоча малина з кліппером і плюшками. 🙂

Тема цікава! А от є доповнення до теми, можеш йому підказати. Зараз докладніше поясню.

Коли виставляеш оффсет_з у кліппері, требі вводити команди у терміналі, але можно спростити собі роботу і написати свої кнопки з кодами у плагіні кастом сонтрол. Одне погано - всі твої кнопки знаходяться у меню контрол. Так от до чого я, Як би перемістити, або опціонально зробити кастомні команди у меню терміналу. :classic_biggrin:

Посилання на повідомлення
Поділитися на інших сайтах

Сьогодні так і зроблю, куплю дві  СД (бо в одній малині стара...) для терміналу є окремий плагін... (так зараз на малині), для бокса маю одну сд і з неї відновлюю (але там трохи застаріла..)

Screenshot_20200606-123414_Chrome.jpg

Посилання на повідомлення
Поділитися на інших сайтах
  • 1 рік потому...
On 6/6/2020 at 1:36 PM, Maks said:

Сьогодні так і зроблю, куплю дві  СД (бо в одній малині стара...) для терміналу є окремий плагін... (так зараз на малині), для бокса маю одну сд і з неї відновлюю (але там трохи застаріла..)

Screenshot_20200606-123414_Chrome.jpg

А можете поділитись конфігом на кнопки Babystep Up Down, а то щось в мене не працює через термінал підчас друку. 

Посилання на повідомлення
Поділитися на інших сайтах
1 годину тому, StasYan сказав:

щось в мене не працює через термінал підчас друку. 

 

Тільки значення підстав на свій смак. Працює тільки на klipper!!

 

SET_GCODE_OFFSET Z_ADJUST=-0.1 MOVE=1

 

Посилання на повідомлення
Поділитися на інших сайтах

Приєднуйтесь до обговорення

Ви можете опублікувати повідомлення зараз, а зареєструватися пізніше. Якщо у вас є акаунт, увійдіть в нього для написання від свого імені.

Гість
Відповісти в тему...

×   Вставлено в вигляді відформатованого тексту.   Вставити у вигляді звичайного тексту

  Дозволено не більше 75 емодзі.

×   Ваше посилання було автоматично вбудоване.   Відобразити як посилання

×   Ваш попередній контент був відновлений.   Очистити редактор

×   Ви не можете вставити зображення безпосередньо. Завантажте або вставте зображення за посиланням.

×
×
  • Створити...