1

Topic: SD2 Z Accumulation Error

Hello,

I'm working on refining my SD2, and the first thing on my list is to remove an issue I've had since purchasing the SD2 2 years ago.

I have a Z accumulation error in my prints. That is, the taller the print, the more Z offset I get. If I print a short object (under 5-7mm) the error is negligible. If I print a 20mm object it will come out around 21mm (1mm error). If I print something taller, the error scales to multiple mm's. X and Y are perfect. I've checked the software (RH on a Mac) many times and cannot spot the issue. Any brilliant ideas?

Jeff

2

Re: SD2 Z Accumulation Error

I don't know about brilliant, but we can start somewhere I suppose! smile

If the error really is proportional, and positive, then it's not likely to be missed steps in the z or backlash, so:

(1) Check what steps-per-mm you are using on your z axis (repetier host printer eeprom settings) and what they should be (if you're not sure, let us know what z axis screw you have - stock?).

(2) Is there any scaling set in repetier host? Is the slicer doing something weird? Check the number of layers generated for a test object, e.g. a 20mm cube sliced at 0.3mm layers should show 66 or 67 layers in repetier host; to be 21mm it would need 70 or so!

SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi

3

Re: SD2 Z Accumulation Error

Thanks grob, I appreciate the help. Here's what I found out:

(1) I'm using the stock 5/16-18" z screw. On connect, the SD2 reports my eeprom steps/unit as M92 X88 Y88 Z2268 E115. However, soon after buying the SD2 I printed a calibration angle and adjust my steps/unit to get me within 0.1mm of actual. this gave me the following : M92 X87.5448 Y88.4222 Z2372.3849. I set this using the initial gcode feature in Slic3r. I attached screenshots of my setup and initial gcode reported after slicing.

(2) I verified there isn't any scaling in RH. I sliced a 20x20x20mm cube at 0.3mm layer as instructed and got 67 layers. So the slicer seems ok.

Thoughts?


Jeff

Post's attachments

SD2InitCode.png
SD2InitCode.png 55.9 kb, file has never been downloaded. 

SD2Setup.png
SD2Setup.png 52.29 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

4 (edited by grob 2015-02-25 00:27:31)

Re: SD2 Z Accumulation Error

Your calibrated value for the z axis is 5% more than the theoretical - that's quite a big change, I wouldn't expect that that's something you want.

Assuming the stock value of 2268 steps/mm is correct, then your altered value of 2372 steps/mm would give:
5.00mm theoretical --> 5.23mm real (one could consider <1 layer to be more or less negligible...)
20.00mm --> 20.92mm real (sounds like 21mm to me)
50.00mm --> 52.29mm real (sounds like multiple mm's to me)

I think you should consider removing all those M92 calibration values from your start code, and sticking to the default values (x,y,z) for now. Calibrating steps-per-mm in that manner depends very much on getting rid of all fixed errors first (e.g. wall thickness variation, backlash (particularly!)) - I suspect in calibrating you've corrected a fixed error with a proportional correction. Especially for the screw thread, the theoretical value should be very close to what happens in reality, calibrating steps-per-mm is often a bit of a red herring IMO.

SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi

5 (edited by jagowilson 2015-02-25 01:39:42)

Re: SD2 Z Accumulation Error

2268 is definitely the correct value and tnis can be verified with a variety of online calculators or manual calculation of the 5/16-18 threaded rod. The x and y axes are 88 steps per mm assuming MXL timing belts.

Grob is right. Measuring prints and adjusting steps per mm is not appropriate. Aside from repeatability issues like backlash, you are making the assumption that slic3r has actually rendered your object to GCode preserving the exact dimensions. This is often not true, due to the quantization of extrusion space.

The only proper way to empirically determine steps per mm is with a dial indicator, but the theoretical ways are sufficient. Also keep in mind that although steps per mm can be a non-integer, non integral steps will experience rounding error and should be avoided in general. One exception to this rule is with geared drives, but there are no geared drives on a stock Solidoodle.

6

Re: SD2 Z Accumulation Error

Ya, I agree with anyone else.  You can't be accurate enough with a caliper to measure and calibrate the Z axis.  Stick with the calculated value.  Your accumulation error almost certainly comes from changing this value, but there is one other thing:

Are you using the optimal layer heights for your setup?  For example, if you want a 0.30 mm layer height, you actually need to be using 0.2963.  This is needed to avoid rounding error when it gives instructions to your motor on how much to move.

SD4 w/ RUMBA, E3D Volcano, all bearings, glass bed

7 (edited by Claghorn 2015-02-25 15:04:33)

Re: SD2 Z Accumulation Error

mdrVB6 wrote:

Are you using the optimal layer heights for your setup?  For example, if you want a 0.30 mm layer height, you actually need to be using 0.2963.  This is needed to avoid rounding error when it gives instructions to your motor on how much to move.

That tends to be a pretty small effect though. If you look at what it is doing, it is sending absolute height movement commands, so the firmware moves as close as it can to that height and knows where it really went, so there isn't a cumulative rounding error or anything, it just gets as close as it can to the desired height independently for each layer.

I did once print a part that was supposed to be 90mm high and it came out about 100mm, but when I went back to try and figure out the problem, I never saw the issue again. I'm going with the theory that I accidentally brushed the keyboard and set a Z scale factor on that one print :-).

8

Re: SD2 Z Accumulation Error

Agreed that it is small, and you can see the exact number of error in the calculator.  For example, its 1.12 mm over a 10 cm print with the stock 5/16 rod.  But 1% is still something!  It's just low hanging fruit that is easy to grab in the continuous quest for print quality.

SD4 w/ RUMBA, E3D Volcano, all bearings, glass bed

9 (edited by grob 2015-02-26 05:50:39)

Re: SD2 Z Accumulation Error

mdrVB6 wrote:

Agreed that it is small, and you can see the exact number of error in the calculator.  For example, its 1.12 mm over a 10 cm print with the stock 5/16 rod.  But 1% is still something!  It's just low hanging fruit that is easy to grab in the continuous quest for print quality.

1% is pretty huge really. Should be aiming better than this (in most cases) hehe!

I have to politely clarify here, as Claghorn is right:
* The g-code gives Marlin absolute values in mm (it will ask the z axis to go to "100mm")
* Marlin will calculate, whether you send it absolute or relative mm, the absolute position you've asked for in mm
* It then converts this to an absolute position in steps using the steps-per-mm (i.e. 226800 steps), and all the complicated assembler stuff borrowed from GRBL moves the axis to that position. 226800 steps on a (theoretically perfect) 5/16-18 rod is 100.0125mm - much less than 1%, I'd guess in this world negligible. To make it better, use more significant figures in the steps-per-mm (e.g. 2267.72).

There is still a good reason to use the 0.2963mm layer height: each layer lands on a whole step, and there's not much rounding, so the layer height will be much more precise in reality (microsteps are not very accurate, and even whole steps are only vaguely accurate - check a stepper motor datasheet!). There have been claims of visible banding from this.

In the end, we have a problem where the angular position of the motor is only so accurate - if +/- 0.5 whole steps would lead to visible issues in the print (0.0035mm >= 1% of a layer in the case of the stock rod), then the best solution is probably reducing the pitch of the rod (e.g. M3x0.5 --> 6400 usteps/mm --> +/- 0.5 whole steps = +/- 0.00125mm ~ 0.42% of a layer).

I just like that the numbers are cleaner hehe smile

SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi

10

Re: SD2 Z Accumulation Error

Wow! Thanks to everyone for their input! Grob's initial suggestion solved my issue. The minute I reverted to the default X,Y,Z values, the error went away. I printed the 20x20x20 cube and Z came out to 20.05. (I set these values when I first got the machine and was new to printing. I suspect that the bed wasn't properly leveled (or similar) and it threw off my calibration attempt.)

X and Y were about 0.3mm off so I need to adjust those a bit. Based on feedback here, I assume using more sig figs in the X/Y steps might be a start?

Curious, what online calculator is preferred/respected? I found this one: http://prusaprinters.org/calculator/ . Haven't fiddled with it yet.


Jeff

11 (edited by jagowilson 2015-02-26 21:00:34)

Re: SD2 Z Accumulation Error

.3mm off is indicative of backlash. Check your belt tension and make sure it is even between the two side belts and the short motor belt is tight.

If you do a search around here you'll find all kinds of suggestions for making the system more precise and rigid. Bearings help quite a bit. A stock aolidoodle is fairly sloppy mechanically and needs some work.

12

Re: SD2 Z Accumulation Error

jagowilson wrote:

.3mm off is indicative of backlash. Check your belt tension and make sure it is even between the two side belts and the short motor belt is tight.

If you do a search around here you'll find all kinds of suggestions for making the system more precise and rigid. Bearings help quite a bit. A stock aolidoodle is fairly sloppy mechanically and needs some work.

+1 welcome the long and scary road of repeatability! smile

SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi

13 (edited by labguy 2015-03-03 21:07:07)

Re: SD2 Z Accumulation Error

Thanks jagowilson!

I started tensioning my Y-belts and noticed the stock Y-brackets were weak and flexed easily. So I printed the "overkill" brackets and replaced them. Then squared everything up and re-tensioned the belts using the SD video. Since I was at it, I went ahead and added in the Z nut-hugger and backlash spring to help with banding, and the thumbscrew wheels to make leveling a bit easier.

Then I was curious what other hardware upgrades I could entertain to improve "accuracy" and "replication accuracy (copies of parts)". So far I only have this:

* Replace XY carriages to use bearings: http://www.thingiverse.com/thing:104059

Thoughts?

Edit: I should mention that I have a near stock SD2 (new Y brackets mentioned above). It printed right out of the box and has really performed good enough for me for 2 years using RH/Slic3r.


Jeff

14

Re: SD2 Z Accumulation Error

I gave up trying to keep z steps at 2268,my cubes were always a little smaller than the STL file, I  first I tried 2400 then dialed it down to 2304, I get very accurate  results now.  I suspect my motors are getting older or the v reff may not be optimum, even though it reads 1. 01  still that 100th v shouldn't matter.

SD4 with E3D V6.

Those who don't know ask, those who don't care comment,  those who comment without answers  hide ignorance for fear of asking. Be fearless!

15

Re: SD2 Z Accumulation Error

I gave up trying to keep z steps at 2268,my cubes were always a little smaller than the STL file, I  first I tried 2400 then dialed it down to 2304, I get very accurate  results now.  I suspect my motors are getting older or the v reff may not be optimum, even though it reads 1. 01  still that 100th v shouldn't matter.

SD4 with E3D V6.

Those who don't know ask, those who don't care comment,  those who comment without answers  hide ignorance for fear of asking. Be fearless!

16

Re: SD2 Z Accumulation Error

lueman wrote:

I gave up trying to keep z steps at 2268,my cubes were always a little smaller than the STL file, I  first I tried 2400 then dialed it down to 2304, I get very accurate  results now.  I suspect my motors are getting older or the v reff may not be optimum, even though it reads 1. 01  still that 100th v shouldn't matter.

Hey lueman, I don't doubt your cube is now madly accurate, but how are your 50mm-tall things? Are you sure that there wasn't any fixed error (e.g. backlash) in there? Here's what I'm thinking...

http://www.soliforum.com/misc.php?action=pun_attachment&amp;item=8160&amp;download=0

Post's attachments

error.png
error.png 15.21 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.
SD3. Mk2b + glass, heated enclosure, GT2 belts, direct drive y shaft, linear bearings, bowden-feed E3D v5 w/ 0.9° stepper
Smoothieboard via Octoprint on RPi

17

Re: SD2 Z Accumulation Error

Excellent chart Grob!

SD3, RUMBA, 360W power, ABS: Glass bed + Aquanet Extra Super Hold Hairspray, Anti-backlash Z spanner, Repetier Host + Slic3r