I recently added an Ender5 to my stable of printers and of course the first upgrade was to add Octoprint and chose the Revolutions filament runout sensor plugin as it works on my other printer.
The problem I have is that after a period of time (random from a few minutes to a few hours, I will get a false filament out trip. Do the process and “resume” the print. This instance is an 11 hour + print and it tripped out
1:24 into the print.
Equipment:
Ender 5 printer V1.1.6.1
Raspberry Pi 3B (not plus) with power derived from a buck converter that is supplied by the printers 24V power supply and is set to 5.1V and a usb cord that is large enough to never have had any low voltage detected.
The image used was a copy of what I had on a my other printer, and updated after installation on this printer.
The Pi is configured to have a static IP address and connects to my router via wifi.
Presently running OctoPrint 1.4.0 running on OctoPi 0.15.1
As stated, running the Revolutions filament out sensor.
The sensing switch is a typical micro lever operated switch with some light weight speaker wire solder to it and Dupont connectors sockets crimped on the other end.
Setup is BCM Mode (original pin 4 and ground now pin 3 and ground)
Switch type “Normally Closed”
Out of fialment GCODE = M600 B6 E10 L0 X5 Y200 Z30
At this time, I do not have the jam sensor configured or used.
The Logs:
octoprint.log (1.7 MB)
At line 2645 in the octoprint.log, we see:
2020-05-07 12:44:28,124 - octoprint.plugins.filamentrevolutions - INFO - Filament detected!
2020-05-07 12:44:28,624 - octoprint.plugins.filamentrevolutions - INFO - Out of filament!
So an event was detected.
Then from resumption on, we see:
2020-05-07 12:44:29,123 - octoprint.plugins.filamentrevolutions - INFO - Sensor callback but no trigger state change.
In the serial.log, at line 79618, we see the issuance of the M600 command.
And in line 79713 resumption of the print.
What have I done:
Initially, testing was done using the noted switch and attempting to use “Normally Open” configuration on BCM pin 4 to ground and found that I could not get reliable repeat sensing. In other words to test, I would remove the filament from the switch housing and using the “http://192.168.1.7/plugin/filamentrevolutions/filament“ status check to see if it would return a tripped condition. It would, but it would NOT reset so we then rewired to the Normally Closed condition and did several tests with positive results. At this point it was put into service.
A few prints were done and each time, we would get one or more false trips. Doing some surfing and research, it was learned the internal pullup resistor on all GPIO pins except 2 and 3 are on the order of 50K to 65K while the ones on 2 and 3 are on the order of 1.4K. Thinking we might have a situation where the very weak pullup was allowing noise to trigger the system, we changed and put the sensor on pin 3 and reconfigured the system. Still had false trips. Another thought is the sensor wire ran directly underneath the buck converters (one for the Pi and one for LED light strips), we rerouted the sensing wire away from that area. So now instead of the usual trip in 15 to 30 minutes, it might be quite a bit longer, but it still trips. Subsequently, we have upped the “Debounce” to 500ms but are still getting a trip.
I am not a programmer, but reviewing the init.py file on line 94 it would appear the pullup is indeed activated for the out sensor and a voltage check with my multimeter confirmed a voltage of 3.29V.
Another thing that is baffling to me is in the Octoprint log, it definitely shows where the filament out sensor is triggered, but after that, it appears that it is never reset yet using the browser based check shows it as having filament.
……...Filament detected!
……...- Out of filament!
But after resuming the print, it states
……..- Sensor callback but no trigger state change.
Does this mean that it is actually not operational at this point?? Should I have manually tripped the sensor before resuming the print?
Obviously to me, it works as advertised some of the time, but I would like it to work correctly all the time. So any thoughts and help will be appreciated.
Hope I have done this correctly:})
Thanks in Advance