D3D Automatic Bed Leveling

From Open Source Ecology
Jump to navigation Jump to search

Intro

  • D3D Marlin covers code up to calibration.
  • Code works for following the 3D printer - such as Yousef's twisted axis.
  • Initial code used - April 29 - see April 29 version of D3D Marlin.
  • Lulzbot Cura initialization file used - File:D3DLulzbotCura.ini
  • See instructable on auto bed level - [1] - it says to use G92 to implmement the z offset correction.
  • What is the difference between G92 Z-1 and M851 Z-1 and M206 Z-1?
  • Marlin_main.cpp is main code

Action

  1. Does G1 Zx shift do offset correction? [2]
  2. Start g code example - [3]
  3. Do homing before AND after G29? It says that you both should and shouldn't do this in this article - [4]
  4. M501 to check current axis offsets (M206) - [5]
  5. Disable EEPROM - it could be storing one value and never updating from print to print. [6]
  6. V Set the verbose level (0-4). Example: "G29 V3"
  7. Try Mattercontrol software [7]
  8. Check usign G1 Z0 command to see where the print will actually start printing - it should go to the first layer height set by the probe. - comment by Martin at [8]
  9. Contact Ryan Lutz at Matterhackers - see leveling troubleshooting - [9]
  10. Probe starting in the center. Find the center coordinate after zeroing. There may be weird things happening when probing is too close to edge (30mm or less) [10]
  11. As the last step in start gcode - move bed to required height, while leaving firmwar offset zero[11]:
G21; set mm units
G92 E0; reset extruder distance
G90; set absolute coordinates
G28; home all axes
G1 Z5; lower platform 5mm to clear bed in case of improper leveling
G1 X100 Y100 F3000; move extruder over bed center
M104 S195; set extruder temp to 195°C and start heating
M301 P39.04 I2.55 D149.66; Set PID for 195°C
M109 S195; wait for target extruder temp to be reached
G1 Z[first_layer_height]; Move Z to first layer height.
  1. This one also says you need to change the Z axis microsteps?? - [12]
  1. Another start gcode - [13]

M104 S[first_layer_temperature_0] ;set extruder temp and start heating G28 X0 Y0 ;home X and Y G29 ;probe bed G90; set absolute coordinates G92 E0; reset extruder distance G1 Z5 F300 ;move platform down 5mm G1 X145 Y145 F3000 ; move to back right corner

  1. Does it matter if you do G28 X0 Y0 Z0 in one line vs setting G28 Z0 in a separate line? [14]
  2. Do software endstops influence this work here?
#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.

Useful Links

  • Actual explanation, but for manual bed level - [15]

Test Procedure Logic

Find out what is happening.

At start, bed is not level. Probe gets level with G29. But the offset from bed is not known. Offset creates the initial good starting point.

So in start code - we should impose a correct offset override. The offset should not be set in firmware, as this requires a new firmware upload. Dangerous.

So let's assume that we do the correction in start g-code or initialization file of printer host.

To know that everything is happening as it should, we should test manually first.

Do G29. Then move the print head to zero height. The height should end up .1mm above bed.

If not, is there a command that can override the head height? That should be the G92. With software endstops deactivated, setting G92 Z1 should allow movement down to zero. G1 Z0 should move the Z axis down by 1 if the axis were homed at Z=1. This means we artificially insert an offset. We can find that offset at any position on the print bed.