Indirect laser filament monitor - one more try
-
Since measuring different types of filament directly was very unreliable - I wanted to give the Duet laser filament sensor one more try by going the indirect measurement route.
I checked all of the available designs for the indirect laser filament monitor - and settled on this one :
https://www.thingiverse.com/thing:4587312Even though it looks a bit clunky, the design is actually pretty clever. It uses the microswitch for filament presence monitoring and the microswitch roller doubling as an idler for the Bondtech gear. The laser sensor measures the rotation of the 5mm carbon shaft.
I printed it in black resin very precisely, assembled it and mechanically it seems to be working flawlessly. The microswitch engages every single time I put the filament in and the gear does not seem to be slipping at all.
Now to the problem :
I configured the laser filament sensor as suggested on the Thingiverse page :
M591 D0 P6 C"e0stop" R90:110 E3.0 L0.418 S1
But the readings with that setting were way out of range, so as suggested I started adjusting the settings, starting with the L parameter - which should be the calibration factor, since the sensor is not reading the filament movement directly, but the rotation of the carbon shaft.
The suggestion was to adjust the L parameter until the average reading was as close to avg 100% as possible.
In my case it was L:0.525 - and I was getting a pretty constant 100% average reading over the course of the whole print, but the min and max readings were anywhere from ~ min:3% to max:300%.
I then started experimenting with the E parameter, lenghtening the period between each measurement - and the longer the period is - the less difference between min and max.
For example with E:12 setting, the min is around 40%, max around 160% over long runs. But sometimes the min and max get triggered suddenly to go considerably lower or higher, even though the average stays around 100% through the whole print.
What is causing these false positives / negatives - while having the average correct over very long runs?
This also makes it pretty unusable, so if anyone has any idea what to try - it would be highly appreciated.
I really like the concept and the fact that it does not exert much force on the filament so even flexibles can be used (unlike with some other sensors like the BTT smart filament sensor which has a very strong spring a puts a lot of force on to the filament - so using anything softer is a no go.
-
I was able to solve the problem myself - so this is for anyone who might stumble upon the same problem in the future.
The problem was the inertia (momentum) of the filament spool. The filament spool is held by the famous "Universal filament spool holder" that uses two ball bearings at each end and is extremely easy to move. So when the extruder has faster moves - it pulls the spool and it's inertia pushes the filament a bit more through the sensor than it is actually going into the extruder since the filament can bend and straighten - hence it all makes sense - that sometimes there is more, sometimes less filament going through the sensor - but the average is always exactly the amount that went into the extruder.
The solution is to constrain the filament path before and after the sensor - either by a tighter PTFE tube on both sides or maybe by a sponge filament cleaner at the entrance of the sensor.
If you are using the "Universal filament spool holder" - you can also put two PTFE washers on the sides of the ball bearings and squeeze them a bit with a locking hex nut - that would prevent the spool from rolling more than requested, but would still roll nicely.
Now my readings are normal.
Hope it helps someone having the same problem with the laser filament sensor.