Filament runout senzor - výběr a instalace



Filament runout sensor monitoruje přítomnost, a některé typy dokonce pohyb či zaseknutí, filamentu. Jedná se o užitečnou věc, pokud tiskneme v naší nepřítomnosti. Můžeme si jej vyrobit sami, nebo koupit hotové různě chytré senzory. Při detekci koncel filamentu či jeho zaseknutí (dle typu) vyšle sensor signál, který můžeme zpracovávat buď přímo tiskárnou nebo Octoprintem. Záleží kam sensor připojíme.

Pojďme se podívat na některé typy, a co se s nimi dá detekovat:

Pokus si chceme hrát a vyzkoušet různé typy z Thingiverse, či si vymodelovat svůj model runout sensoru, stačí nám k tomu nakoupit tyto mikrospínače s kolečkem na konci. Zábavy si užijeme dostatek a můžeme blbnout prakticky do nekonečna. Při použití pouhého spínače budete potřebovat zapnout na daném pinu procesoru PullUp (pokud jej podporuje), nebo použít nějaký cca 10k rezistor trvale připojený na +5V a signálem do desky, aby bylo procesoru jasné, zda má při nesepnutém spínači očekávat logickou 1 nebo 0.

Trochu sofistikovanější je optické čidlo. To sice může mít problém detekovat konec filamentu u průsvitnějších materiálů, ale v tomto případě se dá čidlo vypnout např. v menu tiskárny. Jedná se o zcela minoritní až výjímečný problém.

Spolehlivější řešení je použití optického čidla s mechanickou závorou. Zde nedochází k detekci filamentu přímo, ale vložený filament, např. skrze kuličku, vsune mechanicky předem připravenou závoru, která je poté detekována čidlem. Takto to má třeba Průša na MK3.

Zde už přichází na řadu první hotový výrobek. Pro tento stačí vytisknout nějaký držák a zapojit správně tři dráty. Má v sobě i nějaké to zrní v podobě světelných diod a odporů pro PullUp/Down, takže bude fungovat vždy a téměř se vším.
Zajímavý kousek vyrábí také Bigtreetech. Jedná se o detektor jak konce filamentu tak jeho zaseknutí. Například v případě špatně namotané či podvlěčené cívky, přicpané trysce, či jiném problému s průchodem filamentu, může být užitečný více než velmi.

Zpojení spočívá v zapojení 2 nebo 3 drátů do některého z konektorů pro Endstop. Typicky původně určený pro druhý pravý endstop X+. Signál tvoří logická 0 (spíná se zem), takže neuškodí zapnout PullUp rezistor v Marlinovi. V prvním případě (spínač) nám stačí zapojit pouze dráty 2, v posledním (Bigtreetech Smart sensot) se upravuje Marlin na senzor pohybu filamentu. Jinak je konfigurace velmi podobná. Montáž je otázka možností a vkusu. V jednodušší situaci jsou majitelé bowdenových řešení, kdy se filament umísťuje daleko lépe.

Filament runout senzor umisťujeme vždy PŘED extruder. Za extruderem by již konec filamentu neměl šanci detekovat - neměl by už kdo tlačit :)

Konfigurace pinu sensoru

Nejprve si v konfiguraci Marlinu nadefinujeme, kde má signál ze senzoru očekávat.

BTT SKR 1.3

soubor pins_BTT_SKR_V1_3.h

// Filament Runout Sensor
//
#ifndef FIL_RUNOUT_PIN #define FIL_RUNOUT_PIN P1_28 #endif


BTT SKR mini E3

U této desky si musíme vypomoci, u sensorů které to vyžadují, přivedením +5V odněkud ze základní desky.

soubor pins_BTT_SKR_MINI_E3.h

// Filament Runout Sensor
//
#ifndef FIL_RUNOUT_PIN
  #define FIL_RUNOUT_PIN   PC15   // "E0-STOP"
#endif

Základní nastavení Marlina

Soubor Configuration.h

#define DEBUG_LEVELING_FEATURE // - Povolí nám příkazy na monitoring stavu senzorů z gcode.

Soubor Configuration_adv.h

#define ADVANCED_PAUSE_FEATURE //  - Povolí příkaz M600 který se používá při výměně filamentu.

Hrátky se spínačem

Spínač zapojíme nejjednodušeji tak, že při zasunutí filamentu nám spínač sepne zem a detekční pin na desce. Proto si zapneme PullUp resistor, aby nám při nesepnutém vypínači zajišťoval přítomnost logické jedničky (5V či 3,3V) na detekčním pinu. Pokud naše deska neumí pullup rezistor softwarově zapnout, přidáme si 10kohm rezistor sami a připojíme mezi +5V (3,3V) a snímaný pin .

Soubor configuratin.h:

#define FILAMENT_RUNOUT_SENSOR 
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS   1     // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
  #define FIL_RUNOUT_PULLUP          // Use internal pullup for filament runout pins.
  //#define FIL_RUNOUT_PULLDOWN 

Příklady konstrukce a montáže:

image-20.png image-21.png
Hodí se zejména pro Direct drive Titan či BMG. Unverzální řešení pro bowden i direct drive.

Hrátky s optickým čidlem

Optické čidlo má výhodu v minimálním tření a, co jsem zatím zaznemenal, nezadrhává se filament při jeho vytahování v protisměru k páčce jako u mechanických endstopů. Výše zmíněné čidlo také vyžaduje pullup rezistor, takže si jej buďto zapneme softwarově, nebo připájíme.

Soubor configuratin.h:

#define FILAMENT_RUNOUT_SENSOR
  #if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
  #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
  //#define FIL_RUNOUT_PULLDOWN 
image-12.png image-13.png
Samostatný senzor. Můj oblíbený pro direct s BMG či Titanem.

EzOut - hotový Runout sensor

Tento hotový Runout senzor již pullup rezistor v sobě má. Zbytek je v konfiguraci stejný.

Soubor configuratin.h:



#define FILAMENT_RUNOUT_SENSOR
  #if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
  //#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
  //#define FIL_RUNOUT_PULLDOW

image-7.png

Pokud koupíme tento sensor, zapojíme jej přiloženým káblíkem přímo do základní desky. Pro přehlednost přikládám zapojení pinů, které není na výrobku označeno.

image-14.png image-15.png
Uchycení na originál Ender. Uchycení pro BMG direct drive.


BIGTREETECH Smart Filament Sensor

Tento kousek je velice šikovná věcička. Problematická může však být její montáž na direct drive extruder. Vzhledem ke své váze jsem jej připevnil na rám osy X a vytvořil jakýsi hybrid mezi bowdenem a direct drive extruderem.

Konfigurace se nám trochu rozšíří.

Soubor configuration.h

#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
  #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
  //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.

#define FILAMENT_RUNOUT_SCRIPT "M600"
#define FILAMENT_RUNOUT_DISTANCE_MM 7
#define FILAMENT_MOTION_SENSOR
image-16.png image-17.png
Někam jej prostě zavěsíme. Zde pak na nějakém directu.
Hybridní řešení bowden to direct. Výsledek který v současné době používám.

Zkouška funkčnosti

Po zapojení filament sensoru a nahrání upraveného Marlina otestujeme funkčnost čidla při vloženém a vyjmutém filamentu příkazem M119 z nějaké konzole. Třeba Octoprintu, Simplify 3D atp.

Měli bychom dostat takovéto výsledky:

FIlament vložen

M119 (not matter if filament or not):
Recv: Reporting endstop status
Recv: x_min: open
Recv: y_min: open
Recv: z_min: TRIGGERED
Recv: filament: TRIGGERED
Recv: ok

Filament vyjmut

M119 (not matter if filament or not):
Recv: Reporting endstop status
Recv: x_min: open
Recv: y_min: open
Recv: z_min: TRIGGERED
Recv: filament: open
Recv: ok

Pokud se nám čidlo chová naopak, změníme pouze v souboru configuratin.h:

#define FIL_RUNOUT_INVERTING true // Set to true to invert the logic of the sensor.

Závěr

V současné době používám Smart filament sensor od firmy Bigtreetech s BMG extruderem a bowdenovým přívodem filamentu uvedeným výše. Předtím jsem měl optický na direct drive. Mechanických jsem si už užil dost. Ty měly tendenci se se občas zasekávat při výměně filamentu, kdy drhla širší koncová část vytažená z hotendu o páčku spínače.

Menu

Volba jazyka

O webu

Tento web vznikl na základě hromady stále se opakujících dotazů ve facebookové skupině na podporu tiskárny Ender-3 a spoustě jiných skupinách. Proto jsme se my, aktivní členové těchto skupin, rozhodli sepsat odpovědi na tyto dotazy a vlastně díky tomu vznikl i tento web.

Web vzniká v našem volném čase, kterého bohužel nemáme tolik, kolik bychom chtěli.