Filament flow sensor eventually unnecessary?

Ok, this is an idea that popped into my head a few days ago, and since I could not find anything online about it, I turn to you!
Mind you, I have next to no background in programming, so my idea might be silly at best, but judge for yourself:
When we heat our filament in our hotends, a certain energy is needed to do this constantly, since the energy is transported by the molten filament away from said Hotend. If we would map the energy that we needed in the past to melt and print, shouldn't a decrease in needed energy be measurable when no filament is running out of the Hotend because of a blocked nozzle or a slipped out Bowden tube? It's like a constant PID tuning procedure with a little bit of a statistics in the background to make sure it's not too ticklish... This way we would not need any additional sensor, but a plug-in for Octoprint that listens to the Hotend temperatures, and if the get too constant, without the need to reheat, alerts the owner. Or maybe stops the print or what ever else you want.
What do you think? To easy? Not doable because of technical limitation (processor power, temperature sensor sensitivity or latency)? Let me know!

issues here are that surface of the hotend is rather large so all the environment changes (draft, your part cooling fan..) are effecting it and getting it to cool faster, none of those are really "constant" and you do not want your printer to stop printing and start beeping when you open a room door. another issue is that you have a fan cooling the cold end / throat of the hotend and that this does effect the hot part too... all these cooling forces are number of orders of magnitude stronger than for e.g. you printing trough .4mm nozzle at 30mm/sec with 1.75mm filament .. not to mention, the amount of energy filament "takes with it" while extruding changes significantly with the extrusion speed...

IMO it is impossible to do as octoprint plugin, it is theoretically possible to do as part of the firmware but it is highly impractical and again you would be able to detect there's no filament going trough but you would not be able to detect underextrusion issues ... a simple encoder setup with firmware support for it (like you have in smoothieware for e.g.) is easy to setup, easy to maintain, cheap and super precise

1 Like

Ok, see what you mean. But that was what my statistics were ment to mean. The draft of an open door would cool down the printer if it's Hotend energy is completely "loaded" and nothing is flowing away by filament, but then you are in the room already and you would see what's happening, as long as you have less then 5 printers running. I ment unsupervised printers in an constant environment where nothing changes. The part cooling fan and the Hotend fan would work just the same, blockage or not. The only changing parameter in this situation is the voltage you need to keep the temperature at a certain level, and sure, that is a very tiny needle to watch, but in PID tuning your hotbed your printer does it too. Of course, a firmware that would incorporate this behavior would be great, but I thought that it might overwhelm the little processor on our printer boards. A Raspberry or PC would be better at this... But, as I said, I am by no means an expert on this, this was only ment as an shoot-the-moon attempt to get somebody with more knowledge interested in a project like this :wink:

dunno, I personally don't see a benefit ... you would need to add a current sensor to the heater wires and make a whole bunch of statistics .. then you have to take some long averages so even if you detect it, it won't be "immediate" but with some serious delay ... pid is measuring temperature and in that loop you could add this "detection" .. externally you would have to average readings, extract some statistic, learn what's normal what's not... and the filament sensor is not bigger nor more expensive than this current sensor (actually might be cheaper due to prusa's work and prc clones... we are talking under 10$ for a fully functional miniature sensor e.g. ) so what would be the benefit ? you are neither saving on the parts nor on the work nor on the space?

I don't think that you would need extra hardware, that's what this is about. The firmware measures the temperature of the Hotend anyway, and if it falls below a certain point, it starts a reheating cycle. If after a certain time this reheat isn't necessary, the software would look into what is happening, and if the behavior would look odd, could do a more thorough measurement. After that and little statistical magic that determens the likelihood of a blockage, it would stop the print and ask for assistance... So I would only monitor the actual heat cycle of the hotend. There must be disturbances of a normal cycle if the Hotend is blocked and I thought it should be possible to detect these... If that really isn't possible I stand corrected, but at least I let my idea fly into the world to inspire others :wink:

no it does not work that way, pid loop continuously work keeping the temp on point, the clog/filament runout will not be visible by looking at the temp on any properly configured printer

If I were to consider this approach, I think I would work from the idea that moving filament generates static electricity and non-moving filament doesn't. So a decreasing charge amount would be seen as the dissipation of charge through resistive paths to ground. A constant charge amount indicates that the filament is still getting jammed into the top of the hotend.

I've often thought about controlling the static charge of the build plate and the hotend so as to generate adhesion without other gimmicks.

Again, I would not look at the temperature. I would look at the reheating cycle. As I understand the process, and of course I might be wrong, the firmware checks if the Hotend is at the predefined temperature every so often. If that is not the case, it gives the command to reheat. If that isn't the case, how does the firmware know if and when to stop the heating process? So i imagine it is not necessary to know the actual temperature, but the software would monitor the behavior of the firmware in regard to this heating. Ok when this all leads to nothing, forget I asked, and thank you for engaging in the topicn

there is no "reheating cycle"

nope, the PID loop checks how far off the hotend is from the set value, how quickly it is moving towards it (or from it) and sets the power output to the heater to keep the temp of the hotend constant. on the properly configured heater the temp of the hotend is oscilating 0.1C around the target temp irrelevant of the extrusion status (extruding, not extruding, jammed, no filament... does not matter) ...

now you could read the power output on some firmwares .. e.g. smoothieware

Recv: ok T:235.1 /235.0 @0 B:84.9 /85.0 @0
Recv: ok T:235.0 /235.0 @92 B:84.9 /85.0 @0

this @0, @92.. is the PID loop output but I doubt you can query the data fast enough to get any usable info about what's going on without seriously messing up the print process

what you can do is test, grab temp reading while extruder is at max and when extruder is off (so filament just sits there, like it's jammed), make a graph and see if there's anything there that can be used

btw if you can see in my example, the heater was on 92% when the hotend was on point, on the other side the bed was off while the temp was below set point ..

Some will like some filament left before reaching the hot-end even if filament is out. A bit of filament to play with

I like your idea, not sure if will work in most cases.
I think that you are overlooking the fact that the filament is pushed into the extruder. When you run out of filament, it happens at the motor pushing the filament. There is still filament going from the motor to the hot end. So the hotend will be loaded with plastic absorbing heat.
The filament alert hardware is set up way up, to avoid the motor running empty. I am guessing that if you have a bowden tube, it is not big deal (not sure, I do not have one). But in direct push, you have to take apart the hot end to take that small piece of filament. It happened to me once. It is better to have some length of filament that you can grab and pull.
Most people when it come to log energy, they use an current sensor, which is another hardware. Measuring energy by looking when is on or off is possible, but it will take a lot of statistics that I may guess is not transferable to other printers. Are the heating element consistent among same model/brand? My guess is that in cheap kits it is not likely. But then, you can teach the software easily. You track how it behaves when working and how it behaves when paused. So, if it "like paused" but you have not ordered a pause, it means is not pushing plastic.
More than run out filament, it will also detect hot end clogging and slipping filament.

I've never had to do that. I always print in PLA, though, for what it's worth. If everything's jammed up in there, I just crank the temperature to 210 or even 230 and melt it out of the throat. (I heard about "cold pull" over a year ago and I've never had to resort to that.)

I printed less PLA in past 10+ years then I printed ABS and PETG today :smiley: so can't really talk about PLA but for ABS and PETG it really depends on how your hotend/extruder assembly is created... if you just run out of filament, usually (80-90% of times by my rough estimate, never really calculated statistic of it) you can just push what's left in the extruder with new filament, the 10-20% times when that does not work is cause you have "kink" in your filament (end of spool for e.g. had a hard bend on last 5-10mm of filament) that king passes trough the gear and bends just after it leaves the gear so you have something like

 [__] [__] -> gear ends
      /    -> kink
     /     -> kink 
     |     -> straight filament
 [__] [__] -> hot end

and when the fresh filament comes from the gears it slips past the old one and nothing gets done .. it's rare but unfortunately requires maintenance that, depending on your extruder/hotend design can be complicated or easy..

with regards to cold pull it is great way to clean your nozzle from clog and from other material, use nylon as it is higher temp then most filaments, it is strong and fairly sticky, it will collect garbage from inside the nozzle and let you pull it out.. nothing too smart about it, I do it when I'm switching between abs/petg/hips ... normally you can do it also to clean the clog but tbh since I started using filament cleaner and dryer boxes that prevent dust from collecting I don't remember last time I had a clog

Maybe it's the design of my hotend. I'm guessing it's a standard V6.

that on the picture looks like hexagon :smiley: I have few and they are imo better than e3d v6, but reprapdiscound that was making it was supposedly closing, dunno if they are in business now so I moved to e3d ...

anyhow, the hotend is not a problem but space between hotend (entry into the hotend) and extruder teeth .. usually there's some "room there" for filament end to move to a side and new filament can't push on it ... the very restricted path extruders (made for good flex prints) will not have this problem, but most of the regular extruders (especially those direct drive prc ones like mk8, mk10, mk11 ..) will have 5-10mm between end of gear and entry into hotend and there a kink in the filament will show ...

now, you use pla, maybe pla, cause it's that stiff does not have that kink, dunno ..

e.g. look at this one, this is microswiss so it has pretty restricted flow but whole this part between teeth and cooler block is free on mk10 and there you can have filament bend (red) so new filament (blue) cannot push ...

normally it does not happen but when you have end of filament bent into hole on the spool it often does happen ..

so end of filament like this (even better if it's shorter after the bend) will tend to not allow you to continue pushing:

now, as I said, PLA is stiffer and it will probbly break and not bend like this but.. and your hotend is probably close to the teeth and with restricted path (e.g. on this hotend+extruder combo on picture I could not reproduce that issue as microswiss plate restricts path very good so you can print flexibles, and I have no clue where my original plate from mk10 is so I can show you on the pic how it looks like :smiley: )