I am trying to understand the concept of the encoder wheel that is used as a filament sensor, as shown below. It can detect if filament is moving, making it suitable for filament runout and filament jam detection, although it wouldn't be able to distinguish the two events.
Source: Thingiverse.com
Filament runout detection is easy to understand, there is no filament passing (anymore), so the wheel isn't moving when it should.
Filament jam detection, the filament is not moving when it should, but how does the firmware know when it should expect the encoder wheel to move? Does it compare some last move time with an expected move time and some threshold time?
In addition to microswitch variants, such as shown in my question How to distinguish filament runout and filament jam using a microswitch-based filament sensor in Marlin?. I think an Encoder Wheel variant does add two more types of detection that a microswitch variant can't detect:
- Filament break detection: It is probably the only way to detect the rare case where the filament breaks (after it passed the sensor), where one or two microswitches would both possibly not be triggered (as the filament is still present in the sensor), resulting in a false-negative where the printer keeps printing when it should stop.
- Clogged nozzle detection, a clogged nozzle would also be detected as the filament simply stops flowing.
However, I think both 'filament break' and 'glogged nozzle' detection would not be distinguishable from a 'Filament Jam' or 'Filament Runout' event for an encoder wheel sensor as in both cases, the filament simply stops running the wheel when it's expected to run.
Additionally, under a YouTube video about this particular sensor a user 'hd-be7di' commented:
This sensor could work better if it shared data with the extruder. It could act like an "error correction wheel" by comparing the extruder's parameters to the sensor's to detect very tiny under-extrusions (and over-extrusions too!) instead of acting like a simple on-off switch.
Is my understanding correct, or are there other ways these encoder wheels can be used for 3D printers? How can printer firmware use encoder wheel data, and how does the firmware know when to expect a rotating wheel (with some delay or trigger threshold, I suppose) as well as ignoring retractions?
as the filament is still present in the sensor
not necessarily, old PLA frequently breaks at the spool, so you will experience a run-out of material. $\endgroup$