Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Heightmap is completely ignored

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    mesh bed leveling mesh compensation heightmap
    6
    17
    3.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • kevincorinthundefined
      kevincorinth @Phaedrux
      last edited by

      @phaedrux

      Thank you for your help!

      The start.g attached to my first post is from a friend of mine. He owns the same printer. It is working for him. When I apply the following start.g (the "official" from caribou3d) the first layer is the same:

      start.g

      Picture of my heightmap.csv in the systemsfolder (9x9):
      Screenshot 2021-12-31 075044.jpg

      gcode-file I try to print (same result when I use prusa slicer 2.3):

      ; generated by PrusaSlicer 2.4.0+win64 on 2021-12-30 at 16:47:56 UTC

      ;

      ; external perimeters extrusion width = 0.60mm
      ; perimeters extrusion width = 0.50mm
      ; infill extrusion width = 0.50mm
      ; solid infill extrusion width = 0.50mm
      ; top infill extrusion width = 0.45mm
      ; first layer extrusion width = 0.42mm

      M107
      ;TYPE:Custom
      ; =========================================================================================================
      ;
      ; start script for PrusaSlicer for CaribouDuet
      ;
      ; =========================================================================================================
      ;
      G28 ; home all axis without mesh bed level
      G0 X60 Y-3 Z80 ; move extruder above bed, keep extruder in front for cleaning and checking
      ;
      M104 S160 T0 ; pre-heat extruder to 160°C
      M140 S60 ; this will take the layer 1 temperature for bed 0
      M190 S60 ; wait for bed temp
      ;
      G29 ; mesh bed leveling using defined mesh grid
      G0 X0 Y-3 Z0.6 ; go outside print area
      ;
      M104 S215 ; set extruder temperature
      M109 S215 ; wait for extruder temp
      ;
      ; =========================================================================================================
      ;
      ;
      M98 P"0:/sys/primeLine.g" ; execute primeline macro
      ;
      G92 E0.0 ; set extruder position
      ;
      M572 D0 S0.07 ; set pressure advance
      ;
      ; =========================================================================================================
      G21 ; set units to millimeters
      G90 ; use absolute coordinates
      M83 ; use relative distances for extrusion
      M900 K0.05 ; Filament gcode LA 1.5
      M900 K30 ; Filament gcode LA 1.0
      M107
      ;LAYER_CHANGE
      ;Z:0.2
      ;HEIGHT:0.2
      ;BEFORE_LAYER_CHANGE
      G92 E0.0
      ;0.2

      G1 E-.4 F2100
      G1 Z.4 F10800
      ;AFTER_LAYER_CHANGE
      ;0.2
      G1 X4.516 Y7.168
      G1 Z.2
      G1 E.4 F2100
      M204 P1000
      ;TYPE:Skirt/Brim
      ;WIDTH:0.42
      G1 F1200
      G1 X5.452 Y6.976 E.02998
      G1 X245.296 Y6.928 E7.52013
      G1 X246.603 Y7.32 E.04278
      G1 X247.48 Y8.365 E.04278
      G1 X247.673 Y9.305 E.03008
      G1 X247.673 Y49.309 E1.25429
      G1 X247.426 Y201.94 E4.78564
      G1 X247.032 Y203.246 E.04278
      G1 X245.985 Y204.121 E.04278
      G1 X245.051 Y204.313 E.0299
      G1 X5.274 Y204.483 E7.51806
      G1 X3.967 Y204.092 E.04278
      G1 X3.09 Y203.046 E.04278
      G1 X2.896 Y202.106 E.03008
      G1 X3.076 Y9.35 E6.04373
      G1 X3.469 Y8.044 E.04278
      G1 X4.47 Y7.207 E.0409
      ; printing object Form-Kubus id:0 copy 3

      for my taste (taste because I am a noob and have no knowledge 🦆 ) the g29 Sxx is applied a little to often. Is there any known interference?

      I have often read that possibly the z-Motors don't get enough voltage for mesh compensation?

      I have already checked that my extruder can travel along the gentry easily. A tilt of the gantry can be performed easily by turning one spindle.
      I have not found any further (gcode-)commands where the used mesh can be visualised? Is there a way? Or is there a way to easily visualize the motor signals? So that one can see if there is a signal for the motor to turn?

      ...and again thank you for your much appreciated help in advance!

      1 Reply Last reply Reply Quote 0
      • martin7404undefined
        martin7404
        last edited by

        I did not understand did using G29 S0 solve the problem?
        For some time I think my meshlevel is doing nothing , but as far my deviation is about 0.08 to 0.12 on 550 x 450 bed I do not have fails .
        My Gcode is just
        G32 - 3 point tramming with 3 Z motors and then G29, during first layer there is some minor difference in line thickness.
        Should I use G29 or G29 S0

        Muldex IDEX Duet2+Duex5
        Custom CoreXY 600x400 Hemera , Duet3+Toolboard+1HCL closed loop
        Sapphire Pro with Duet2, with closed-loop motors
        custom high temp E3D tool changer with Duet2+Duex

        kevincorinthundefined 1 Reply Last reply Reply Quote 0
        • kevincorinthundefined
          kevincorinth @martin7404
          last edited by

          Hello @martin7404,

          thank you for your answer.
          G29 S0 did not wirk for me. I have just tried to implement it in the Start code in prusa Slicer.
          The mesh measuring on all 9x9 points was made according to config.g.
          But: the contourline of my print looks as bad as before.
          On the left the nozzle is way to close to the bed. On the right there is nearly no contact between the nozzle an the bed.
          My bed is too close on the left but too far on the right. So I assume there is absolutely no mesh compensation going on.

          oliofundefined 1 Reply Last reply Reply Quote 0
          • oliofundefined
            oliof @kevincorinth
            last edited by

            @kevincorinth here is how to check whether mesh bed compensation works without a print:

            a) home the printer (G28)
            b) edit the heightmap csv to add 1mm to one of the points, ideally to the middle of the bed. Save it as "fakeheightmap.csv")
            c) load the edited mesh (G29 S1 P"fakeheightmap.csv")
            d) move your print head to X minimum and the Y coordinate of your modified point.
            e) Command a G0 move to X maximum at a low speed. You should see the Z spindles moving up and down to accomodate the fake high point.

            <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

            kevincorinthundefined 1 Reply Last reply Reply Quote 2
            • kevincorinthundefined
              kevincorinth @oliof
              last edited by

              Hello @oliof ,

              thank you for your beautiful idea!
              I modified your idea slightly. Instead of changing only one (of 81) point(s). I changed a complete line.
              fc778cbb-9e9b-41a7-98a0-0ad47d2a52e5-grafik.png

              But hooray. This method worked for me. I was able to see the rise and fall of the nozzle in the middle of the bed, where the fakeheightmap.csv was active!

              At least I know now that there is some heightmap usage in the Background.
              but sadly I still don't know what is wrong with my heightmap.
              Could it be a bad offset of my BLTouch?
              Or any other guesses?

              Thank you very much in Advance! 🙂

              martin7404undefined 1 Reply Last reply Reply Quote 0
              • martin7404undefined
                martin7404 @kevincorinth
                last edited by

                @kevincorinth i am not near my printers now. I will do folowing:
                Home, tram and g29
                I have 50 mm height gauge with dial indicator an will check mesh points with it

                Muldex IDEX Duet2+Duex5
                Custom CoreXY 600x400 Hemera , Duet3+Toolboard+1HCL closed loop
                Sapphire Pro with Duet2, with closed-loop motors
                custom high temp E3D tool changer with Duet2+Duex

                1 Reply Last reply Reply Quote 0
                • oliofundefined
                  oliof
                  last edited by oliof

                  So one thing I note is that you save filament specific height maps, but you just load the generic heightmap.csv in the startup gcode @kevincorinth. Does the generic heightmap.csv even exist?

                  Since you can have filament profile specific gcode in PrusaSlicer which you seem to be using, maybe move the G29 from the startcode there, and reference the filament specific one.

                  <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                  kevincorinthundefined 1 Reply Last reply Reply Quote 1
                  • oliofundefined
                    oliof
                    last edited by

                    also considering your height map image -- that already looks pretty flat. I would print on that without compensation (ignoring the front right corner unless I really have a full plate, which I tend to avoid).

                    Maybe you can show us a bit more about your setup: Print plate, printer gantry, hotend/nozzle, etc. I am at this point assuming your problem is not one of the heightmap, but another mechanical issue.

                    <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                    kevincorinthundefined 1 Reply Last reply Reply Quote 1
                    • kevincorinthundefined
                      kevincorinth @oliof
                      last edited by

                      @oliof

                      My first Layer is my USP. And my duet printer is my most expensive one. So achieving a perfect first layer would be great.

                      yes, there is always a heightmap.csv generated.

                      I have included in the start gcode of my prusa Slicer following lines:
                      "
                      G29 S2 ;clear all stored mesh
                      G29 S1 P"fakeheightmap.csv ; use the "Faked" heightmap
                      "
                      The result has been as expected. In the middle I still have a + 1mm offset in my fakeheightmap.csv. My first Layer looks exactly as usual. But you can see that in the middle the contour line has way less contact to the printsheet as to the right and left.

                      As a result my heightmap.csv is not ignored. My heightmap.csv ist simply too "weak"?

                      I will try what @martin7404 suggested. I will use a gauge and measure myself to compare the measured values with the BLTouch ones. I hope that helps me to get a clue of what is going wrong here.

                      Are there any known issues?

                      Thank you for your help!

                      1 Reply Last reply Reply Quote 0
                      • mikeabuilderundefined
                        mikeabuilder
                        last edited by mikeabuilder

                        I had a similar issue with a printer I'm building and the root cause was that when the print head moved from one side of the bed to the other, there was a slight force on it from the wiring and filament. This force caused the printhead to tilt one way on side 1 of the bed and tile the other way on side 2. That tilting lifted the nozzle enough to cause the first layer to not adhere, or shoved the nozzle into the bed. The offset of the z-probe from the nozzle can amplify any wobbliness in the printhead.

                        kevincorinthundefined 1 Reply Last reply Reply Quote 2
                        • kevincorinthundefined
                          kevincorinth @mikeabuilder
                          last edited by

                          @mikeabuilder

                          Thank you very much for your answer.
                          In deed my extruder was a little bit loose (compared to my einsy prusa extruders). I have completely diassembled my extruder on my caribou duet and retightened all the screws an cables.

                          Now my extuder is mounted rocksolid. But I still have a poor first layer. 😓

                          1 Reply Last reply Reply Quote 0
                          • kevincorinthundefined
                            kevincorinth @oliof
                            last edited by

                            @oliof

                            my setup:
                            14dc0ffa-311b-437b-a58c-d41db117770a-grafik.png 26d6cdd5-6aee-4744-9a08-421a57c61d66-grafik.png

                            I have assembled the printer myself. The parts are printed by myself.

                            • I have just disassembled and reassembled my bondtech extruder with Mosquito hotend.
                            • I have also loosend the rod screws for the gantry. I have heard there can be some mechanical issues.

                            Still no change.

                            Thank you for your help in advance.

                            1 Reply Last reply Reply Quote 0
                            • mikeabuilderundefined
                              mikeabuilder
                              last edited by mikeabuilder

                              OK, the quick answer did not solve the problem. Putting on my mad scientist thinking cap...

                              Your original post said you had a bad first layer, so let's keep that as the problem to solve. Several posts and experiments here have shown that the mesh compensation matrix does make the z motors move as the print head moves, so we conclude mesh compensation is "on", but does not seem to be working well.

                              Theories of what might be wrong:

                              1. The z-offset between the probe and the nozzle may be different at different points on the bed.

                              2. Z offset might be set wrong everywhere on the bed.

                              3. Something else (mad scientist's last excuse).

                              Now we need to experiments to test our theories.

                              Some missing data - you didn't explain or show a picture of the bad first layer - is it everywhere, or good in some places and bad in others?

                              Experiment 1 - Turn off mesh compensation. move the nozzle to the middle of the bed and home Z (G30) there. Now we ignore the rest of the bed and print a 25mm square that is one layer thick. If this layer is not good, adjust the z-offset until it is good. This is now your Z-offset for the next experiments.

                              Experiment 2 - Move the nozzle near one corner of the bed (where the worst layer 1 is happening). Use G30 to home in that location. Print a single layer 25mm square in this location. If the offset between the nozzle and the probe is consistent in this location, the layer should be as good as in the center of the bed, adding weight to theory 1. If not, this adds weight to Theory 2 above. If the first layer looks bad, note whether it's too thin (nozzle too low) or too thick (nozzle too high).

                              Experiment 3 - If experiment 2 gave a bad first layer, let's see if the error is consistent on the other corners of the bed. If you got a good print in experiment 2, I'd skip this experiment. Repeat experiment 2 on those corners (move nozzle to a corner, home (G30) there, print small square. Look for changes in the quality at each corner. Does it change? How? I looked at the pictures on the caribou web page and they don't show the location of the tough probe, but the Superpinda looks to be to the right of the nozzle, but close to the nozzle front/rear. If the badness of the first layer on the left sides are the same but opposite of the badness on the right side, I'd add more weight to theory 2. If the front corners are the same badness but opposite to the rear corners, I'd give less weight to theory 2. If diagonal corners are equal badness, but opposite to the badness of the other diagonals, I'd just to theory 3 - something else and that something would be that the 4 leveling screws are curving the bed. The height map you posted shows this, but the amount of height offset seems low enough that mesh compensation should remove it.

                              Experiment 4 - do this if Experiment 2 made a good first layer. We are pursuing theory 1 now, and we think that we have a good Z-offset. Run bed leveling and compensation, then print a 25mm square near each corner of the bed. Are they all good now? If not, what is the quality of the first layers? Note that this experiment is different from experiment 2 because Z is not re-homed near each corner.

                              Hopefully these experiments will give you some insight to what is happening, and hopefully a simple z offset adjustment will solve it. If you are still on the path of theory 2, I'd sit in front of the machine with your experiment 3 results and ask "what could be causing the probe offset to change in a way that would give these results?". When I had a similar problem, here's where I ended up at this step. It's not your printer, but the pictures might give you some ideas of what to think about if you are staring at your printer and asking "how are you doing this to me?" https://forum.duet3d.com/topic/26397/mesh-compensation-effect-on-g30-command

                              In a worst case scenario, you could do an experiment 5 where you readjust the zoffset at each corner (maybe 5 x 5 mesh points) and capture the offset differences. Then compare to the heightmap.csv at those points. The difference would be a "machine adjustment for whatever is happening we can't figure out". Then you could write a macro that added those adjustments to the heightmap and applied it. This would be a brute force method and might need to be repeated occasionally.

                              kevincorinthundefined 1 Reply Last reply Reply Quote 1
                              • kevincorinthundefined
                                kevincorinth @mikeabuilder
                                last edited by

                                @mikeabuilder

                                I finally found time to do your very helpful scientific experiment.
                                Was to complicated for me. 😄

                                But for anyone else having this problem:

                                My z axis minimum was set to z0

                                Changing M208 for Z0 to Z-2 in config.g was finally solving the problem.

                                @atall thank you all for your great and quick help, tips and tricks.

                                After 10 months of guessing and time consumable troubleshooting I am finally able to use my most expensive printer!

                                hooray!

                                1 Reply Last reply Reply Quote 1
                                • First post
                                  Last post
                                Unless otherwise noted, all forum content is licensed under CC-BY-SA