Dual motor bed tilt-compensation only goes through the motions



  • Hi guys!

    I'm working on a CoreXY that uses piezo to home and bed level and two motors for bed tilt-compensation on RRF 2.05.1.

    The issue I face is that G32 goes through the motions but doesn't actually move the motor to compensate for misalignment. I can also verify that both visually and by looking at the height map that is produced after mesh bed compensation. The console output after G32 is :

    G32
    Leadscrew adjustments made: 0.050 -0.262, points used 2, deviation before 0.189 after 0.000
    

    My homeall.g is

    ;Home X and Y
    G91                     	; relative positioning
    G1 Z5 F420 H2        		; Lower bed 5mm to ensure it is below the switch trigger height
    M400
    M913 X50 Y50	 		; set X Y motors to 50% of their normal current for homing
    G1 H1 X-375 Y-305 F600   	; course home X or Y
    G1 H1 X-375 F600              	; course home X
    G1 H1 Y-305 F600              	; course home Y
    G1 X5 Y5 F600             	; move away from the endstops
    G1 H1 X-10 F200           	; fine home X
    G1 H1 Y-10 F200               	; fine home Y
    G1 X5 Y5 F600  			; go to origin
    M400
    M913 X100 Y100	 		; set X Y motors to 100% of their normal current
     
    ;Home Z
    G90              ; absolute positioning
    G1 X100 Y50 F600  ; go to first probe point
    G30              ; home Z by probing the bed
    G91              ; relative positioning
    G1 Z5 F420       ; lift Z relative to current position
    G90              ; absolute positioning
     
    ;Load height map
    G29 S1
    

    My bed.g is

    M561 ; clear any bed transform
    
    G28 ; home
    G30 P0 X105 Y0 Z-99999 ; probe near a leadscrew, half way along Y axis
    G30 P1 X105 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
    

    My config.g is

    ; General preferences
    G90                                     ; send absolute coordinates...
    M83                                     ; ...but relative extruder moves
    M550 P"Printer Extrusions"              ; set printer name
    M669 K1                                 ; select CoreXY mode
    
    ; Network
    M552 S1                                 ; enable network
    M586 P0 S1                              ; enable HTTP
    M586 P1 S0                              ; disable FTP
    M586 P2 S0                              ; disable Telnet
    
    ; Drives
    M569 P0 S1                              ; physical drive 0 goes forwards
    M569 P1 S1                              ; physical drive 1 goes forwards
    M569 P2 S0                              ; physical drive 2 goes backwards
    M569 P3 S1                              ; physical drive 3 goes forwards
    M569 P4 S0                              ; physical drive 4 goes backwards
    
    M584 X0 Y1 Z2:4 E3                      ; set drive mapping
    M671 X105:105 Y0:150 S5 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
    
    M350 X16 Y16 Z16 E16 I1                 ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z80 E456.00  		    ; set steps per mm
    M566 X900.00 Y900.00 Z1.00 E120.00     ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z1800.00 E1200.00 ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z250.00 E250.00     ; set accelerations (mm/s^2)
    M906 X1200 Y1200 Z1100 E1100 I30            ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                 ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                        ; set axis minima
    M208 X210 Y150 Z150 S0                  ; set axis maxima
    
    ; Endstops
    M574 X1 Y1 Z0 S0
    
    ; Z-Probe
    M558 P8 H10 I1 R1 F600 X0 Y0 Z1
    G31 X0 Y0 Z-0.25 P600
    
    ; Heaters
    M140 H-1                                ; disable heated bed
    M305 P1 T100000 B4138 R4700             ; set thermistor + ADC parameters for heater 1
    M143 H1 S280                            ; set temperature limit for heater 1 to 250C
    
    ; Fans
    M106 P0 S0 I0 F500 H-1                  ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T50               ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    
    ; Tools
    M563 P0 D0 H1 F0                        ; define tool 0
    G10 P0 X0 Y0 Z0                         ; set tool 0 axis offsets
    G10 P0 R0 S0                            ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    T0                                      ; select first tool
    

    Best!



  • @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

    M671 X105:105 Y0:150 S5 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X210 Y150 Z150 S0 ; set axis maxima

    this would mean that the leadscrews are inside the bed. that seems incorrect

    G31 X0 Y0 Z-0.25 P600

    what kind of probe is it?

    M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1

    your thermistor config is wrong. look up the correct beta value in your thermistor documentation.

    also check that you are on at least firmware 2.05.1



  • @Veti I have redacted my config.g to M671 X105:105 Y-20:170 S5 and it made no difference.

    The probe is a precision piezo.

    What makes you think my thermistor value is wrong? I printed a successful calibration cube and all readings seemed accurate. This is a freshly configured firmware, should it make a difference, but my previous setup was identical in that regard.

    I am indeed running 2.05.1.



  • @Veti said in Dual motor bed tilt-compensation only goes through the motions:

    this would mean that the leadscrews are inside the bed. that seems incorrect

    I think this depends on how the bed is supported. My understanding is that what you need to specify is the locations at which the bed pivots. In the case of a conventional prusa style bed with two lead screws either side of a bed with a subframe this will be at the leadscrew positions. But with a corexy you often have a rigid plate style bed that pivots at the support points, in which case you want to use the positions of the support points. At least I think that is how it works!



  • @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

    What makes you think my thermistor value is wrong? I printed a successful calibration cube and all readings seemed accurate.

    because 4138 is the default, and for a thermistor that has not been in use for some time.
    the dimension have nothing to do with this.

    depending on your thermistor, the actual temperature can easily be off by 20 degrees.

    M584 X0 Y1 Z2:4 E3

    is your second z really connected on the e1 and not the second z?



  • @Veti
    Thanks for clarifying. I looked up E3D's v6 documentation and they indeed specify a different value (M305 P1 B4725 C7.060000e-8).

    Yes, my second motor is connected to driver e1, no independent motor tilt-compensation would be possible otherwise.



  • @equanimity8
    M561 ; clear any bed transform
    G28 ; home

    your home load the height map again.

    remove the G29 S1 from the homeall and move that to the start of your slicer



  • @Veti
    I commented out G29 S1 and there was no change in behaviour i.e. my bed compensation mesh still shows significant tilt that should have been corrected by G32.

    Further, why would G28 load my height map again? To the best of my knowledge, it homes all axes, it doesn't execute homeall.g.



  • @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

    Further, why would G28 load my height map again? To the best of my knowledge, it homes all axes, it doesn't execute homeall.g.

    that is not true. and you can easily test this by executing G28 twice from the console.

    can you run 3 G32 in succession and post the output?

    btw where is your M557 definition for the mesh?



  • The console output of 3 consequitive G32s:

    11/1/2020, 12:09:59 PM	G32
    Leadscrew adjustments made: 0.019 -0.044, points used 2, deviation before 0.028 after 0.000
    11/1/2020, 12:09:43 PM	G32
    Leadscrew adjustments made: 0.007 -0.057, points used 2, deviation before 0.035 after 0.000
    11/1/2020, 12:09:32 PM	G32
    Leadscrew adjustments made: 0.019 -0.044, points used 2, deviation before 0.028 after 0.000
    

    I execute it from a macro, which is as follows:

    M557 X0:210 Y0:150 S30
    G29
    


  • @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

    The console output of 3 consequitive G32s:

    the output suggest its already level as those error are normally within the probes inaccuracies



  • This is a screenshot of my height map and the relevant statistics after G32 and mesh bed compensation. Should I assume that this is normal, given the capabilities of my setup and that there is no way to improve it without improving the hardware?
    1.PNG



  • @Veti said in Dual motor bed tilt-compensation only goes through the motions:

    M671 X105:105 Y0:150 S5 ;

    your leadscrews are at the middle top and bottom. it can only change an error in the y plane

    adjustments to the leadscrews can not possibly change a twist in the opposite x plane.
    you need 3 leadscrews for that



  • Yep, I though the same but I wanted to make sure after, apparently I got the initial misconception about G28. Thanks a lot for clarifying that to me! Enjoy your weekend!


Log in to reply