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:
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
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
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.
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
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.