Mesh Compensation



  • I'm really not convinced my bed mesh compensation is working...the first layer really suggests it isn't. I've used this machine hard for 3 years now and it knocks out prints as good as anything I've seen, but I really want to dial it right in now.

    My build plate is 1/4" cast ally tool plate with printbite surface, leveled very carefully with a feeler gauge, but it does have a couple of dips in it. The supplier has told me since that only the thicker plate (3/8" and up) have tighter tolerances for flatness.

    I run a mesh in the start of every print.

    Here's my bed.g file:

    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:53:55 GMT+1100 (Australian Eastern Daylight Time)
    M561 ; clear any bed transform
    G29 ; probe the bed and enable compensation

    M557:

    M557
    Grid: X20.0:180.0, Y20.0:180.0, radius -1.0, X spacing 40.0, Y spacing 40.0, 25 points

    Start script in my slicer (S3D):

    G29 S2
    G28
    G29
    G90
    G1 X97.5 Y97.5 F4800
    G30
    G1 Z5 F500

    It's a cartesian printer with a build plate of 195x195, but I went for a 180x180 mesh to keep it all in the envelope.

    Have I got this set up right, and how can I tell if it's working?

    I feel I'd better get this right before I mess about with pressure advance and other tuning.

    Cheers again for all the help I get on here

    ** I've used David's wizard by the way, but it asks for a bed "radius"...is it only for deltas?

    Just in case, here's what I got using a 180mm radius setting (a lot more than the existing bed.g file):

    ; bed.g file for RepRapFirmware, generated by Escher3D calculator
    ; 16 points, 6 factors, probing radius: 180, probe offset (4, 28)
    G30 P0 X0.00 Y155.74 Z-99999 H0
    G30 P1 X101.81 Y121.33 Z-99999 H0
    G30 P2 X167.31 Y29.50 Z-99999 H0
    G30 P3 X155.88 Y-90.00 Z-99999 H0
    G30 P4 X61.56 Y-169.14 Z-99999 H0
    G30 P5 X-61.56 Y-169.14 Z-99999 H0
    G30 P6 X-155.88 Y-90.00 Z-99999 H0
    G30 P7 X-174.25 Y30.72 Z-99999 H0
    G30 P8 X-104.14 Y124.11 Z-99999 H0
    G30 P9 X0.00 Y68.60 Z-99999 H0
    G30 P10 X63.92 Y36.90 Z-99999 H0
    G30 P11 X77.94 Y-45.00 Z-99999 H0
    G30 P12 X0.00 Y-90.00 Z-99999 H0
    G30 P13 X-77.94 Y-45.00 Z-99999 H0
    G30 P14 X-67.51 Y38.98 Z-99999 H0
    G30 P15 X0 Y0 Z-99999 S6



  • @Corexy said in Mesh Compensation:

    G29 S2
    G28
    G29
    G90
    G1 X97.5 Y97.5 F4800
    G30
    G1 Z5 F500

    why are you doing this?

    G28
    G29
    should be enough

    check with M122 if mesh is enabled while printing.

    very imporant check that your probe offset is correct
    post a your config.g and a picture of the mesh



  • That start script in the slicer was setup with some advice here back in the day. If it's no good I'll change it.

    My probe offset is set and checked pretty carefully. It's always been consistent and reliable, but I've just fitted a new hot end that required me to adjust the mount to get the bottom of the IR sensor board close to 1.5mm above the tip of the nozzle.

    Here we go:

    ([url=https://imgur.com/lhDZMzc][img]http://i.imgur.com/lhDZMzc.png[/img][/url]
    )
    ; Configuration file for Duet WiFi
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Oct 22 2016 18:28:19 GMT+1100 (AUS Eastern Daylight Time)

    ; General preferences

    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves

    ; Network
    M550 P"Zortrax M200" ; Set machine name
    M552 S1 ; Enable network and acquire dynamic address via DHCP

    ; Drives
    M584 X0 Y1 Z2 E3 ; Set drive mapping
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes backwards
    M569 P3 S1 ; Drive 3 goes forwards
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping without interpolation
    M92 X80 Y80 Z800 E118 ; Set steps per mm
    M566 X1600 Y1600 Z12 E800 ; Set maximum instantaneous speed changes (mm/min)
    M203 X18000 Y18000 Z1200 E8000 ; Set maximum speeds (mm/min)
    M201 X1200 Y1200 Z20 E1200 ; Set accelerations (mm/s^2)
    M906 X1100 Y1100 Z800 E500 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Endstops
    M574 Z0 S0 ; Define active low and unused microswitches
    M574 X1 Y1 S1 ; Define active high microswitches
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X195 Y195 Z175 S0 ; Set axis maxima

    ; Z-Probe
    M558 P1 X0 Y0 Z1 H5 F600 T6000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds
    G31 P500 X0 Y0 Z2.465 ; Set Z probe trigger value, offset and trigger height
    M557 X20:180 Y20:180 S40

    ; Heaters
    M143 S280 ; Set maximum extruder temperature to 280C
    M143 H0 S140 ; Set maximum bed temperature to 140C
    M305 P0 T100000 B4000 C0 R4700 L0 H0 ; Set thermistor + ADC parameters for heater 0
    M305 P1 X200 ; Set thermistor + ADC parameters for heater 1 and remap it to channel 200
    M307 H0 A144.9 C625.3 D1.0 B0
    M307 H1 A892.1 C396.5 D6.4 V24.3 B0

    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
    T0

    ; 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 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on

    ; Custom settings are not configured



  • @Corexy said in Mesh Compensation:

    M558 P1 X0 Y0 Z1 H5 F600 T6000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds
    M557 X20:180 Y20:180 S40

    depending on your bed S40 is to large to be effective.

    if you dont have a probe? how do you do mesh calibration? manually?



  • I have the mini IR probe.

    My bed is 195x195 square build area (the actual plate is 240x240 but it can't all be reached).

    Mate I don't even know what S40 means, so if you don't mind telling me what you'd put in your bed.g, config.g and start script, I'll take your word for it and appreciate your help.

    Cheers again,

    Neil.



  • @Corexy said in Mesh Compensation:

    G31 P500 X0 Y0

    ok you need to configure the probe position.

    X and Y is the offset of the probe from the nozzle. X postive is to the your Y positive is behing. Without this your mesh will be inaccurate.

    M557 X20:180 Y20:180 S40

    change S40 to S15 or S10

    M574 Z0 S0 ; Define active low and unused microswitches

    change to
    M574 Z1 S2 ; set endstops controlled by probe

    post your homing scripts. they will prob be wrong.



  • I should point out that x and y have homing switches...the probe only does the bed level.

    Does that change anything?

    Thanks for helping with this. What's crazy is that despite me using this thing for years with little tuning/adjustment, I knock out some pretty good prints.



  • @Corexy said in Mesh Compensation:

    I should point out that x and y have homing switches...the probe only does the bed level.
    Does that change anything?

    no



  • OK,

    So my nozzle/probe offsets are:

    X 4mm
    Y 28mm

    So my M557 becomes:

    M557 X4:195 Y28:195 S10 (?)

    Just a bit worried that the fans might bang into some hardware with these offsets. It's a tight fit in there.

    My slicer start script:

    G28 (home all?)
    G29 (mesh probe?)

    Nothing else at all? I should really tack the purge/wipe I was asking about in my other thread on here while I'm at it?

    Any changes to bed.g?

    Homing files...

    homeall.g:

    ; homeall.g
    ; called to home all axes
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:53:58 GMT+1100 (Australian Eastern Daylight Time)
    G91 ; relative positioning
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G1 H1 X-200 Y-200 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)
    G1 H2 X5 Y5 F6000 ; go back a few mm
    G1 H1 X-200 Y-200 F360 ; move slowly to X and Y axis endstops once more (second pass)
    G90 ; absolute positioning
    G1 H2 X97.5 Y97.5 F6000 ; go to first bed probe point and home Z
    G30 ; home Z by probing the bed

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

    homex.g:

    ; homex.g
    ; called to home the X axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:53:59 GMT+1100 (Australian Eastern Daylight Time)
    G91 ; relative positioning
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G1 H1 X-200 F1800 ; move quickly to X axis endstop and stop there (first pass)
    G1 H2 X5 F6000 ; go back a few mm
    G1 H1 X-200 F360 ; move slowly to X axis endstop once more (second pass)
    G1 H2 Z-5 F6000 ; lower Z again
    G90 ; absolute positioning

    homey.g:

    ; homey.g
    ; called to home the Y axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:53:59 GMT+1100 (Australian Eastern Daylight Time)
    G91 ; relative positioning
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G1 H1 Y-200 F1800 ; move quickly to Y axis endstop and stop there (first pass)
    G1 H2 Y5 F6000 ; go back a few mm
    G1 H1 Y-200 F360 ; move slowly to Y axis endstop once more (second pass)
    G1 H2 Z-5 F6000 ; lower Z again
    G90 ; absolute positioning

    homez.g:

    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:53:59 GMT+1100 (Australian Eastern Daylight Time)
    G91 ; relative positioning
    G1 H2 Z5 F6000 ; lift Z relative to current position
    G90 ; absolute positioning
    G1 H2 X15 Y15 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 H2 Z5 F100 ; lift Z relative to current position
    ;G90 ; absolute positioning

    I do suspect my files are messy. I come on here asking things and get a line to add here and there. Would really love to have an expert here with me in front of the thing for a day...



  • @Corexy said in Mesh Compensation:

    M557 X4:195 Y28:195 S10 (?)

    no you change the probe offset in the G31 command like i posted.

    Nothing else at all? I should really tack the purge/wipe I was asking about in my other thread on here while I'm at it?

    lets get your mesh working first.

    Any changes to bed.g?

    bed.g is for G32 command which you are not using.

    your homing files look fine



  • Ok, sorry my mistake

    X and Y is the offset of the probe from the nozzle. X postive is to the your Y positive is behind. Without this your mesh will be inaccurate.

    Not quite sure what you mean here...you mean that I enter a positive value offset if the probe is further "along" the axis than the nozzle tip, and negative if it is "behind"?

    Thank you for your patience by the way.



  • that was posted regarding your
    G31 P500 X0 Y0
    command.

    that command means the probe is at the same place as the nozzle is, which it is not as you are using a ir probe.

    so you need to tell the duet where the ir senssor actualy is while assuming that the nozzle is at 0,0.

    post a picture of your carriage.



  • @Veti said in Mesh Compensation:

    that was posted regarding your
    G31 P500 X0 Y0
    command.

    that command means the probe is at the same place as the nozzle is, which it is not as you are using a ir probe.

    so you need to tell the duet where the ir senssor actualy is while assuming that the nozzle is at 0,0.

    post a picture of your carriage.

    OK, so I just went out there and moved the nozzle around the absolute outside of the build area via the touchscreen, and the nozzle travels the absolute limits of the build area and obstacles as it is. If I add these offsets is there any chance I'll bump into things, or should I do something to avoid that.

    [img]https://i.imgur.com/kCMHC1Q.jpg[/img]

    [img]https://i.imgur.com/bC9SaMB.jpg[/img]



  • @Corexy

    try it with the hand on the power switch.

    but if i remember correctly the offset does not change the mesh coordinates, as they are absolute nozzle parameter.



  • @Veti

    also
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X195 Y195 Z175 S0 ; Set axis maxima

    this is a hard limit for your axis. if at X195 Y195 there is no problem. then you can not cause a problem with the mesh leveling.



  • Yes, I'll keep the switch handy ha ha. But It still must home the axis' against the limit switches, so yes no offset was probably only messing up my mesh.

    G31 P500 X2 Y28 Z2.465

    I measured it a bit more accurately. So I run G29 and see what happens??



  • @Corexy
    yes



  • M557 X20:180 Y20:180 S10

    Ok, it's ticking over happily with the mesh (cold build plate), but it's going to take a lot longer with these 10mm intervals. Which is fine if it will give me a better first layer.

    To probe the entire (195x195) bed, should I take it out to the edges?

    M557 X5:190 Y5:190 S10

    And I'm also thinking should I:

    1. Warm build plate
    2. Home all
    3. Mesh probe (each time, as different bed temps will make different mesh)
    4. Purge/wipe
    5. Start print

    It would be really good to do the mesh probe with a cold nozzle as the ooze is a pain and I'm using an IR probe anyway. I don't mind at all the mesh taking a long time if I'm not picking ooze off the nozzle with tweezers the whole time.



  • @Corexy said in Mesh Compensation:

    Ok, it's ticking over happily with the mesh (cold build plate), but it's going to take a lot longer with these 10mm intervals. Which is fine if it will give me a better first layer.
    To probe the entire (195x195) bed, should I take it out to the edges?
    M557 X5:190 Y5:190 S10

    post the picture of the mesh grid.

    going to a higher spacing depends on the quality of your build plate. the wider the spacing the less details it has to correct with.
    so if there are no irregulaties, you can get away with a wider spacing.

    with the bigger mesh: if your Y offset is 28 to probe at 5 it would need to move to Y-23, which is not allowed. for X it would work



  • Yes, I can't "reclaim" the Y offset...mechanical obstacles. Makes a case for ally extrusion chassis in my next printer, built well oversize to the build plate.

    Running this now regardless, and it seems to be just doing what it can reach.

    M557 X5:190 Y5:190 S10

    Mate I really appreciate this help so much, but it's late now and the other half wants me to give it a rest for tonight.

    I'll have another look in the morning, but this has been a win so far.

    Cheers and thanks!

    [img]https://i.imgur.com/3hQysIH.png[/img]



  • that picture suggests that the surface is not suited very well for ir probing.

    see
    https://miscsolutions.wordpress.com/mini-height-sensor-board/



  • OK, really?

    It's the original Printbite, supposedly OK. It does give very consistent readings when calibrating the Z height.

    I have wondered about those BL touch probes, are they better?

    I would really like to keep the Printbite, just because I don't have to replace it. That surface is 3 years old and going strong.

    Are there any other surfaces that are similar out there that do work well with IR? I have really liked this probe to be honest, but the Printbite has been tricky with ABS.

    I'll see how it performs with this new mesh tomorrow.

    @dc42 @deckingman



  • So how would one of these be as a bed sensor?:

    https://www.ebay.com.au/itm/5mm-Noncontact-Inductive-Proximity-Sensor-Switch-Detect-DC-6-36V-NPN-TL-W5MC1/253114333447

    I've thrown straight edges on this build plate, and while i's not perfect I don't think it runs out as much as this mesh suggests.

    With the build plate under the printbite being cast ally, would this type of sensor work better? Is it a straight up fit, or would I need a daughter board of some sort?

    I saw another thread where a guy was reporting good results with one of these (due to having trouble with the IR sensor on Printbite), but the thread seemed to die out.

    Unless there's a comparable (long lasting/self releasing) surface out there with good IR sensor compatibility, would this be an option?



  • [img]https://i.imgur.com/1Zczdwt.png[/img]

    Here a mesh I ran with a plain sheet of white paper on the bed. It was certainly not flat, but I don't see the "spikyness" in the map that I get with Printbite.

    Can someone tell me if I need to use a different sensor, and if so, what do I use?

    I'm wondering if I've been printing for a few years now with a setup that was not capable of reading the bed properly....



  • And at the risk of talking to myself it all seems to be working better now.

    I took the ABS out, as it's known to be a bit difficult on Printbite (until you've got it dialed right in) and went back to a roll of PLA.

    I had to babystep -0.15mm, which I then added as a Z offset in the slicer and it's printing a pretty perfect first layer with no sign of the problems I've had in the past.

    On this surface I've always had to use a raft for ABS, so I guess that might still be required.


Log in to reply