Resuming Failed 3D Prints Automatically

What happens to your 3D printer if the power goes out? What happens if there’s a jam in the nozzle? What happens if your filament breaks, runs out, or turns into a plate of spaghetti? For all these situations, the print fails, wasting plastic and time. For his Hackaday Prize entry, [robert] has come up with a tiny device that saves all those failed prints, and it does it without batteries or a UPS.

The idea behind [robert]’s box is to monitor all the G-code being sent to the printer, and allow a print to be resumed after a failure. The design is simple enough — just a USB mini port on one end, a USB A port on the other, and three buttons in between. This box logs the G-code, and if the printer happens to fail, the box will spring into life allowing you to resume a print from any Z position.

Already [robert] has tested this box on a number of printers including the Prusa i3, the Creality CR-10, and the ever-popular, explodey Anet A8. The project has already gone through a few hardware revisions and there is, of course, a fancy 3D printed enclosure for the board. It’s a great project, and one of the more interesting 3D printing tools we’ve seen in this year’s Hackaday Prize.

25 thoughts on “Resuming Failed 3D Prints Automatically

  1. Somebody implemented this for the Smoothieboard ( it’s not much code ), but as far as I remember, the code wasn’t clean enough to be merged into the edge branch. Wouldn’t take much to clean it up and merge it though I think. And then you don’t need any extra hardware. Calling for volunteers ! :)

  2. I think the article could’ve used some more details. You highlight that “it does it without batteries”, but then skip saying how. (I mean, even if the answer is just “flash” or “eeprom”, I definitely felt there was something missing from the article) You say that it has “a USB mini port on one end, a USB A port on the other, and three buttons in between” – err, nice, but what are they used for?

    In all honesty, I have my doubts about the “without batteries” bit as well – if you look at the images, there’s two things that look like clamps^H^H^H^H^H^Hbatteries, or battery-like devices. Also, in some images, only the USB A side seems to be connected, but there are lights on in the device.

    Also, more details about how a print is actually restarted would’ve been nice. The project description only says “rescue a failed 3D print job automatically by press the OK button” (sic), which I highly doubt. I mean, for power failure, sure, but as for the other failure modes, I don’t see how this box is going to know exactly where everything went wrong, and thus, where it should continue.

  3. it does mention from any z position so if its from running out of filament or a clog just reposition z witht he +/- buttons and press ok seems pretty simple to me and the device is more then likely drawing power from the usb cable thas plugged into it cause it to power on ,if there is a coin cell battery its more then likely how it retains the gcode information even after power loss

  4. An extra (possibly more usable) user case for this device would be to tell the device to stop at some point midpoint in the print so that you can change filament. Then you change printer heads or put a new filament in, clear the nozzle, and then you continue with a different colour.

  5. i wrote my own host software, and it has a pause/resume function, and it shows the line numbers as it goes and you can resume at any line number if you want.

    my point is, i prefer my software to be software, personally.

    1. Your solution is more useful IMO. I don’t trust USB to do any prints directly from the PC. All my printers work from microSD and I have a UPS attached to them. Never fails on “brownouts” but “remembering” where to resume in case of an extended power failure would be more practical for me.

  6. Why not setup a laser diode and light sensor across the hot end? If the filiment stops blocking the laser, the controller is alerted. The x,y,z location is saved, the gcode position is bookmarked, the system can go to a safe position for fixing, and upon resuming, the printer goes back to the saved position and resumes the gcode.

    1. There are way simpler ways to do this, that currently exist. The most common is to have an encoder wheel detect filament movement. Smoothie supports this and can detect if actual and theoretical filament movement differs, and if they do it stops printing and asks the user for input ( can also do parking position of course ).
      This is a bit different from what the article describes though, which is more about recovering from power outages.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.