Меню

Датчик окончания филамента ender 3

Датчик филамента на ender3 через 27pin

Статья относится к принтерам:

Всем доброго времени суток, уважаемые!

Собственно сабж — имеет ender3pro, простейший нормально-замкнутый концевик.

Концевик используется как датчик филамента по логике — замкнут => есть филламент.

В прошивке активирована продвинутая пауза, активирован датчик филамента. Распиновка указана верно. Динамик, соотвественно, выключен. Логика концевика инвертирована в соотвествии с нормально-замкнутым концевиком.

По команде м119 принтер адекватно считывает концевики, в том числе филамента. При замкнутом концевике тригер, при разомкнутом — опен.

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

Эксперимент раз — инвертировать логику концевика про принципу разомкнуто => есть филамент. В таком случае он должен при отсутствии филамента (размыкании концевика) думать что все ок и печатать, однако он просит филамент. И при замыкании тоже самое (что по сути идолжно быть). При такой логике работы через m119 так же корректно считывает положение датчика.

Проводка датчика пропаяна, все контакты в порядке. Доступ к 27 пину реализован через платку расширения (вставляется между платой и шлейфом экрана). Концевик подключен к signal и gnd.

Прошу помощи куда копать в этом случае.

Все сделано согласно видеоинструкции по еднеру(ближе к концу). Памяти с запасом хватает.

В прошивке активированы дополнительные плюшки типа k-factor и thermal_protection. Arc включен(отличие от видео, однако это вообще не та степь так то).

Надеюсь кто-то сталкивался с подобным и подскажет что не так с моими руками.

Опят программирование arduino имею, в этом плане не совсе дуб)

Источник

Датчики окончания филамента в прошивке.

У меня стоит два датчика окончания филамента.

Что не так у меня прописано в прошивке?

#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.

#define NUM_RUNOUT_SENSORS 2 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.

#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.

#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.

#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.

#define WATCH_ALL_RUNOUT_SENSORS // Execute runout script on any triggering sensor, not only for the active extruder.

// This is automatically enabled for MIXING_EXTRUDERs.

// Override individually if the runout sensors vary

#define FIL_RUNOUT1_STATE LOW

#define FIL_RUNOUT_PIN P1_28

#define FIL_RUNOUT1_PIN P1_27

In file included from Marlin\src\HAL\LPC1768\../../inc/../pins/pins.h:788,

Marlin\src\HAL\LPC1768\../../inc/../pins/pins_postprocess.h:480: warning: «FIL_RUNOUT1_PIN» redefined

480 | #define FIL_RUNOUT1_PIN FIL_RUNOUT_PIN

In file included from Marlin\src\HAL\LPC1768\../../inc/../pins/pins.h:383,

Marlin\src\HAL\LPC1768\../../inc/../pins/lpc1768/pins_BTT_SKR_V1_3.h:98: note: this is the location of the previous definition

98 | #define FIL_RUNOUT1_PIN P1_27

In file included from Marlin\src\HAL\LPC1768\../../inc/MarlinConfig.h:49,

Marlin\src\HAL\LPC1768\../../inc/SanityCheck.h:682:4: error: #error «Enable only one of FIL_RUNOUT_PULLUP or FIL_RUNOUT_PULLDOWN.»

682 | #error «Enable only one of FIL_RUNOUT_PULLUP or FIL_RUNOUT_PULLDOWN.»

Marlin\src\HAL\LPC1768\../../inc/SanityCheck.h:854:6: error: #error «You can’t enable FIL_RUNOUT1_PULLUP and FIL_RUNOUT1_PULLDOWN at the same time.»

854 | #error «You can’t enable FIL_RUNOUT1_PULLUP and FIL_RUNOUT1_PULLDOWN at the same time.»

Источник

Обзор PAT9125 оптического датчика филамента для 3d печати

Добрый день друзья. Сегодня я хотел бы рассказать вам про датчик филамента PAT9125, а также про мой опыт общения с ним.

PAT9125 это оптический датчик который применяется на 3d принтерах Prusa. Этот датчик может отслеживать не только момент окончания филамента но и момент его застревания. Например если у вас возникла тепловая пробка.

Главная проблема датчика, его нельзя подключить напрямую к плате с Marlin. Поскольку Marlin поддерживает только подключение энкодера, а этот датчик должен быть подключен по интерфейсу I2C. Чтобы разрешить эту проблему я использовал attiny85 digispark. Датчик подключается к Attiny а уже Attiny в свою очередь эмулирует работу энкодера.

Настройка Marlin

В файле Configuration.h нужно раскомментировать параметр #define FILAMENT_RUNOUT_SENSOR . А вот параметр #define FIL_RUNOUT_PULLUP лучше закомментировать поскольку у нас ненастоящий енкодер то подтяжка attiny к линии питания будет только мешать работе.

Читайте также:  Как проверить датчик фаз газель 405 евро 3

Кроме того нужно раскомментировать параметр #define FILAMENT_RUNOUT_DISTANCE_MM это скажет Marlin что у нас не концевой выключатель, а энкодер. Значение параметра надо уменьшить по умолчанию там стоит 25мм. Чтоб вы понимали сколько это, принтер успеет уложить два слоя калибровочного куба воздухом прежде чем заметит что что-то не так. Я поставил там 5мм можно и меньше но тогда можно столкнутся с ложными срабатываниями.

В файле Configuration_adv.h нужно раскомментировать #define ADVANCED_PAUSE_FEATURE

В файле Pinout вашей платы надо задать пин к которому будет подключен датчик в параметре #define FIL_RUNOUT_PIN.

Особенности работы датчика

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

Следующая особенность касалась уже Attiny. Сначала я подключил принтер к пину P3 и Attiny просто не стала запускаться. То есть без подключения к принтеру все прекрасно работает, а стоит подключить Attiny не стартует. После этого я подключил принтер к пину P5, Attiny загрузилась но порт просто не работал на нем всегда был высокий потенциал, возможно у меня оказалась бракованная Attiny. Все заработало только когда я подключил принтер к пину P1, пин на котором располагается диод.

Также я хочу отметить что датчик отслеживает отдельно движение по оси X и по оси Y. В моем случае используется ось X, но если вы захотите расположить датчик по другому. Например расположить его перпендикулярно движению филамента, то надо в прошивке Attiny заменить ось X на Y.

Источник

Датчик окончания филамента + Octoprint

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

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

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

Статья относится к принтерам:

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

А в принципе тут говорить особо нечего. Но вам понадобиться Raspberry Pi (или Orange или что нибудь еще совместимое и умеющее работать с GPIO) с установленным Octoprint. Так же нужно будет установить плагин Filament Sensor.

Датчик простой как две копейки:

Даже модель выкладывать не буду, т.к. простая как две копейки (я даже ее не сохранял вроде). Микрик у меня остался после перехода на автоуровень. Попробовал так же оптический датчик — не понравилось — не все пластики берет, срабатывание не очень надежное, вернее может сработать ложно, слегка прозрачный PETG вообще не берет.

Теперь подключение. Подключать будем к Raspberry Pi 3.

sudo chmod a+rw /dev/gpiomem

Далее в скриптах Octoprint прописал для паузы следующее:

Для продолжения после паузы:

И вроде как все должно было заработать. Но не тут то было. Пауза не срабатывала, полез отслеживать логи Octoprint:

tail -f /root/.octoprint/logs/octoprint.log

Вижу там вот такую ошибку:

RuntimeError: Failed to add edge detection

Ошибка уже разобрана здесь: https://github.com/MoonshineSG/Octoprint-Filament/issues/8. Единственное лекарство — скачать последний чистый дистрибутив Raspabian, все обновить и поставить Octoprint из исходников. Дело в том, что GPIO в некоторых установках работает криво и мне так же повезло. Там же говорят, что ошибка присутствует в готовой сборке Octoprint.

Не хотелось конечно переустанавливать все, целый день бился с проблемой, даже хотел свою любимую Fedora поставить, но там GPIO вообще пока не работает. В итоге забил, поставил все заново. И о чудо, все заработало.

Читайте также:  Датчики активного сопротивления принцип действия

За сим все, система работает, ставит на паузу, хлопот не доставляет.

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

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

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

Источник

датчик окончания филамента skr pro v 1.1 tmc 2209

Статья относится к принтерам:

Люди добрые прошу помощи в глупом вопросе. Не срабатывает датчик окончания филамента. Плата skr pro v 1.1 драйвера tmc 2209. marlin 2.0 CONFIGURATION_H_VERSION 02000. опережая будущие простейшие камни.

1. Ногу на драйвере выпаял

2. В марлин 2.0 все прописал и пины тоже ( аналог https://www.makenprint.uk/3d-printing/3d-printing-guides/skr-v1-3-filament-runout-sensor/) Все сдела как в данной инструкции. хотя таких инструкций миллион. не чего не работает

3. по команде м119 filament видет и правильно срабатывает. нет нити trigger есть нить open (хотя если инвертировать не чего не помогает). датчик обычный кнопочный pullup и down тоже и коментировал и за коментировал и раскоментировал (вообщем делал все) но не помогает.

#define FIL_RUNOUT_PIN PE15

#define FIL_RUNOUT2_PIN PE10

#define FIL_RUNOUT3_PIN PG5

#define FIL_RUNOUT_ENABLED_DEFAULT false //true // Enable the sensor on startup. Override with M412 followed by M500.

#define NUM_RUNOUT_SENSORS 3 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.

#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.

#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.

//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.

// Set one or more commands to execute on filament runout.

// (After ‘M412 H’ Marlin will ask the host to handle the process.)

#define FILAMENT_RUNOUT_SCRIPT «M600»

// After a runout is detected, continue printing this length of filament

// before executing the runout script. Useful for a sensor at the end of

// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.

//#define FILAMENT_RUNOUT_DISTANCE_MM 7

Что за глюк. я не понимаю. наличие и отсутствие нити не влияет на печать . как печатало так и продолжает печатать

Источник

Датчик остановки/окончания филамента из “мыши”

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

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

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

Читая тему “И снова про датчик окончания филамента” и думая как можно её решить, я обратил внимание на “поведение” мыши – она то ярко светилась при движении, то тускло если её не трогать. Т.е. срабатывал переход в режим ожидания. Сразу возникли идеи и вопросы: будет ли сенсор мыши реагировать на филамент и можно будет отследить разницу в свечении. Опыт показал, мышь реагировала на движения филамента и засыпала при его остановке. Разобрав мышь, на светодиоде удалось измерить напряжение — 2.5В в активном состоянии и 1.7 в ожидании. Ура, датчику – БЫТЬ!

Но дальнейшая исследование показало, что без компьютера мышь не “загоралась”. Это удалось решить высоким уровнем на контакте D+. Но как оказалось, каждый раз режим перехода в ожидание и нахождение в нём был очень разный по времени и никак не удавалось разработать работающий алгоритм.

Поиск способа получения данных от мыши, привёл к нескольким ссылкам, где демонстрировалось получение координат перемещения мыши платой Arduino, но нужен был ‘грызун’ поддерживающий протокол обмена PS/2. Т.е. можно использовать для датчика не фантомное мигание, а реальное перемещение. Только теперь двигается уже не мышь, а филамент мимо сенсора. К сожалению мыши стандарта PS/2 поблизости не оказалось, но “интернет” подсказал, что обычно их делают универсальными 2-х стандартными PS/2 – USB. Мой подопытный образец A4TECH Model:X5-60MD хоть и имел разъем USB, но встречалось упоминание о продаже такой модели в двух видах. Я решил попробовать, и попытка оказалось успешной.

Читайте также:  Как работает датчик усталости водителя в тигуане

Теперь когда выяснилось, что моя мышь поддерживает протокол обмена PS/2. Из нескольких разных программ и библиотек работы с PS/2, мне удалось найти работающую с имеющейся в наличии контроллером: Deek-Robor Pro Micro на ATmega32u4, определяется как Arduino Leonardo. Мышь извлечена из корпуса и прикручена к распечатанной “направляющей”. Филамент свободно проходит в 2мм отверстие по центру сенсора на уровне “стола” т.е. 2,5 мм от сенсора.

В качестве алгоритма работы был реализован следующий порядок действий: если не было движения, т.е. считываются нулевые перемещения за последние 3 секунды и установлен высокий уровень на входе управления (G-code: M42 P4 S255), то подаётся высокий уровень на выход – ‘звуковой сигнал’. Прототип работает с светодиодом, в дальнейшем в место светодиода, будет использоваться, выпаянная из модуля дисплея “пищалка”.

Т.е. если прозвучал звуковой сигнал, то желательно оперативно подойти к принтеру и возможно удастся исправить аварийную ситуацию, например: подтолкнуть пластик при образовании “проточки” или вставить новый при его окончании и т.п.

Саму схему распайки не привожу т.к. для реализации данной логики подойдёт практически любой Arduino-совместимый контроллер любой формы и размера, со своими номерами контактов. Для работы необходимо 3 цифровых выхода и 1 вход.

#define MDATA 6 – к контакту DATA PS/2 мыши.

#define MCLK 5 – к контакту CLK PS/2 мыши.

#define ledgnd 8 – можно не считать, лень было землю для светодиода тянуть.

#define led 7 – к контакту на индикацию/звук.

#define pinIn 9– вход признака необходимости сигнализации, к контакту D4 (и т.п.) SERVOS RAMPS 1.4.

Размер задержки (3 сек.) регулируется размером матрицы запоминаемых значений, через константу myzSize, сейчас проверка идёт 5 раз в сек (задержка в конце цикла 200 мсек.) и при 15 значениях будет

3 сек. Для установки признака необходимости сигнализации, при остановке филамента, можно использовать любой pin Dx (D4,D5 …) на разъемах SERVOS, AUX-1 и AUX-2 на плате RAMPS 1.4. Ими можно управлять командами типа M42 P4 S255 и M42 P4 S0 и т.п. Которые вводятся из командной строки pronterface и т.п. программ или можно автоматически вставлять в G-code в момент его создания, например вкладка Custom G-code в Slic3R. Питание контроллера и мыши также можно организовать с контактов SERVOS RAMPS 1.4.

Площадка для крепления платы мыши и направляющая для филамента.

Вывод. Поставленная цель – сделать недорогой, но надёжный датчик остановки/окончания филамента из простой мыши, вполне осуществима.

И, конечно, буду рад ответить на ваши вопросы, если таковые будут.

Тест программы. Взято на arduino.cc и творчески дополнено.

* an arduino sketch to interface with a ps/2 mouse.

* CLK(white) DATA(red) GND(green) 5V(blue)

* Also uses serial protocol to talk back to the host

* USB-PS/2 — Pin 5 is the mouse D+ pin, pin 6 is the D- pin

* according to some code I saw, these functions will

* correctly set the mouse clock and data pins for

void mouse_write(char data)

/* wait for mouse to take control of clock); */

while (digitalRead(MCLK) == HIGH)

/* clock is low, and we are clear to send data */

while (digitalRead(MCLK) == LOW)

while (digitalRead(MCLK) == HIGH)

while (digitalRead(MCLK) == HIGH)

/* wait for mouse to switch modes */

while ((digitalRead(MCLK) == LOW) || (digitalRead(MDATA) == LOW))

/* put a hold on the incoming data. */

* Get a byte of data from the mouse

// Serial.print(‘reading byte from mouse

while (digitalRead(MCLK) == HIGH)

delayMicroseconds(5); /* not sure why */

while (digitalRead(MCLK) == LOW) /* eat start bit */

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

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

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

Источник

Adblock
detector