Welcome! Log In Create A New Profile

Advanced

Need help w/Skew Correction in Marlin 1.1.7

Posted by nuroo 
Need help w/Skew Correction in Marlin 1.1.7
December 22, 2017 09:10PM
Does skew correction only correct during delta calibration / bed leveling or also correct skew when printing parts?


I dont know how to activate this feature.
In console:
M852
Outputs:
Skew Factor XY: 0.00 XZ: 0.00 YZ: 0.00

Printer is a 3ku Delta.
bowden setup
0.4 nozzle, nozzle as electric contact - connect to Zmin
heated bed.

It prints nicely with 1.1.7. I just havent figured out how to enable this feature.


Stock Code:
/**
 * Bed Skew Compensation
 *
 * This feature corrects for misalignment in the XYZ axes.
 *
 * Take the following steps to get the bed skew in the XY plane:
 *  1. Print a test square (e.g., [www.thingiverse.com])
 *  2. For XY_DIAG_AC measure the diagonal A to C
 *  3. For XY_DIAG_BD measure the diagonal B to D
 *  4. For XY_SIDE_AD measure the edge A to D
 *
 * Marlin automatically computes skew factors from these measurements.
 * Skew factors may also be computed and set manually:
 *
 *  - Compute AB     : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
 *  - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
 *
 * If desired, follow the same procedure for XZ and YZ.
 * Use these diagrams for reference:
 *
 *    Y                     Z                     Z
 *    ^     B-------C       ^     B-------C       ^     B-------C
 *    |    /       /        |    /       /        |    /       /
 *    |   /       /         |   /       /         |   /       /
 *    |  A-------D          |  A-------D          |  A-------D
 *    +-------------->X     +-------------->X     +-------------->Y
 *     XY_SKEW_FACTOR        XZ_SKEW_FACTOR        YZ_SKEW_FACTOR
 */
//#define SKEW_CORRECTION

#if ENABLED(SKEW_CORRECTION)
  // Input all length measurements here:
  #define XY_DIAG_AC 282.8427124746
  #define XY_DIAG_BD 282.8427124746
  #define XY_SIDE_AD 200

  // Or, set the default skew factors directly here
  // to override the above measurements:
  #define XY_SKEW_FACTOR 0.0

  //#define SKEW_CORRECTION_FOR_Z
  #if ENABLED(SKEW_CORRECTION_FOR_Z)
    #define XZ_DIAG_AC 282.8427124746
    #define XZ_DIAG_BD 282.8427124746
    #define YZ_DIAG_AC 282.8427124746
    #define YZ_DIAG_BD 282.8427124746
    #define YZ_SIDE_AD 200
    #define XZ_SKEW_FACTOR 0.0
    #define YZ_SKEW_FACTOR 0.0
  #endif

  // Enable this option for M852 to set skew at runtime
  //#define SKEW_CORRECTION_GCODE
#endif


With my measured values:
/**
 * Bed Skew Compensation
 *
 * This feature corrects for misalignment in the XYZ axes.
 *
 * Take the following steps to get the bed skew in the XY plane:
 *  1. Print a test square (e.g., [www.thingiverse.com])
 *  2. For XY_DIAG_AC measure the diagonal A to C
 *  3. For XY_DIAG_BD measure the diagonal B to D
 *  4. For XY_SIDE_AD measure the edge A to D
 *
 * Marlin automatically computes skew factors from these measurements.
 * Skew factors may also be computed and set manually:
 *
 *  - Compute AB     : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
 *  - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
 *
 * If desired, follow the same procedure for XZ and YZ.
 * Use these diagrams for reference:
 *
 *    Y                     Z                     Z
 *    ^     B-------C       ^     B-------C       ^     B-------C
 *    |    /       /        |    /       /        |    /       /
 *    |   /       /         |   /       /         |   /       /
 *    |  A-------D          |  A-------D          |  A-------D
 *    +-------------->X     +-------------->X     +-------------->Y
 *     XY_SKEW_FACTOR        XZ_SKEW_FACTOR        YZ_SKEW_FACTOR
 */
#define SKEW_CORRECTION

#if ENABLED(SKEW_CORRECTION)
  // Input all length measurements here:
  #define XY_DIAG_AC 141.03
  #define XY_DIAG_BD 141.56
  #define XY_SIDE_AD 100.89

  // Or, set the default skew factors directly here
  // to override the above measurements:
  #define XY_SKEW_FACTOR 0.0

  #define SKEW_CORRECTION_FOR_Z
  #if ENABLED(SKEW_CORRECTION_FOR_Z)
    #define XZ_DIAG_AC 140.64
    #define XZ_DIAG_BD 140.49
    #define YZ_DIAG_AC 139.79
    #define YZ_DIAG_BD 139.91
    #define YZ_SIDE_AD 99.23
    #define XZ_SKEW_FACTOR 0.0
    #define YZ_SKEW_FACTOR 0.0
  #endif

  // Enable this option for M852 to set skew at runtime
#define SKEW_CORRECTION_GCODE
#endif

Also tried:
#define SKEW_CORRECTION

#if ENABLED(SKEW_CORRECTION)
  // Input all length measurements here:
  #define XY_DIAG_AC 141.03
  #define XY_DIAG_BD 141.56
  #define XY_SIDE_AD 100.89

  // Or, set the default skew factors directly here
  // to override the above measurements:
  //#define XY_SKEW_FACTOR 0.0

  #define SKEW_CORRECTION_FOR_Z
  #if ENABLED(SKEW_CORRECTION_FOR_Z)
    #define XZ_DIAG_AC 140.64
    #define XZ_DIAG_BD 140.49
    #define YZ_DIAG_AC 139.79
    #define YZ_DIAG_BD 139.91
    #define YZ_SIDE_AD 99.23
    //#define XZ_SKEW_FACTOR 0.0
    //#define YZ_SKEW_FACTOR 0.0
  #endif

  // Enable this option for M852 to set skew at runtime
#define SKEW_CORRECTION_GCODE
#endif

My process between uploading or upgrading firmwares:
G29 P0;
M502
M500
M140 S60 ;
M104 S160 ;

G28
M665 B70 ; (error with g33 unless this command 1st)
G33 P3 V1 ;
M500 ;

G28;
G29 P1;
G29 S1;
G29 A;
M500;

Output from M501:
Recv: echo: V47 stored settings retrieved (614 bytes; crc 20025)
Recv: Unified Bed Leveling System v1.01 active.
Recv: 
Recv: Unified Bed Leveling initialized.
Recv: 
Recv: Mesh loaded from slot 1
Recv: Mesh 1 loaded from storage.
Recv: echo:  G21    ; Units in mm
Recv: echo:  M149 C ; Units in Celsius
Recv: 
Recv: echo: Filament settings: Disabled
Recv: echo:  M200 D1.75
Recv: echo:  M200 D0
Recv: echo: Steps per unit:
Recv: echo:  M92 X80.00 Y80.00 Z80.00 E110.34
Recv: echo: Maximum feedrates (units/s):
Recv: echo:  M203 X300.00 Y300.00 Z300.00 E200.00
Recv: echo: Maximum Acceleration (units/s2):
Recv: echo:  M201 X4000 Y4000 Z4000 E3000
Recv: echo: Acceleration (units/s2): P R T
Recv: echo:  M204 P1000.00 R2000.00 T3000.00
Recv: echo: Advanced: S T B X Z E
Recv: echo:  M205 S0.00 T0.00 B20000 X20.00 Y20.00 Z20.00 E5.00
Recv: echo: Unified Bed Leveling:
Recv: echo:echo:  M420 S1
Recv: 
Recv: Unified Bed Leveling System v1.01 active.
Recv: 
Recv: Active Mesh Slot: 1
Recv: EEPROM can hold 8 meshes.
Recv: 
Recv: echo: Endstop adjustment:
Recv: echo:  M666 X0.00 Y-1.04 Z-1.32
Recv: echo: Delta settings: L R H S B XYZ
Recv: echo:  M665 L228.00 R108.59 H296.73 S160.00 B70.00 X-0.47 Y0.32 Z0.16
Recv: echo: Material heatup parameters:
Recv: echo:  M145 S0 H205 B60 F255
Recv: echo:  M145 S1 H240 B100 F255
Recv: echo: PID settings:
Recv: echo:  M301 P21.04 I1.24 D89.65
Recv: echo: Z-Probe Offset (mm):
Recv: echo:  M851 Z0.30
Recv: echo: Skew Factor:
Recv: echo:  M852 I0.00 J0.00 K0.00
Recv: echo: Linear Advance:
Recv: echo:  M900 K170.00 R0.03

Edited 2 time(s). Last edit at 12/23/2017 05:48PM by nuroo.
Re: Need help w/Skew Correction in Marlin 1.1.7
December 26, 2017 09:08AM
Upgraded to v1.1.8. still can't see skew correction active.
Now using:
**Initialize eeprom;
M502
M501
M852 <----- Correct spot???
M500

Heat bed
Heat nozzle

**Delta configuration
G28
M665 B70
G33 P3 V2 F5
//M500 Normally I'd do a save here for delta config info

**Bed leveling
G29 P1
G29 S1
G29 A
M500

** edit mesh (multiplie iterations) just learned this weekend
G26 B60 H205 F1.75 L0.2 S0.4
G29 P4
G29 S

The aboves works for me as far as getting printer up and running.
I've added M852 right after eeprom initialization??? Correct?? I'm still getting a 0.0 skews as B4.

Edited 2 time(s). Last edit at 12/27/2017 12:19PM by nuroo.
Sorry, only registered users may post in this forum.

Click here to login