donovan6000 / M33-Fio

The ultimate OctoPrint plugin
GNU General Public License v3.0
125 stars 38 forks source link

Brainstorming: spliting M3D-Fio into parts #31

Open mrvn opened 8 years ago

mrvn commented 8 years ago

At the moment M3D-Fio doesn't integrate nicely with Octoprint. The way it hacks itself into the printer log and read / write functions isn't the way Octoprint developers intended things to work. It is also a mixture of things specific to the M3D Micro and more general problems. Therefore I would like to propose splitting M3D-Fio into parts and to use the parts of the Octoprint API that where mend to be used. I've already send a pull request to Octoprint to support the gcode.queing hook to return multiple commands and this could then be used in the various preprocessor steps to do on-the-fly conversion cleanly.

M3DSerial

Unlike other printers the M3D Micro does not speak plain ascii G-Code. It also has a bootloader mode and printing mode. I believe the right mechanism for this is to use the serial factory hook and translate between ascii G-Code and M3D binary there. The serial object would need a few extra methods to handle reading and writing of the eeprom and firmware updates but that shouldn't be a problem.

I would also include the feed rate conversion in this step. Actually I would make that part non-optional and part of the gcode ascii <-> binary conversion in gcode.py.

Backlash

Backlash is a problem with all printers and not all of them handle that in firmware (or you don't want to mess with the firmware). I propose splitting this off as it's own plugin and provide hooks for the M3D plugin to get/set the values from the printers eeprom.

Bed Compensation

Again a common problem with printers. And even if I can level the printers bed perfectly I sometimes wish to adjust the bed height to make the first layer be squished down more to stick better. Or the print bed is simply warped and can only be compensated for in software. Again I propose splitting this off as it's own plugin with interface to the M3D plugin.

Raft Plugin

This would be a new plugin very similar to the Bed Compensation. Or more precise instead of the Bed Compensation. Instead of warping the whole print to match a warped print bed I want to print a raft below the object with variable heights so that the bottom of the raft fits the warped print bed and the top is horizontal. The object itself would then only be printed some constant amount higher. The reason I mention it here is that the M3D plugin should interface with this the same way it would interface with the Bed Compensation.

Wave Bonding and Thermal Bonding

I'm unsure about those two and I use neither. I think I already handle thermal bonding in my slic3r settings so never needed it. Totally in he dark what Wave Bonding is supposed to be.

Centering and Print Volume Check

Both are things every printer could use. In fact they are so elemental I wonder why Octoprint doesn't already have them built-in. One point though. The Octoprint printer profile only has rectangular and circular print beds as option. This ignores the fact that the print volume isn't always a perfect cube or cylinder. In slic3r one can upload a STL file as print volume. This might work as a more generic format to specify the print volume and the M3D plugin would supply the proper shape for a generic plugin.

M3D Plugin

This would be whatever is left after splitting of stuff and the glue to hold the rest together. Namely handling the eeprom, fan profile, extruder current, calibration, and supplying the right settings to the split off plugins.

Comments? Ideas? Objections?

LogicalChaos commented 8 years ago

I’ve not looked at either code base, but everything you’ve spelled out in your doc seems good.

On Dec 27, 2015, at 8:24 AM, Goswin von Brederlow notifications@github.com wrote: Instead of warping the whole print to match a warped print bed I want to print a raft below the object with variable heights so that the bottom of the raft fits the warped print bed and the top is horizontal

Great idea. I regularly have problems in the front left corner, prints lift there. This may address that issue. Calibration tweaking has not fixed it so far.

I'm unsure about those two and I use neither. I think I already handle thermal bonding in my slic3r settings so never needed it. Totally in he dark what Wave Bonding is supposed to be.

Wave bonding moves Z up/down when laying down the bottom layer, probably in an effort to get a better stick to the platform.

Later, Rob