Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
anon4321

I think the instructions for UM Original leveling are wrong

Recommended Posts

Looking at the gcode generated when using the leveling wizard, the typical instructions and common point that the "firmware assumes 0.1 mm" appear to be wrong!!!!

The gcode homes all axes and then positions the extruder at the ZERO height at each corner during leveling. THEREFORE THERE SHOULD BE NO SPACE BETWEEN THE BED AND THE TIP.

Then when printing the calibration test square, Z is set to 0.3 mm and performs the test.

Z0 means Z0. It is not the thickness of a piece of paper.

Therefore, I believe the following is true:

Do NOT use a piece of paper when leveling.

The firmware makes NO adjustment or assumptions

If you measure the height of the test square, it should be 0.3mm

The log of the leveling wizard is below but immediately below is the output of the M501 command and notice the home offset settings in the firmware:

I added comments starting with >>>>>

Send: M501

Recv: echo:Hardcoded Default Settings Loaded

Recv: echo:Steps per unit:

Recv: echo: M92 X78.74 Y78.74 Z533.33 E836.00

Recv: echo:Maximum feedrates (mm/s):

Recv: echo: M203 X500.00 Y500.00 Z5.00 E25.00

Recv: echo:Maximum Acceleration (mm/s2):

Recv: echo: M201 X9000 Y9000 Z100 E10000

Recv: echo:Acceleration: S=acceleration, T=retract acceleration

Recv: echo: M204 S4000.00 T3000.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 X20.00 Z0.40 E5.00

>>>>>

Recv: echo:Home offset (mm):

Recv: echo: M206 X0.00 Y0.00 Z0.00

>>>>>

Recv: echo:PID settings:

Recv: echo: M301 P22.20 I1.08 D114.00

 

Here is the gcode so others can validate this.

>>>>> <snip baud rate detection and idle testing

Log: Send: M105

Log: Recv: ok T:36.9 /0.0 B:25.0 /0.0 T0:36.9 /0.0 @:0 B@:0

Log: Baudrate test ok: 9

Log: Send: M105

Log: Recv: ok T:36.9 /0.0 B:25.0 /0.0 T0:36.9 /0.0 @:0 B@:0

Log: Send: M999

Log: Changing monitoring state from 'Detecting baudrate' to 'Operational'

Log: Send: M105

>>>>> Home all axes and since there is no home offset in the firmware, we are at 0,0,0

Log: Send: G28

Log: Recv: Resend: 1

Log: Recv: ok

Log: Recv: ok

Log: Recv: echo:Unknown command: ""

Log: Recv: ok

Log: Recv: ok

Log: Send: M105 T0

Log: Recv: ok T:36.1 /0.0 B:25.0 /0.0 T0:36.1 /0.0 @:0 B@:0

>>>>> Go to Z3

Log: Send: G1 Z3 F3000

>>>>> Go to back left

Log: Send: G1 X0 Y205 F9000

>>>>> Go to Z0 at back left

Log: Send: G1 Z0 F3000

Log: Send: M400

Log: Recv: ok

Log: Recv: ok

Log: Recv: ok

Log: Send: M105 T0

Log: Recv: ok

Log: Recv: ok T:37.6 /0.0 B:25.0 /0.0 T0:37.6 /0.0 @:0 B@:0

>>>>> Go to Z3

Log: Send: G1 Z3 F3000

>>>>> Go to back right

Log: Send: G1 X200 Y180 F9000

>>>>> Go to Z0 at back right

Log: Send: G1 Z0 F3000

Log: Send: M400

Log: Recv: ok

Log: Recv: ok

Log: Recv: ok

Log: Send: M105 T0

Log: Recv: ok

Log: Recv: echo:endstops hit: Z:0.01

Log: Recv: ok T:39.1 /0.0 B:25.0 /0.0 T0:39.1 /0.0 @:0 B@:0

>>>>> Go to Z3

Log: Send: G1 Z3 F3000

>>>>> Go to front right

Log: Send: G1 X200 Y20 F9000

>>>>> Go to Z0 at front right

Log: Send: G1 Z0 F3000

Log: Send: M400

Log: Recv: ok

Log: Recv: ok

Log: Recv: ok

Log: Send: M105 T0

Log: Recv: ok

Log: Recv: echo:endstops hit: Z:0.01

Log: Recv: ok T:37.2 /0.0 B:25.0 /0.0 T0:37.2 /0.0 @:0 B@:0

>>>>> Go to Z15

Log: Send: G1 Z15 F3000

>>>>> Heat up extruder

Log: Send: M104 S220

>>>>> Zero XY axes, still at Z15 -

Log: Send: G1 X0 Y0 F9000

Log: Recv: ok

Log: Recv: ok

Log: Recv: ok

>>>>> <snip>

Log: Send: M105 T0

Log: Recv: ok T:224.0 /220.0 B:24.4 /0.0 T0:224.0 /220.0 @:0 B@:0

Log: Changing monitoring state from 'Operational' to 'Printing'

>>>>> Go to Z2

Log: Send: N0G1 Z2 F3000*37

>>>>> Zero extruder length

Log: Send: N1G92 E0*102

>>>>> Go to X5,Y5

Log: Send: N2G1 X5 Y5 F9000*100

>>>>> Go to Z0.3 !!!!! NOTE no adjustment !!!!!!

Log: Send: N3G1 Z0.3 F3000*57

Log: Recv: Error:Line Number is not Last Line Number+1, Last Line: 0

>>>>> Due to error, resend some commands

Log: Recv: Resend: 1

Log: Recv: ok

>>>>> Zero extruder length

Log: Send: N1G92 E0*102

Log: Recv: ok

>>>>> Go to X5,Y5

Log: Send: N2G1 X5 Y5 F9000*100

Log: Recv: ok

>>>>> Go to Z0.3 !!!!! NOTE no adjustment !!!!!!

Log: Send: N3G1 Z0.3 F3000*57

Log: Recv: ok

>>>>> Feed 5mm of filament

Log: Send: N4G1 E5.000000 F2400*18

Log: Recv: ok

>>>>> Now print the squares !!!!! NOTE that Z is still 0.3mm !!!!!

Log: Send: N5G1 X5.000000 Y200.000000 E8.668059 F3000*25

Log: Recv: ok

Log: Send: N6G1 X200.000000 Y200.000000 E12.336117 F3000*35

Log: Recv: ok

Log: Send: N7G1 X200.000000 Y5.000000 E16.004176 F3000*36

Log: Recv: ok

Log: Send: N8G1 X5.000000 Y5.000000 E19.672234 F3000*33

Log: Recv: ok

Log: Send: N9G1 X5.400000 Y199.600000 E23.325244 F3000*47

Log: Recv: ok

Log: Send: N10G1 X199.600000 Y199.600000 E26.978254 F3000*23

Log: Recv: ok

Log: Send: N11G1 X199.600000 Y5.400000 E30.631264 F3000*22

Log: Recv: ok

Log: Send: N12G1 X5.400000 Y5.400000 E34.284274 F3000*28

Log: Recv: ok

Log: Send: N13G1 X5.800000 Y199.200000 E37.922236 F3000*17

Log: Recv: ok

Log: Send: N14G1 X199.200000 Y199.200000 E41.560198 F3000*20

Log: Recv: ok

Log: Send: N15G1 X199.200000 Y5.800000 E45.198159 F3000*17

Log: Recv: ok

Log: Send: N16G1 X5.800000 Y5.800000 E48.836121 F3000*19

Log: Recv: ok

Log: Send: N17M400*49

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Communication timeout during printing, forcing a line

Log: Send: M105 T0

Log: Recv: ok

Log: Changing monitoring state from 'Printing' to 'Operational'

Log: Send: G1 Z15 F3000

Log: Send: G92 E0

Log: Send: G1 E-10 F2400

Log: Send: M104 S0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok T:217.9 /220.0 B:24.5 /0.0 T0:217.9 /220.0 @:53 B@:0

Log: Recv: ok

Log: Recv: ok

Log: Recv: ok

Log: Send: M105 T0

Log: Recv: ok T:217.9 /0.0 B:24.4 /0.0 T0:217.9 /0.0 @:0 B@:0

Log: Send: M105 T0

Log: Recv: ok T:218.0 /0.0 B:24.4 /0.0 T0:218.0 /0.0 @:0 B@:0

Log: Send: M105 T0

Log: Recv: ok T:217.7 /0.0 B:24.4 /0.0 T0:217.7 /0.0 @:0 B@:0

Exception in thread Thread-7:

Traceback (most recent call last):

File "C:\Program Files (x86)\Cura_14.04-RC1\python\lib\threading.py", line 552, in __bootstrap_inner

self.run()

File "C:\Program Files (x86)\Cura_14.04-RC1\python\lib\threading.py", line 505, in run

self.__target(*self.__args, **self.__kwargs)

File "Cura\util\machineCom.py", line 464, in _monitor

self.sendCommand("M105 T%d" % (self._temperatureRequestExtruder))

File "Cura\util\machineCom.py", line 608, in sendCommand

self._sendCommand(cmd)

File "Cura\util\machineCom.py", line 558, in _sendCommand

self._log('Send: %s' % (cmd))

File "Cura\util\machineCom.py", line 501, in _log

self._callback.mcLog(message)

File "C:\Program Files (x86)\Cura_14.04-RC1\python\lib\site-packages\wx-2.8-msw-unicode\wx\_core.py", line 14610, in __getattr__

raise PyDeadObjectError(self.attrStr % self._name)

PyDeadObjectError: The C++ part of the bedLevelWizardMain object has been deleted, attribute access no longer allowed.

Exception wx._core.PyDeadObjectError: PyDeadObjectError('The C++ part of the bedLevelWizardMain object has been deleted, attribute access no longer allowed.',) in <bound method MachineCom.__del__ of <Cura.util.machineCom.MachineCom object at 0x051C4390>> ignored

Closing down

 

  • Like 1

Share this post


Link to post
Share on other sites

ORLY paper only for the UM2

Then http://wiki.ultimaker.com/Calibrate is WRONG or at least misleading! (yes that is the correct capitalization when trying to get attention! :-P )

From:

"Now we level the bed. Before we do anything, turn on your Ultimaker. With your software, or with your UltiController, move the printhead to the home position. What is the distance between your nozzle and the build platform? There should be as much room as the thickness of a regular piece of paper. About 0.1mm. "

Now, the remaining instructions do seem to have you level and adjust to 0 gap but the above is misleading at best.

It should really be rewritten to say something to the effect of: For this leveling process, there should be much room as the thickness of a regular piece of paper. About 0.1mm. However, upon completion of this process is there will be NO gap between the bed and nozzle in the home position when properly leveled and adjusted".

 

Share this post


Link to post
Share on other sites

Now, the remaining instructions do seem to have you level and adjust to 0 gap but the above is misleading at best.

 

That's like saying that the instructions from IKEA are misleading because your table is lying half assembled on the floor since you decided to stop reading the instructions half way...

 

Share this post


Link to post
Share on other sites

Your analogy would be valid if you added a forum and a second product where a half assembled on the floor is a valid end state.

Here the problem is if you read these forums, you see one product leveled using a piece of paper and then go to the instructions for another product that starts out the leveling instructions with something that could be misread as saying you do the same thing using a piece of paper.

A reasonable person could conclude that two products from the same manufacturer with the similar purpose have the same calibration procedures.

Another complicating factor is that the calibration instructions are separate from the assembly instructions and don't appeared to be referenced by the assembly instructions.

Thus it would be reasonable to end up searching the forums for this information, finding the instructions for the other product, assuming they apply to the product they purchased and have that further reinforced by the instructions are found later that start off seeming to say that the nozzle distance should be about a piece of paper away from the bed.

Even more so when you consider it takes WEEKS to get the product so people often access the forums to get up to speed while waiting.

Or I guess I'm just stupid and it can't possibly be due to unclear instructions and communications via the forums.

 

Share this post


Link to post
Share on other sites

For UM Original:

If your nozzle is cold I still recommend using paper as it gets thicker when it heats up (thermal expansion).

If your nozzle is hot I recommend turning the 4 screws 1/8 turn to compensate for the paper thickness.

@anon4321 - I added "UM Original" to your title to clarify. Also I changed the all caps as it seemed a little too emotional.

For people new to the printer, using paper gets you "close enough" with the default .3mm first layer in Cura. As you get more experienced you slowly learn the more intricate details like the fact that you have to worry if your nozzle is hot or not, if there is a tiny bit of plastic on the bottom of the nozzle, if your heated bed is hot or not (if you have one) and you have to know to compensate for all of those things plus the thickness of the paper.

 

Share this post


Link to post
Share on other sites

BUT I AM EMOTIONAL !!!! j/k no problem. I was largely wrong anyway as others pointed out that the remaining instructions correctly cause a 0 distance to be used.

I stole the gcode from the leveling wizard and print the big square. Then measure it with calibers and adjust so that it is like .25mm (for first layer squish for bed adherence and a tiny amount of shrinkage) and adjust a necessary.

Then I know when the gcode calls for .3mm first layer, it is very near .3mm regardless of the actual tip to bed plus all the thermal expansion and whatnot.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Our picks

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!