Making a good printer great

posted in: 3D Printing | 0

This last weekend I spent a lot of time doing some significant changes to the underlying code and configuration on the 3D printer. After noticing some print quality issues, inconsistent heating, and in general some fine detail problems on prints I figured it was time to fix all the things.

Things I changed/fixed:

  • Found all the proper settings for the thermistors for the e3d V6 hot ends, and the silicone heated bed. I found I skipped that step and relied on the RR Firmware configurator a year ago to set the values, and they were all wrong. I found the e3d specs for the thermistor on the e3d website, and then had to break down the R/T tables for the thermistor on the heated bed. It was a pretty big change in settings for those.
  • PID Tuned the bed and the hot ends, and found much more consistent heating/cycling on all of them.
  • Changed the centering of the build volume so 0X and 0Y is in the center of the build table. This allows me to print mirrored now, and makes some other tweaks more logical and easy. This required me to change all the preset positions across the machine and slicer. Since I was diving into that I chose to re-do how Simplify 3D calls commands for the start and ending scripts.
  • Moves all start/end scripts from Simplify3D Gcode areas to Macros stored on the Duet2. This allows me to make changes outside of having to modify all the S3D profiles.
  • Added a 4th tool in Duet2 for mirror printing (The others are Left Extruder, Right Extruder, Duplication printing, and now Mirroring)
  • Refined Jerk/Acceleration settings to help improve some fine details
  • Built a number of new Macros and moved certain functions I use often into them, and have other macros/scripts call those files now.
  • Update the Z Homing/Probe configs for faster more consistent probing

Changing the 0 points on the board

One of the biggest changes was changing the 0 points to the center of the board. This requires changing everything. The Slicer, internal configs on the Duet, Macros, Homing files, etc… Since the printer was well calibrated before I just took the build volume of the board and divided it by 2, and worked on what the offsets would be. This required a lot of sketching stuff down and hitting up calc.exe to convert all the dimensions.

Not just converting the full build volume, but converting the partial volume configs for the Duplication and Mirroring tools. This results in the Min/Max figures above derrived from the previous 0x0y in the corner specs before for a 305mmx305mm volume.

This also requires deleting and recreating the Mesh Compensation file for the bed once you change the center. Otherwise the system gets pretty unhappy.

The Code changes for the build volume ended up like the below:

; Build volume (original corner 0) OLD CODE
;Printable volume 305x 305y
;M208 X305 Y327 U355.85 Z300 ; Set axis maxima (adjust to suit your machine) Moved to 356.0 from .2 to move the U to the right a small bit I think .1 will be the answer
;M208 X-46 Y-37 U0 Z0 S1 ; Set axis minimum (adjust to make X=0 and Y=0 the edge of the bed) -3mm between the X and U wit the U being 3mm further back, so add -3 to the Y number

; Build volume (Center 0 Adjusted) NEW CODE
;Printable volume 305x 305y
M208 X152.5 Y174.5 U203.35 Z300 ; Set axis maxima (adjust to suit your machine) Moved to 356.0 from .2 to move the U to the right a small bit I think .1 will be the answer
M208 X-198.5 Y-189.5 U-152.5 Z0 S1 ; Set axis minimum (adjust to make X=0 and Y=0 the CENTER of the bed) -3mm between the X and U wit the U being 3mm further back, so add -3 to the Y number
;Changed all dimensions to move the center to the middle of the printer.

Scripting the Slicer

Because I wanted a compartmentalized way to process the start/ending of the slicer files that I can edit independently of needing to update the slicer factory files in S3D or filament configurations, I build a /Macros/JobScripts folder in the Duet2, and pu in a collection of macros that the Slicer calls with a M98 command.

The scripts went from this:

To a much more refined and functional script that is called via this:

Those scripts call a macro like this:

Then there is an end script all the files will call regardless of what tool is being used.

Overall the new scripts work great and allow me to make changes while the print is going on for the ending code. I am looking at moving a lot of retraction code to firmware soon as well as its own macro for me to be able to tweak retraction settings on the fly.

Mirror Printing

Once I had the configs changed over, cleaned up I was able try my hand at mirror printing. The only real change to enable mirror printing with the updated configs is setting the M579 command to invert the scaling of the U axis (M579 U-1), adn then set the bed volume in the slicer to be ~130 vs 152 for half the size to give the print heads/axis clearance when they move toward each other.

Other than that the printer really works the same as the duplication printing tool.

Printer doing its thing in mirror mode

Problems still to work on:

One of the key things I need to work on fixing, and its not even a “problem” more a symptom. Is that along the Y Axis I am seeing some ripples/Ringing. More pronounced than I was expecting and makes me concerned I may have some kind of mechanical hiccup on the Y axis. Now its not surprising there would be some ringing on that axis as it is moving the weight of 4x steppers, 2 extruders and a pretty robust gantry. It has 2x high torque steppers moving it and the belts are 9mm Gates GT2’s. I have a slight theory it could be the 16T pulleys on the steppers as they weren’t exactly made for these kind of steppers, but the ringing seems higher frequency than than the teeth.

So that is up next. I really only notice it with materials like PETG that are shiny at a solid speed. Anything beyond 60mm/sec I see it. I am finding a lot of materials are not happy going much beyond 75mm/sec before they start to suffer from lower layer adhesion and strength gets compromised. I am not sure if this is because of the hardened steel nozzleX I print with losing temp at those speeds, but it is another thing I am going to be looking at.

At 60mm/sec NylonX is very week, at 40mm/sec its bomb proof and unbreakable… so… there is that.

I also am struggling with TPU/TPE jamming in the Titan Aero extruders. Where the pressure seems too high and it will push out past the hob and start coiling in the extruders. I am working on settings around this to fix it, but anything beyond 20mm/sec print speeds and it all goes to hell. And even 20mm/sec fails at .2mm or less layer heights. It would be nice to throw the new e3d Hemera extruders on this printer, but that isnt in the cards right now as these titan aero’s are still pretty new. (But I am taking the CAD drawings of the Hemera and starting to work on what a new X axis mount would look like for this printer and them.

I am stepping back from the printer for a few weeks as I travel for work but I have many plans for it still 🙂

Follow Joe Kelly:

Geek of many things

CEO of this Blog. It's kind of a big deal.

Latest posts from

Leave a Reply

Your email address will not be published. Required fields are marked *

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