Distorsion MAP in cartesian Prusa I3 Steel
Hi I have been several days reading everythings about bed leveling (G32 commands).
I have trammed my bed with a dial indicator in 4 points. So I think G32 is not for me. But in order to get better bonding in my printer and using all the bed G33 could be a great feature. X axis prusa have 0,2mm bending in center with respect to edges.
Now I want to do a resume in order to know if my approach to get Distorsion Map working is right or wrong.
1) Its mandatory to use Zmax for homing Z. So I would like can avoid this with the next recipe. I can´t wait until Zmax in hitted a lot of time:
a) #define ALWAYS_CHECK_ENDSTOPS 0
b) Definitions of limit switches ( Xmin,Ymin & Zmin )
#define ENDSTOP_PULLUP_X_MIN true
#define ENDSTOP_X_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_X true
#define ENDSTOP_PULLUP_Y_MIN true
#define ENDSTOP_Y_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_Y true
#define ENDSTOP_PULLUP_Z_MIN true
#define ENDSTOP_Z_MIN_INVERTING true
#define ENDSTOP_X_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_X true
#define ENDSTOP_PULLUP_Y_MIN true
#define ENDSTOP_Y_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_Y true
#define ENDSTOP_PULLUP_Z_MIN true
#define ENDSTOP_Z_MIN_INVERTING true
c) Probe definition
#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 1
#define Z_PROBE_BED_DISTANCE 10
#define Z_PROBE_PIN ORIG_Z_MIN_PIN
#define Z_PROBE_PULLUP 1
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET -28.14
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_SWITCHING_DISTANCE 3
#define Z_PROBE_REPETITIONS 2
#define Z_PROBE_HEIGHT 3.8
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define Z_PROBE_REQUIRES_HEATING 0
#define Z_PROBE_MIN_TEMPERATURE 150
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
#define BED_LEVELING_METHOD 1
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
So I am sharing pin Z_min and Pin Z_probe, beacause both are the same. With this configuration I can put in
#define Z_PROBE_START_SCRIPT "G28\n G1 Z6,2\n G92 Z10\n "
I have already Z probe in 10, 3,8 offset when probe it´s hitted +6,2, and later I make a new reference Z axiz with G92.
Let´s say I am triying to do an Z axis calibartion.
It´s ok this approach ?
Now If it´s correct , I will invoke the command G33 S1 ( in order to store in eeprom).
And finally In the start script of my gcode I will put { G28
M323 S1 }
If everything is OK I woul be printing with bump map feature until 1 mm layer.
Do you think that this workflow should work ?
Thanks in advance and sorry for english
Comments
trough it so it adjusts z for every position according to your bed rotation.
Com::printF(PSTR("G33 X"),x,2);
Com::printF(PSTR(" Y"),y,2);
Com::printFLN(PSTR(" Z"),z,3);
}
}
}
to create the required script as output. In host you then just copy the log part and save it as script.
2) DRV8825 needs 1.9us high/low signals. With AVR boards I think that is no problem to have delays 0 and double step delay 1 or 2. On due based boards you need at least 1 to catch all signals.
3) Babystepping is for correcting on the fly if overall start height is wrong. It has no influence on bump correction. It just moves z up/down without telling anyone it did.