Is this a known bug with multiple probes



  • Hi again,

    After trouble shooting the issue of using multiple probes (unable to print due to the offset always being to high) and after speaking with some others, they mentioned that it is a bug in the firmware. It seems that the mesh leveling is using the wrong offset. Its using the nozzle offset from the mechanical switch and not the offset from the inductive probe. This would explain why i can't calibrate it correctly. And currently have to turn the mesh leveling off to print.

    It was mentioned that DC42 is aware of this issue? I just thought I'd put it out there incase this wasn't the case.

    Regards,

    Rimesy


  • administrators

    If the Z=0 position determined by homing is different from the Z=0 position determined by the Z probe, then the bed height map generated by G29 will have a Z offset. The known issue is that if you then home the printer using the Z probe with bed compensation already in effect, the Z=0 position is incorrect after that. This issue is fixed in all the 2.0RC releases.



  • I really need to understand this better i think ... I have been battling improper Z height on print start - between prints since Day 1 with Duet Wifi .. and I have yet to be able to understand why my z height for first layer is wrong at the onset of every print. i now have to Baby Step into every print via a 8 perimeter "skirt" at 15mm/s in order to get z height accurate enough to print any small circles or not have huge elephant foot or poor adhesion.

    Ive always felt like one or two layer heights of offset have "carried" over by the firmware and effected mesh grid comp.

    Now to battle this - Ive added leadscrew compensation and dual z motors on separate drivers to battle any X tilt. This is an i3 MK3 based Cartesian Zaribo Mod if that matters.

    My routine now is to ...

    1. turn on printer
    2. Home All - uses BL Touch to home Z to bed ....
    3. G32 using bed.g and the Auto bed Compensation button in the DWC
    4. Repeat Step 3 until the mean error differentiation is nominal between left and right
    5. Run Mesh Grid Compensation - - to get 64 point heightmap

    Note - should I be clearing any exiting mesh grid comp before running this for the day ?
    6. Slice part
    7. Upload .gcode file
    8. Start Print ...

    Sliced files have a Start Gcode that includes ... in this order ...

    A. Clear all mesh grid compensation
    B. Home All with No Compensation
    C. Load default Heightmap.csv and Enable Mesh Grid Compensation

    This routine leaves me wondering about my New Leadscrew X tilt compensation efforts ... is that FW/software based or does it mechanically straighten out the leadscrew deviation by turning them and then theyre set - or is that done On Top of or before mesh grid comp - constantly during the entire print job?

    Any help getting me closer to a dialed in routine here would be most aprpeciated - as bay sitting my first layers with 8 permiters of baby stepping is NOT what I envisioned when I purchased a high end 32 bit board for 3D printing


  • administrators

    1. How are you homing the printer? Please post your config.g, homeall.g and homes.g files.

    2. When you display the height map in DWC, does it show a general height offset, or a height offset at the XY position at which you home Z?



  • @dc42 said in Is this a known bug with multiple probes:

    1. How are you homing the printer? Please post your config.g, homeall.g and homes.g files.

    2. When you display the height map in DWC, does it show a general height offset, or a height offset at the XY position at which you home Z?

    First off .. thanks for your reply !!!

    homeall.g

    ; homeall.g
    ; called to home all axes
    ;
    ; generated by RepRapFirmware Configuration Tool on Wed Jan 31 2018 09:50:41 GMT-0800 (Pacific Standard Time)
    M561 ; Disable any prior Mesh Bed Compensation
    G91 ; relative positioning
    G1 Z5 F6000 S2 ; lift Z relative to current position
    G1 S1 X-225 Y-225 F2400 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 X5 Y5 F1800 ; go back a few mm
    G1 S1 X-225 Y-225 F360 ; move slowly to X and Y axis endstops once more (second pass)
    G90 ; absolute positioning
    G1 X80 Y110 F6000 ; go to first bed probe point and home Z
    G30 ; home Z by probing the bed
    G1 Z5 F8000 S2 ; uncomment this line to lift the nozzle after homing

    I dont have a homes.g ? Perhaps homez.g is what was meant ...

    homez.g

    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Wed Jan 31 2018 09:50:41 GMT-0800 (Pacific Standard Time)
    G91 ; relative positioning
    G1 Z5 F6000 S2 ; lift Z relative to current position
    G90 ; absolute positioning
    G1 X80 Y110 F6000 ; go to first probe point
    G30 ; home Z by probing the bed

    ; Uncomment the following lines to lift Z after probing
    G91 ; relative positioning
    G1 Z5 S2F3000 ; lift Z relative to current position
    G90 ; absolute positioning

    Custom Start GCode in slicer: Im thinking the G28 W here is redundant - but need to confer with my prior steps before each

    ;Start GCode v1
    ;Print Area is X28 Y10 to X225 Y208
    G21 ; set units to millimeters
    G90 ; use absolute positioning
    M83 ; relative extrusion mode
    M140 S[first_layer_bed_temperature] ; set bed H0 temp,
    M104 S[first_layer_temperature] ; set Noz H1 temp
    M561 ; Disable ANY and ALL Mesg Bed Level Compensation
    G28 W ; home X / Y w/out mesh bed level
    G29 S1 ; Load and use latest heightmap for Mesh Bed Compensation
    G92 E0.0 ; reset extruder distance position
    G1 X15 Y5 Z20 F3000 ; go to Steve's Dribble Zone
    M109 S[first_layer_temperature] ; wait for extruder temp
    M190 S[first_layer_bed_temperature] ; wait for bed temp
    G1 Z0.20 F3000 ; drop to print height
    G1 X10 Y5 F3000 ; move to purge strip start position
    G1 X185 E12 F2000 ; print purge strip
    G92 E0.0 ; reset extruder distance position

    I dont know about an offset being displayed - but heres what I see - is this what info u need ?

    alt text



  • ; Configuration file for Duet WiFi (firmware version 1.21)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Wed Jan 31 2018 09:50:41 GMT-0800 (Pacific Standard Time)

    ;---------------------------
    ; General preferences
    ;---------------------------
    M111 S0 ; Debugging off
    G21 ; Work in millimeters
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    ;M669 K0 ; Set Kinematics K=0=Cartesian
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X243 Y220 Z215 S0 ; Set axis maxima
    ;M208 X-15 Y-5 Z0 S1 ; [[ BuildTak ]] Set axis minima for the 220 x 220 Buildtak Bed
    ;M208 X215 Y215 Z215 S0 ; [[ BuildTak ]] Set axis maxima for the 220 x 220 Buildtak Bed
    M564 H0 ; Permits ALL Axis movement prior to or without ANY Homing require [ over-rides default of no movement until all homed ]

    ;---------------------------
    ; Endstops
    ;---------------------------
    M574 X1 Y1 S1 ; Set low-end [ min ] endstops || S1 = NC / Active High S0 = NO / Active Low
    M574 Z2 S1 ; Set high-end [ max ] endstops || S1 = NC / Active High S0 = NO / Active Low

    ;---------------------------
    ; Z Probe / BL Touch Smart
    ;---------------------------
    M307 H3 A-1 C-1 D-1 ; *** Heater 3 *** PIN reassignment for 3.3v BL Touch SMART [ BL Touch Specific settings ]
    M558 P9 X0 Y0 Z1 H5 F200 T6000 B1 A5 S0.02 ; Set probe type [P9] | Axis to probe[1=in use / 0=not used ] | [H5]dive height | [F5 ]Probe Speed | T=Travel Spd |A= #attpts | S= deviation
    G31 X-29 Y-9 Z3.525 P25 ; Set X/Y Horiz offset from probe || Set Z probe trigger height || Trigger Sensitivity Value [ P ]
    M557 X0:175 Y25:200 S25 ; Define the bed x/y min max mesh grid probing area for Mesh Bed Leveling
    ;M557 X0:175 Y25:200 S25 ; [[BuildTakSheet ]] Define the bed x/y min max mesh grid probing area for Mesh Bed Leveling

    ;---------------------------
    ; Drives
    ;---------------------------
    M584 X0 Y1 Z2:4 E3 P3 ; Dual Z Motor Mapping
    M671 X0:175 Y100:100 S2 ; Z Lead Screw Leveling probe Point Mapping
    M569 P0 S0 ; Drive 0 goes reverse [ X Axis ] [ S0 = Rev / S1 = FWD ]
    M569 P1 S0 ; Drive 1 goes reverse [ Y Axis ]
    M569 P2 S0 ; Drive 2 goes reverse [ Z Axis - LT ]
    M569 P4 S0 ; Drive 4 goes reverse [ Z Axis - RT ]
    M569 P3 S1 ; Drive 3 goes forward [ E0 ]
    M572 D0 S0.06 ; Set Pressure Advance [ need to check Jerk and Accel Settings to properly coincide here ]
    M350 X16 Y16 Z16:16 E16 I1 ; Configure microstepping with interpolation
    M92 X100.30 Y100.250 Z1600:1600 E140.64 ; Set steps per mm
    M566 X900 Y900 Z25:25 E250 ; [ Jerk Settings ] Set maximum instantaneous speed changes (mm/min)
    M201 X500 Y500 Z280:280 E250 ; Set accelerations (mm/s^2)
    M203 X6000 Y6000 Z280:280 E1200 ; Set maximum speeds (mm/min)
    M906 X1600 Y1600 Z1600:1600 E1600 I30 ; Set motor currents (mA) and motor idle "power saving" decrease factor as percentage [ I30=30% ]
    M84 S30 ; Set idle timeout

    ;---------------------------
    ; Heaters
    ;---------------------------

    ; *** Bed H0
    M301 H0 S1.00 P185.1, I5.911, D291.4 T0.4 W180 B0 ; H0 Bed Heater use PID || Last Auto-tune results --> [ P185.1, I5.911, D291.4 ]
    M305 P0 T100000 B3988 C0 R4700 ; Set thermistor + ADC parameters for heater 0
    M143 H0 S110 ; Set temperature limit for heater 0 to 110C
    ;M307 H0 A194.3 C463.7 D2.2 B0 ; Saves this models parameters || B0 = Use PID / B1 = Bang Bang || PWM 1.00 || No more M301 4 H0 after this

    ; *** Extruder / HotEnd H1
    M301 H1 P11.0, I0.391, D41.0 B0 ; H1 Hotend E0 use PID || Last Auto-tune results 260C --> [ P11.0, I0.391, D41.0 ]
    M305 P1 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 1
    M143 H1 S275 ; Set temperature limit for heater 1 to 265C
    ;M307 H1 A254.4 C144.6 D4.4 B0 ; Saves this models parameters || B0 = Use PID / B1 = Bang Bang || PWM 1.00 || No more M301 4 H1 after this

    ;---------------------------
    ; FANS [ See Docs Here ] : https://duet3d.com/wiki/G-code#M106:_Fan_On
    ;---------------------------

    M106 P0 S0 H-1 ; Setup Fan0 [ P0 ] || S = PWM Pwr Level 0.0 to 1.0 || || H1 = Thermost CNTRL OFF [-1] & Heater #
    M106 P1 T45 H1 ; Setup Fan1 [ P1 ] || T45 = 45*C Nozz Temp Trigrz fan || S = PWM Pwr Level 0.0 to 1.0 || || H1 = Thermost CNTRL ON & Heater #
    ;M106 P2 S1 I0 F500 H1 T45 ; Setup Fan2 [ P2 ] || PWM signal inversion and frequency. Thermostatic control is turned on

    ;---------------------------
    ; 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

    ;---------------------------
    ; Network
    ;---------------------------
    M550 PZaribo220 ; Set machine name
    M551 P***** ; Set password
    M552 S1 ; Enable network
    M587 S"zzzzzzzz" P"xxxxxxxxx" ; Configure access point. You can delete this line once connected
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; Custom settings are not configured



  • As an update: Ive just gotten the X Tilt / Z-Leadscrew setup working now, and I think this was 90% of my issue! Ive run 4 prints now using the x tilt correction before each print and Ive NOT needed to babystep in with PLA [ only filament tested so far ] .... Amazing! At most it may need .02 / .04 tweek to be PERF.


  • administrators

    I'm glad you solved it. You can make fine adjustments to the Z=0 height using the G31 Z parameter (the Z probe trigger height).

    Yes I did mean homez.g. My smartphone persists in "correcting" homez.g to homes.g despite me having told it many times that I want homez.g.

    One other tip: choose the XY position that you execute the G30 at in your homeall.g and homez.g files to correspond to one of the mesh probe points defined by M557. To do this, work out the XY coordinates of the mesh probe point closest to the centre of the bed, then subtract the Z probe X and Y offsets (as specified in the G31 command) from those coordinates.



  • Thank you dc42 ... Dave or David ?

    I will noodle on your last suggestion here and sort out how to implement that as well ... seems like a groovy idea!

    thanks a million.


Log in to reply