Thoughts on filament type detection
A couple of times, I've put PETG into the printer instead of PLA - yes, a stupid mistake.
But I feel a check could be so easy to do ....
When I load a filament, the printer asks me to identify its type ....
If the printer could save this information, then if a gcode file comes along with incompatible parameters, the printer could alert me and refuse to print.
I'm using octorpint, but I could see that this could be done in the stock firmware too - perhaps checking the bed temperature and nozzle temperature are within a specific range?
Just a thought,
Steve
RE: Thoughts on filament type detection
....
When I load a filament, the printer asks me to identify its type ....
If the printer could save this information, ...
It does. The "problem"is, this information has fixed values (for example: PLA: Nozzle=215°, Bed=60°C) which are used for (un)loading filament and first layer calibration, and not for printing actual object.
then if a gcode file comes along with incompatible parameters, the printer could alert me and refuse to print.
Here is a bit tricky. What parameters and how big deviations should be allowed? Nozzle temperature seems to be the obvious choice. But even that depends on filament brand. For example, PLA can print in range 190-230°C and PETG in range of 220-250°C. So, it can happen we have PLA and PETG, where both print at 225°C. Ok, if both print at similar temperature, who cares then (no warning would appear). However they require different bed temperatures.. etc. etc.
In short: using such method would end up the same, as if annoying "Are you sure you have right filament loaded?" message would appear before every print. And we would confirm with "Yes, I'm not stupid!".
I think solution could be quite simple. Every filament type should have "standardized" filament type code, which is then used in G-code file. For example:
M606 1 ;is PLA filament
M606 2 ;is PETG filament,
M607 3 ;is ASA filament, etc.
-so, if we would load PETG filament, value 2 would be stored in printer's memory (along with "default" print temperatures for calibration).
Because we need to define filament type at slicing anyway, resulting G-code would also contain filament type value somewhere at beginning. And printer would only need to compare that value with the one in memory. If they would be equal (regardless of temperatures and other parameters), then print would continue, otherwise a message would appear.
I'm actually surprised that something like that isn't already implemented -it's fundamental for 3D printing. Similar solution could also be used for checking for nozzle size.
Just sharing my thoughts...
[Mini+] [MK3S+BEAR]
RE: Thoughts on filament type detection
I would love this! More than once I've had to re do a sucky print when the wrong filament was sliced.
RE: Thoughts on filament type detection
For me, when I used the wrong filament, I got a complete head clog, then whilst trying to unblock, broke the wires of the thermistor - complete nightmare.
@bogdanh - I like the idea about the M606 codes - one thing that would also need to be fixed is that currently when swapping PLA for PETG (for example), when you select "unload" the printer asks what filament you are unloading, but if the head is already hot, it doesn't ask what filament you then subsequently load.
In the slicer, we already have the ability to include custom g-code on a filament by filament basis.
So all we need is:
- Add the M606 code into each of the custom g-code settings for the filament
- The printer to ask for the filament type when a new filament is loaded, not just on unload
- The printer to interpret the M606 code and confirm that it corresponds to the loaded filament
- The user to ensure that he/she identifies the correct filament on loading (i.e. look at the reel)
Steve