Thanks for such a detailed response, you definitely know your stuff. I guess I can avoid any issues if I just rely on the card input, I just like the convenience of the USB cable. I am still relatively new to this so I will get more knowledgeable in time.
Thanks again Greg,
Recommended Posts
GregValiant 1,455
Most 3D printers have the mainboards configured in such a way that the 5volt USB signal is considered to be a "hard reset" signal and will always cause a re-boot of the printer. It is done on purpose. If you modify a USB cable to kill the 5volt signal then you might find a way to resume a print.
If you are printing via the SD card, the loss of the 5volt signal due to the computer shutting off doesn't matter. The problem occurs when the computer powers back up and the 5volt signal shows up again. When that happens, the printer re-boots and the print will stop. That can be recoverable from the printer LCD if the printer has been writing the power-off info to the SD card.
If you are printing via the USB the power loss kills the print and the power coming back on will re-boot the printer. That is usually not recoverable.
It can be recoverable:
There are a lot of ifs. I've practiced it and I've written an app that automates it. The final problem is that the end stop switches on the printer are not very accurate so the HomeX0 Y0 Z0 location can vary (at least slightly) every time you auto-home. The Z doesn't matter much as a slightly higher or slightly lower layer isn't very noticeable. If the X and/or Y home location is slightly different (which is likely) then there will be a layer shift no matter how careful you are.
This is a mock recovery script for my Ender running Marlin 1.1.8. It is much like a StartUp Gcode. The M26 line has to be calculated by counting the characters in the file up to the point you want to resume the print from. In the example below I picked the start of Layer 25. If you look at the second G28 line you see I've decided that I could home the Z at the right front corner.
M21 ;Initialize SD card
M23 \BRIDGE~2.GCO ;DOS 8.3 FileName
M26 S580232 ;Byte location
M140 S50 ;Set Bed temp
M190 S50 ;Wait for bed
M104 S205 ;Hot end temp
M109 S205 ;Wait for hot end
M105 ;Report Temps
M220 S100 ;Feed rate
M221 S100 ;Flow rate
G28 X Y
G1 F2400 X230 Y0
G28 Z ;Home Z
M106 S76 ;Fan
G0 F1200 Z15.4 ;Move the Z to restart height + 10
G0 F2400 X17.084 Y117.854 ;Move to XY restart location
G92 E34.57277 ;Set extruder -4 prime
G0 F300 Z5.4 ;Drop 10 to Resume Z
G0 F1200 E38.57277 ;Prime
G0 F2400 ;Set Feed rate
M24 ;Resume
This is the "Recovery" tab of my app and contains the information I decided I needed to recover from a power-loss or other malfunction that caused a print to stop or that I had to abort.
It ain't easy.
Time for more coffee.
Edited by GregValiantLink to post
Share on other sites