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 maximathis 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 ; homeyour 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?
-
@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!