Weird first layer inconsistency and probe repeatability issue



  • Hi all, I'm trying to set up a custom CoreXY that runs a Precision Piezo for Z homing and probing on the latest RRF2.05 release.

    The issue is that my first layer is inconsistent.
    The symptoms are that a probe repeatability macro in the same X and Y position shows the probe to be in line with the manufacturer's documentation (st. dev. of about 7 microns) but when I run a probe repeatability macro in different X and Y positions across the print volume I get st. dev of about 330 microns. The trigger heights on my repeatability macros match the trigger heights recorded in my height map. Turning mesh compensation on and off (G29 S1/G29 S2) has no effect on what I described above but I can visually confirm that when mesh compensation is on my Z axis moves up and down.

    I'm out of ideas what it might be since my probe appears repeatable enough.

    Best


  • Moderator

    The Piezo is a contact probe, so the bed has to be stiff enough that when the nozzle touches the bed it can register in the same way. It sounds like your bed may not be well supported or large enough to have move give to it farther away from the mounting bolts.

    That's my theory based on your description anyway. Without seeing more about your printer and setup, that's all I've got.



  • The machine is something I cobbled together during lockdown because I was itching to build something and was a great excuse to use up the remaining spools I had lying around as well as a bunch of components. The concept is an amalgamation of the V-King and RailCore printers.

    I use Mellow's take on Gates pulleys, idlers, and belt on the X and Y and a triple leadscrew with anti-backlash delrin nuts setup on Z joined by a closed loop belt with a single stepper. As a result of the triple Z, the build plate is very stable and when I ran a probe compensation macro on the "least supported" corners I get a st.dev. of 7 and 4 microns in the far left and far right corners, respectively. As I don't have a more appropriate bed surface at this time I run a reduced build size on a piece of glass with a sheet of builtak, secured by clamps.

    Here's a LINK to a couple of pictures. Please excuse the color scheme and wire management.



  • @equanimity8 guessing you've done this, but make sure your nozzle is clean before probing. I have to manually pull off the excess cold ooze before starting a print. I then heat it to 130C so any remaining filament on the nozzle is soft, then do a few test probes to flatten any remaining, before moving to the centre of the bed for the actual Z home



  • Thanks for mentioning that and, indeed, the nozzle is clean. Further, I've done tests at room temp, at 130C, and at 220C and there is no difference in output besides what is expected due to thermal expansion.



  • @equanimity8 hmm... now you've got me stumped.

    Can you describe how it is inconsistent? As in layer height varies across the print, or one print is high whilst the next is low?

    Have you tried doing the paper test to find the z-offset at different parts of the bed? That might show if there are issues there.

    Random thought dump time (apologies if you've already covered these....) Any chance the z axis is losing position/skipping steps? Are you using 256u stepping or 16 with interpolation? What are your z accel/jerk/current? Do you change these during homing? (And are you changing them back?) I had issues where I lost steps when dropping the current but not the acceleration/speed. Have you accidentally set an XY offset on your z-probe?



  • Repeatability is inconsistent in the sense that when I probe a single point I get excellent st. dev. (usually around 5-7 microns) but when I probe multiple points the st. dev. shoots up to about 300 microns. I realise that my bed isn't perfectly flat since I've used 3d printed brackets that aren't as rigid as blind joints can be but mesh compensation is supposed to correct for that, right? I have inspected the motion system for any sort of mechanical irregularity or backlash but nothing suggests that it could produce an error of that magnitude. As a result, when I print a bed level test for the entire size of the bed I get nice adhesion on the tracks in the middle but overextrusion in the corners.

    To answer the point that you mentioned, paper test shows that mesh compensation does something but the gap in the far right corner is smaller than the gap in the close left corner; z axis doesn't seem to skip steps or bind as it runs smoothly and quietly, I ran the bed fully up and down and tested the offset between the nozzle with a piece of paper and it's fine, I also backed the current just a bit so the motor doesn't get hot as it did before; I use 16 microsteps with interpolation; my jerk/acc is 1/250 mm/min and current is 1100mA@1.8A motor; I don't change these during homing or similar; there is no XY offset on the probe, only Z-1.5, otherwise the traks of my first layer don't adhere well to each other.

    I've been bogged down on that for some time now and I really hope that I'm not overlooking something obvious...


  • Moderator

    Post your M558 and G31 lines. Or full config and homeall for good measure.



  • Here is config.g

    ; General preferences
    G90                            ; Send absolute coordinates...
    M83                            ; ...but relative extruder moves
    
    M667 S1                        ; Select CoreXY mode
    
    ; Network
    M550 PPrinter Extrusions	;machine name
    M552 S1				;start wifi module
    
    ; Drives
    M569 P0 S1                     ; Drive 0 goes forwards
    M569 P1 S1                     ; Drive 1 goes forwards
    M569 P2 S0                     ; Drive 2 goes forwards
    M569 P3 S1                     ; Drive 3 goes forwards
    M350 X16 Y16 Z16 E16 I1        ; Configure microstepping with interpolation
    M92 X80 Y80 Z2133.33 E456         ; Set steps per mm
    M566 X900 Y900 Z1 E120        ; Set maximum instantaneous speed changes (mm/min)
    M203 X9000 Y9000 Z720 E1200    ; Set maximum speeds (mm/min)
    M201 X500 Y500 Z250 E250        ; 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 Z170 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.15 P600
    
    ; Heaters
    M140 H-1                       ; Disable heated bed
    M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1
    M143 H1 S280                   ; Set temperature limit for heater 1 to 280C
    
    ; Fans
    M106 P0 H-1			; set fan 1 to be gcode controlled
    M106 P2 S1 I0 T45 H1            ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off
    
    ; Tools
    M563 P0 D0 H1                  ; 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
    

    ...and homeall.g

    ;Home X and Y
    G91                     	; relative positioning
    G1 Z5 F420 S2        		; Lower bed 5mm to ensure it is below the switch trigger height
    G1 S1 X-375 Y-305 F600   	; course home X or Y
    G1 S1 X-375 F600              	; course home X
    G1 S1 Y-305 F600              	; course home Y
    G1 X5 Y5 F600             	; move away from the endstops
    G1 S1 X-10 F200           	; fine home X
    G1 S1 Y-10 F200               	; fine home Y
    G1 X5 Y5 F600  			; go to origin
    
    ;Home Z
    G90              ; absolute positioning
    G1 X30 Y30 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
    

  • Moderator

    @equanimity8 said in Weird first layer inconsistency and probe repeatability issue:

    M558 P8 H10 I1 R1 F600 X0 Y0 Z1

    X0 Y0 Z1 has been deprecated for a while. So you can remove that. Not that it would have an impact here I don't think.

    You're also missing a T parameter for travel speed between points. Usually T6000. Also probably isn't an issue here.

    You may want to consider adding an A parameter to increase the number of probes carried out until 2 match within a tolerance. A10 for example. Tolerance is defined with S. This can help reject out of spec probe results.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type

    You can also try lowering the G31 P value a bit to make the trigger sensitivity a bit lower. 400-500 maybe.

    Your dive speed looks ok.



  • @equanimity8 You're z-jerk seems quite low. I might be wrong, but by my maths, if you're probing at 600mm/s, the bed won't stop until 0.2mm after the probe is triggered and the duet responded. Just wondering if that means you're hitting the bed a bit hard and it's upsetting things?

    Increased J zerk might also make the mesh compensation work better? I'm wondering if that is affecting the XY motion nearer the edges leading to inconsistent extrusion? I might be talking out of my **** though...



  • Thanks for the suggestions. I will implement them and report back in a day or two when I get back to the printer.


Log in to reply