Implement delta auto-calibration and delta_height

This commit is contained in:
LVD-AC
2017-03-31 21:58:40 +02:00
committed by Scott Lahteine
parent 03bda24d19
commit 8821963873
5 changed files with 438 additions and 20 deletions

View File

@ -47,7 +47,7 @@
* 100 Version (char x4)
* 104 EEPROM Checksum (uint16_t)
*
* 106 E_STEPPERS (uint8_t)
* 106 E_STEPPERS (uint8_t)
* 107 M92 XYZE planner.axis_steps_per_mm (float x4 ... x8)
* 123 M203 XYZE planner.max_feedrate_mm_s (float x4 ... x8)
* 139 M201 XYZE planner.max_acceleration_mm_per_s2 (uint32_t x4 ... x8)
@ -300,9 +300,17 @@ void MarlinSettings::postprocess() {
EEPROM_WRITE(planner.min_segment_time);
EEPROM_WRITE(planner.max_jerk);
#if ENABLED(NO_WORKSPACE_OFFSETS)
float home_offset[XYZ] = { 0 };
const float home_offset[XYZ] = { 0 };
#endif
#if ENABLED(DELTA)
dummy = 0.0;
EEPROM_WRITE(dummy);
EEPROM_WRITE(dummy);
dummy = DELTA_HEIGHT + home_offset[Z_AXIS];
EEPROM_WRITE(dummy);
#else
EEPROM_WRITE(home_offset);
#endif
EEPROM_WRITE(home_offset);
#if HOTENDS > 1
// Skip hotend 0 which must be 0
@ -488,7 +496,7 @@ void MarlinSettings::postprocess() {
EEPROM_WRITE(dummy);
}
// Save TCM2130 Configuration, and placeholder values
// Save TMC2130 Configuration, and placeholder values
uint16_t val;
#if ENABLED(HAVE_TMC2130)
#if ENABLED(X_IS_TMC2130)
@ -551,6 +559,12 @@ void MarlinSettings::postprocess() {
val = 0;
#endif
EEPROM_WRITE(val);
#if ENABLED(E4_IS_TMC2130)
val = stepperE4.getCurrent();
#else
val = 0;
#endif
EEPROM_WRITE(val);
#else
val = 0;
for (uint8_t q = 0; q < 11; ++q) EEPROM_WRITE(val);
@ -644,6 +658,12 @@ void MarlinSettings::postprocess() {
#endif
EEPROM_READ(home_offset);
#if ENABLED(DELTA)
home_offset[X_AXIS] = 0.0;
home_offset[Y_AXIS] = 0.0;
home_offset[Z_AXIS] -= DELTA_HEIGHT;
#endif
#if HOTENDS > 1
// Skip hotend 0 which must be 0
for (uint8_t e = 1; e < HOTENDS; e++)
@ -1019,6 +1039,9 @@ void MarlinSettings::reset() {
delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND;
COPY(delta_diagonal_rod_trim, drt);
COPY(delta_tower_angle_trim, dta);
#if ENABLED(DELTA)
home_offset[Z_AXIS] = 0;
#endif
#elif ENABLED(Z_DUAL_ENDSTOPS)
float z_endstop_adj =
#ifdef Z_DUAL_ENDSTOPS_ADJUSTMENT
@ -1143,7 +1166,7 @@ void MarlinSettings::reset() {
/**
* M503 - Report current settings in RAM
*
*
* Unless specifically disabled, M503 is available even without EEPROM
*/
void MarlinSettings::report(bool forReplay) {
@ -1231,7 +1254,7 @@ void MarlinSettings::reset() {
SERIAL_ECHOPAIR(" E", planner.max_jerk[E_AXIS]);
SERIAL_EOL;
#if DISABLED(NO_WORKSPACE_OFFSETS)
#if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA)
CONFIG_ECHO_START;
if (!forReplay) {
SERIAL_ECHOLNPGM("Home offset (mm)");
@ -1346,11 +1369,12 @@ void MarlinSettings::reset() {
SERIAL_EOL;
CONFIG_ECHO_START;
if (!forReplay) {
SERIAL_ECHOLNPGM("Delta settings: L=diagonal rod, R=radius, S=segments-per-second, ABC=diagonal rod trim, IJK=tower angle trim");
SERIAL_ECHOLNPGM("Delta settings: L=diagonal_rod, R=radius, H=height, S=segments_per_second, ABC=diagonal_rod_trim_tower_[123]");
CONFIG_ECHO_START;
}
SERIAL_ECHOPAIR(" M665 L", delta_diagonal_rod);
SERIAL_ECHOPAIR(" R", delta_radius);
SERIAL_ECHOPAIR(" H", DELTA_HEIGHT + home_offset[Z_AXIS]);
SERIAL_ECHOPAIR(" S", delta_segments_per_second);
SERIAL_ECHOPAIR(" A", delta_diagonal_rod_trim[A_AXIS]);
SERIAL_ECHOPAIR(" B", delta_diagonal_rod_trim[B_AXIS]);