I began with a need to know when my 3D printer was out of filament, so that I could drop whatever I was doing and insert a new spool of filament right up against the end of the previous spool. By doing this within four minutes of the filament running out, printing very large jobs could continue uninterrupted. The device I designed was called Mister Screamer.
The Basic Concept
The idea is that if a 3D printer is attended (but not under constant supervision) and the operator is prepared to swap filament rolls when needed, then there is no need for the printer to perform any “smart” duties such as pausing the print. As long as there is a means of triggering an alarm when filament has run out, the operator can do everything needed to keep the machine printing uninterrupted, and the printer itself doesn’t even need to know.
The previous prototype used a roller switch to trigger a buzzer. Filament was fed through the device.
The previous prototype physically sensed filament with a roller switch that triggered a buzzer when filament ran out. It had a successful trial run, but revealed some new problems:
When pulling filament through the device by hand there was little to no resistance felt, but once it was riding a roll of filament in the printer it created much more binding and friction than expected. Printing was successful but the printer’s extruder had to work much harder than usual. I had hoped the device would put a negligible strain on the feed system and filament. This was not the case.
When filament ran out, the device fell some distance to the tabletop. This was expected. But the impact almost knocked the batteries completely loose from the friction-fit battery holder, which was not expected. Had the batteries popped completely out, the device would not have done its primary job. The device needed to be drop-resistant, but the prototype design did not reflect this.
Even though the previous prototype did the job it was supposed to do, it was clear there were problems and a design update was needed.
Design Goals Summary
The fundamental requirements for Mister Screamer haven’t changed much. The device’s duties are:
If filament is present, nothing happens.
If filament runs out, scream your fool head off to alert a nearby operator.
Other elements of the design worked out well enough to keep, and remain mostly unchanged:
Enclosure can be 3D printed
Self-contained (no external power or signals)
Requires no modifications to the 3D printer to be monitored
Electrically simple, and using a minimum of easy to source parts
Long battery life, low power usage
Easy to turn off when responding to an alarm
Lessons from building and testing the first prototype were used to add the following design goals:
Must not interfere with the printer’s normal operation. Ideally, the printer should not even notice it.
Device must be rugged and drop-resistant.
Ability to easily add the device to the filament of a print already in progress.
The New Prototype
The new prototype keeps the same basic function, but with an entirely different approach. The device is now sensitive to orientation, and senses the actual filament only indirectly. It is designed to hang by a ball-link chain like a pendant.
While the device hangs down it is silent. If it falls, the alarm sounds until it is picked back up. Therefore in operation it hangs passively from the filament like a pendant or keychain as long as filament feeds into the printer. As soon as the spool of filament has emptied, the device falls to the tabletop and triggers the alarm.
The new system changes technologies. I did away with the roller switch and replaced it with a reed switch. Inside the 3D printed enclosure is a void that captures a small disc magnet. The void has been engineered to use a shape that keeps the magnet away from the reed switch when hanging from the ball chain, but lay Mister Screamer on a flat surface and the magnet will settle near enough the switch to actuate it.
While hanging vertically from its chain (either for storage or when hanging from a filament line) the device is completely inert and uses no power. The enclosure is designed with flat sides and rounded edges, so that the unit always settles to one side or the other when it falls.
Other Design Notes
Once the filament runs out, the device will fall to the tabletop.
There are a few other things to mention about the design:
The ball chain can be opened and closed. This means the device can be installed around filament while the printer is in use. No need to unload filament and thread it through the device like with the previous version.
The ball chain has another advantage: the smooth balls roll like little bearings on the filament itself. There is no perceptible wear or contamination risk.
Wiring all the parts — especially both battery contacts — into a single side of the enclosure meant no flying wires between the two shells. This allowed me to glue wires in place, which in turn meant easier assembly (no pinched wires!) and a more robust device overall.
There is a small amount of hysteresis from the attraction of the magnet to the ball link chain. The device requires a slight “tap” to shut off once it has turned on. This was pleasing but unintentional, and illustrates how closely physical design choices can affect operation.
Before designing the prototype I did a small proof-of-concept for a different idea: using a rolling ball tilt switch to sense orientation and trigger the buzzer. These small devices use two metal balls inside a case to either close or open an electrical connection depending on orientation. Unfortunately the connection made is small, and they do not carry current very well. The buzzer emits only a faint, strangled sound with the power flowing directly through a rolling ball switch. This problem could be solved by adding more components to the design, but the rolling magnet and reed switch approach was chosen instead.
Warning: Audio contains loud beeping
The new prototype was a success, and not just because it performed its intended job in the expected way. It was a successful process because:
It continued to validate the basic premise: the printer itself doesn’t need to know it’s out of filament, so long as an operator is notified and has time to act.
It was able to be created cheaply and quickly.
Design changes due to lessons learned from the original prototype were successfully integrated.
Using the Iterative Prototyping Process
In prototyping Mister Screamer, I did the following to get the best results from an iterative approach:
Define the problem and the scope carefully. Make sure that the problem you think you have is the same one that actually exists. In part one of this project, I determined that my problem wasn’t really that my printer didn’t have a filament monitor. My problem was that filament could run out unnoticed even if I was in the same room.
Design something that solves the observed problem, no more and no less.
Test specific ideas with a proof-of-concept before committing them to a prototype.
Make the prototype as quickly and cheaply as you feasibly can.
Test in real-world conditions. The prototype will probably fail or fall short in at least one way, and hidden problems will be forced to the surface. Make sure failure results in something being learned.
Use what was learned to refine the design.
Mister Screamer V2 satisfied all the requirements, but still yielded discoveries that could be used to improve a subsequent version. The biggest lesson learned was that this design is highly dependent on the layout of the 3D printer being used.
In my particular printer (a Raise3D N2) the filament spool is well away from the print area. Not only is there room for the device to hang from a spool, there isn’t any risk of the unit ending up somewhere troublesome when it falls. Other 3D printers may have physical layouts that don’t allow Mister Screamer to work well. If the device dangles in the way of the print head, or can fall into the print area once filament runs out, that’s asking for trouble.
As it stands, Mister Screamer V2 does its job well enough to be reliably used for real work, even if its scope is focused mainly on my own printer and needs. Ever-increasing improvements can be tempting to chase, but it’s rarely necessary to iterate until a solution is perfect. If a problem has been correctly identified and understood, it becomes much easier to judge when the solution is done.