Prints slightly small
I have noticed a slight size discrepancy in my prints and I am wondering if this is expected or maybe my calibration is busted?
Dimensions on the x y axis seem to be very slightly smaller than what is specified in the models. I see about a .15 to .25 reduction in widths and inside holes / boxes. Z seems to be slightly larger by about the same amount. I thought maybe I was model things wrong, so I printed one of these
http://www.thingiverse.com/thing:1363023
And see the same results. Is this an expected? Or a symptom of something else?
Re: Prints slightly small
I use this http://www.thingiverse.com/thing:1818250 for dimensional calibration. Use M92 gcode command to set new values of axis steps/mm and M93 for displaying current values. http://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit
Re: Prints slightly small
David, this is a great print for calibration, I will print it today. But how do you fix the issue? Say you need like .15 mm larger on the X?
Re: Prints slightly small
for instance, in slic3r i see this custom gcode
M115 U3.0.9 ; tell printer latest fw version
M83 ; extruder relative mode
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G1 Y-3.0 F1000.0 ; go outside pritn area
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line
I don't understand where the calibration variables come in? Does the firmware automatically modify every coordinate to keep the calibration? What about for bumps in the bed only in certain places? How does it know to +.002 the Z there?
Re: Prints slightly small
Maybe this helps:
Re: Prints slightly small
David, this is a great print for calibration, I will print it today. But how do you fix the issue? Say you need like .15 mm larger on the X?
Easy. First display current value using M93. Let's say it is 100 (100 steps per mm).
You printed 100mm object which came out not 100mm but 99.85mm (.15mm smaller). You need to set X steps to 100 * 100 / 99.85 = 100.15, so use "M92 X100.15". Put it anywhere in starting gcode script.
Re: Prints slightly small
Well, one is waiting for me when I get home...
Put it anywhere in starting gcode script.
So this is something I will need to inject into every gcode script? Via Slic3r?
Call me crazy but isn't the this what the calibration is for? I don't remember seeing dimensional calibration in the kit assembly, or the manual.
Re: Prints slightly small
I don't remember seeing dimensional calibration in the kit assembly, or the manual.
That's OK because it is not there. 😉
In perfect world calculated steps/mm should be accurate enough. Those people living in real world have to calibrate the printer.
On the other hand, having correct constants placed in starting gcode script eliminates the need of restoring them into eeprom every time you upgrade the firmware.
Re: Prints slightly small
Whoa... ok game on
But in fairness, I guess they expect that if you are building your own printer, you are one hardcore maker and should know these things. I am still learning.
So just to recap..
Z Calibration - Make sure the you don't drive the hot head into the bed, built in and vars are saved to eeprom
XYX Calibration - Make sure your bed isn't bumpy or dippy or skewed and you don't drive your hot head into the bed, built in and vars are saved to eeprom
Dimensional Calibration - Make sure your prints are dimensionally accurate so you can print useful things, NOT built in and vars are saved to gcode prefix script
Any other surprise calibrations I should know about 😉
Re: Prints slightly small
First display current value using M93
The M93 doesn't seem to return anything...
Send: M93
Recv: ok
What am I doing wrong?
Re: Prints slightly small
http://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit
this doesn't seem to display anything either... could it be displaying to the LCD rather than the terminal? I am not physically by the printer right now..
Re: Prints slightly small
ok! With some hacking I was able to dump the eeprom
Send: M503
Recv: echo:Steps per unit:
Recv: echo: M92 X100.00 Y100.00 Z400.00 E161.30
Recv: echo:Maximum feedrates (mm/s):
Recv: echo: M203 X500.00 Y500.00 Z12.00 E120.00
Recv: echo:Maximum Acceleration (mm/s2):
Recv: echo: M201 X9000 Y9000 Z500 E10000
Recv: echo:Acceleration: S=acceleration, T=retract acceleration
Recv: echo: M204 S1500.00 T1500.00
Recv: echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)
Recv: echo: M205 S0.00 T0.00 B20000 X10.00 Y10.00 Z0.20 E2.50
Recv: echo:Home offset (mm):
Recv: echo: M206 X0.00 Y0.00 Z0.00
Recv: echo:PID settings:
Recv: echo: M301 P40.93 I4.88 D86.08
Recv: echo:Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)
Recv: echo: M207 S3.00 F2700.00 Z0.00
Recv: echo:Recover: S=Extra length (mm) F:Speed (mm/m)
Recv: echo: M208 S0.00 F480.00
Recv: echo:Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries
Recv: echo: M209 S0
Recv: echo:Filament settings: Disabled
Recv: ok
So my M92 metrics look pretty even. So before I hack my M92, two questions:
1. Is it possible to screw this up, like the Z numbers, and plow my hothead into my bed?
2. Won't changes these numbers only fix prints of the particular size? I.e., if I tweak them for this 100mm star, doesn't that mean the star will print great but things bigger than 100mm will be.. well bigger.. and things smaller than 100mm will be undersized? The M92 is your stepper ratio right?
Re: Prints slightly small
1. Is it possible to screw this up, like the Z numbers, and plow my hothead into my bed?
2. Won't changes these numbers only fix prints of the particular size? I.e., if I tweak them for this 100mm star, doesn't that mean the star will print great but things bigger than 100mm will be.. well bigger.. and things smaller than 100mm will be undersized? The M92 is your stepper ratio right?
1. No, unless you set totally unrealistic values. Anything around default values, let's say +-10%, will only make prints larger/smaller.
2. Yes, those values are ratio-like. Any changes in them will proportionally change all dimensions in particular axis.
Re: Prints slightly small
The M93 doesn't seem to return anything...
Send: M93
Recv: ok
I didn't know that, sorry. I never used that command since I looked for default values in source code every time. Fortunately you managed to find out, well done.
Re: Prints slightly small
I didn't know that, sorry. I never used that command since I looked for default values in source code every time.
Yeah I did that too eventually
https://github.com/prusa3d/Prusa-Firmware/blob/ea22febb42647e91961b7eb29a0278671afc2afb/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h#L27
I really wish at least the X Y dimensional calibration was done with feedback from the XYZ calibration, it seems like it could be done. The probe knows where it is on the bed, the distance between the points is known.
Re: Prints slightly small
Yes, those values are ratio-like. Any changes in them will proportionally change all dimensions in particular axis.
I have been thinking about this....
http://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit
Allows programming of steps per unit (usually mm) for motor drives.
Steps per mm... so for Y, what this means is it takes 100 steps to move the the bed by 1mm. My printer, for whatever reason (prob belt tightness) needs more steps to move 1mm. So if change this value, everything grows at this axis, not just things that are 100mm. Same goes for every other axis.
Also, I don't think it matters where it goes in the gcode. Mesh bed leveling (prob) uses steps, not absolute distance, to do it's thing. Only G codes that reference distance will use your M92 values. These seem to be using distance, not steps:
G1 Y-3.0 F1000.0 ; go outside pritn area
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line
So they will be affected by your M92 adjustments.