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

    Heightmap, BLTouch and First Layer height

    Scheduled Pinned Locked Moved
    General Discussion
    4
    19
    3.1k
    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.
    • Leblondundefined
      Leblond
      last edited by

      If I can afford ... for this purpose I created 2 macros that I think could serve your purpose.
      The first MACRO: G28
                                     M561
                                     M208 S1 Z-3

      The second MACRO: G92 Z0
                                         G4 P2000
                                         G1 Z5
                                         G4 P2000
                                         G30 S-1

      the first macro allows you to: bring the axes home "ATTENTION !!! I use the mini ir probe of DC42 on the center of the bed", to clear any previous survey and to get to the center ready for offset calibration extruder.
      At this point place an A4 sheet on the plate, lower the extruder until the tip touches the sheet and face it. Slightly effortlessly remove it, "I recommend you bring the extruder and the bed to print mode before the correct calibration" once you do that 'remove the sheet and launch the second macro that will allow you to bring the offest to zero, to position itself at + 5mm from the zero point and finally to read the difference.
      The final result that you will see in video or in panel of height Z will be the actual offset that you will have to put in the configuration file.
      Correct me if I'm wrong.

      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator @3Dreamer
        last edited by

        @3dreamer I think the main thing you are assuming is that in order for the mesh grid compensation to account for a dip in the bed that goes below the z=0 position you must set M208 Z to a negative value. This is not how it works however. The only time you would set M208 to a negative value is when first measuring the trigger height in case you can't lower the nozzle enough. But after that first measuring step you don't need to have M208 negative.

        Here's my procedure for setting trigger height and ensuring a good first layer.

        1. Mechanically level the bed by moving the nozzle to the 3 adjustment screws around the bed. one of them is the reference point and doesn't change. That;s my z=0. The other 2 screws are adjusted until the nozzle just touches the bed at z=0. I determine this visually. I can get close enough and even enough to see daylight between the nozzle and bed. Helps to have a bright light behind. No paper gap. With 0.02 movement steps it's easy to get it just touching.

        2. Trigger height is measured at bed center, same location as where Z homing is done. Again I touch the nozzle to the bed and reset G92 Z0. If I can't lower the nozzle enough to touch the bed I send G92 Z5 to trick the firmware into thinking it's higher than it is. No need to change M208, though that is an option. M564 S0 to allow axis limits to be ignored is another option. When the nozzle is touching the bed, send G92 Z0 and then G30 S-1 to get the trigger height. Repeat a few times and take the average result.

        3. Mesh grid compensation routine is run to map the bed. Height map is loaded automatically at startup in config.g

        4. I print a test file that covers the whole area of the bed with a 2 perimeter path. If my e steps and extrusion factor are calibrated and the z height is correct, the 2 walls should be touching and fused nicely and should be consistent across the whole surface. While it's printing if it looks too squished or too high across the whole surface I will use baby stepping to fine tune it until it looks just right. If some parts are high and some parts are low, I would go back and look at my heightmap. In my case it appears to be too squished everywhere across the bed and I raise the nozzle by 0.1mm baby steps. So I go back to the G31 and subtract 0.1 and print again. This time it prints perfect. Z height is calibrated.

        Extrusion factor must be calibrated, because it's easy to mistake over extrusion on the first layer for printing too close. You can verify this if the first layer looks perfect, but then the other layers look under extruded.

        By using a visual contact method for setting Z=0 you don't have to take any paper gap or other offset into account. But even if you do use paper to measure, you can fine tune the first layer height with baby stepping.

        Z-Bot CoreXY Build | Thingiverse Profile

        1 Reply Last reply Reply Quote 1
        • 3Dreamerundefined
          3Dreamer @dc42
          last edited by

          First off all, thank you dc42, Leblond and Phaedrux for your precious information

          Unfortunately the matter appear not really clear to me, I'll try to test your tips and let we see the results 🙂

          @dc42 said in Heightmap, BLTouch and First Layer height:

          If the GCode tells the firmware to put the nozzle at Z=0.2mm and the M208 X lower soft stop is 0.2mm, then it will go to Z=0.2mm. But if you change your mind and decide to print with 0.1mm first layer height, you had better reset the M208 soft stop to 0.1mm or below.

          The M208 soft stop is a limit, not a Z offset.

          My tests seems to say a different thing!
          I have set a Z value for M208 that, when I command the print to go to Z zero, the bed go up and stop when the bed-nozzle gap is about 0.2 mm.
          When I print with a gcode that contain the instruction G 0.2 (because, for ex. I have set the first layer in Simplify3D to be 0.2mm height), the nozze go physically to 0.4 mm from the bed! I have measured it with gauges.

          So... who's right? Are you right and my printer is an anomalous machine or are we right and we are missing some key point in this matter?

          Thank you so much!
          Mark.

          3D Printing new Applications Researcher.

          1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators
            last edited by dc42

            How are you homing Z? It sounds like you have a 0.2mm error in your Z homing position.

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            3Dreamerundefined 1 Reply Last reply Reply Quote 0
            • 3Dreamerundefined
              3Dreamer @dc42
              last edited by

              @dc42 said in Heightmap, BLTouch and First Layer height:

              How are you homing Z? It sounds like you have a 0.2mm error in your Z homing position.

              Homing is achieved moving the print head and the bed toward some limit switches. For the bed, this switch is positioned at the bottom of the area that accomodate the vertical movement of the bed.
              So when the bed trigger this switch, the interface indicate a big Z value , exactly the same set in M208 Z Value.

              So my M208 Z value indicate to the system how maximum the bed can go up toward the nozzle, starting from this switch. Thus, when the bed will arrive at it's maximum height, the system will consider this situation as my GCode Z zero. At this point the true physical distance between the bed and the nozzle will depend by the bed surface, the nozzle form factor, and obviously by the M208 Z Value that I have set.

              I can print objects up to 450 mm height, so If I set the M208 Z value at, for ex., 200, my GCode zero will correspond to a physical distance between the bed and the nozzle that is about 250mm!

              Thank you,
              Mark.

              3D Printing new Applications Researcher.

              1 Reply Last reply Reply Quote 0
              • dc42undefined
                dc42 administrators
                last edited by

                It sounds to me that your M208 S0 Z value is 0.2mm too small.

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                3Dreamerundefined 1 Reply Last reply Reply Quote 0
                • 3Dreamerundefined
                  3Dreamer @dc42
                  last edited by

                  @dc42 said in Heightmap, BLTouch and First Layer height:

                  It sounds to me that your M208 S0 Z value is 0.2mm too small.

                  Not necessarily, because is a personal choice and the important things is to know what's happening.

                  As far as I know, considering the obvious deformation of the plane, virtually we would need a specific M208 Z value for each point of the bed itself, but...

                  The key point of this thread is to understand how to free yourself from the M208 Z value (or some other global values) to achieve the desired first layer height, and use the “HeightMap.csv” informations to obtain a COSTANT, TRUE and SPECIFIED first layer height on all your plane (optimized steps and extrusion factor are a requirement, obviously.)

                  Still searching for clear instructions or guides 😉

                  P.S. I know that for the 99% (?) of the users the first layer is just the foundation of their printed model, but for me the first layer IS the model, thus the search for precise control on what's happening.

                  3D Printing new Applications Researcher.

                  dc42undefined 1 Reply Last reply Reply Quote 0
                  • dc42undefined
                    dc42 administrators @3Dreamer
                    last edited by

                    @3dreamer said in Heightmap, BLTouch and First Layer height:

                    Not necessarily, because is a personal choice

                    Maybe you think you can define 0.0 == 0.02 as a personal choice, but that makes your printer incompatible with the GCode that your slicer generates. Z=0 must mean the nozzle touching the bed. You can make a personal choice that you won't actually allow Z=0 to be reached, because you will set Z=0.2 as the minimum allowed by the M208 S1 command.

                    Duet WiFi hardware designer and firmware engineer
                    Please do not ask me for Duet support via PM or email, use the forum
                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                    3Dreamerundefined 1 Reply Last reply Reply Quote 0
                    • 3Dreamerundefined
                      3Dreamer @dc42
                      last edited by

                      @dc42 said in Heightmap, BLTouch and First Layer height:

                      @3dreamer said in Heightmap, BLTouch and First Layer height:

                      Not necessarily, because is a personal choice

                      Maybe you think you can define 0.0 == 0.02 as a personal choice, but that makes your printer incompatible with the GCode that your slicer generates. Z=0 must mean the nozzle touching the bed. You can make a personal choice that you won't actually allow Z=0 to be reached, because you will set Z=0.2 as the minimum allowed by the M208 S1 command.

                      What you write is correct.
                      I can control the situation by this way: if I set Z=0.2 as the minimum allowed by the M208 command, and I set (in the slicer) the first layer to be 0.2mm, I'll put (still in the slicer) the Z value in the "Global GCode Offset" to be -0.2.
                      So my gcode file will contain, as the first Z instructions, G1 Z0.00, and the nozzle will start extruding from a true physical distance that is 0.2 mm, matching my needs.

                      3D Printing new Applications Researcher.

                      dc42undefined 1 Reply Last reply Reply Quote 0
                      • dc42undefined
                        dc42 administrators @3Dreamer
                        last edited by

                        @3dreamer said in Heightmap, BLTouch and First Layer height:

                        @dc42 said in Heightmap, BLTouch and First Layer height:

                        @3dreamer said in Heightmap, BLTouch and First Layer height:

                        Not necessarily, because is a personal choice

                        Maybe you think you can define 0.0 == 0.02 as a personal choice, but that makes your printer incompatible with the GCode that your slicer generates. Z=0 must mean the nozzle touching the bed. You can make a personal choice that you won't actually allow Z=0 to be reached, because you will set Z=0.2 as the minimum allowed by the M208 S1 command.

                        What you write is correct.
                        I can control the situation by this way: if I set Z=0.2 as the minimum allowed by the M208 command, and I set (in the slicer) the first layer to be 0.2mm, I'll put (still in the slicer) the Z value in the "Global GCode Offset" to be -0.2.
                        So my gcode file will contain, as the first Z instructions, G1 Z0.00, and the nozzle will start extruding from a true physical distance that is 0.2 mm, matching my needs.

                        I've much the same already, if you need to set a global offset of -0.2 then it is because your homing procedure does not establish the origin of the Z axis correctly. You can home to Z=0.2 if you like, but if you tell the firmware it is at Z=0 when it reality it is at Z=0.2 then of course you will need a global offset, to counteract your error.

                        Why not use a set of feeler gauges to check the Z accuracy? Home Z, command the head to Z=0.3 or 0.5 or anything else as long as it is higher than your 0.2mm Zmin limit, and use the feeler gauges to check the accuracy of the gap between the nozzle and the bed.

                        Duet WiFi hardware designer and firmware engineer
                        Please do not ask me for Duet support via PM or email, use the forum
                        http://www.escher3d.com, https://miscsolutions.wordpress.com

                        3Dreamerundefined 1 Reply Last reply Reply Quote 0
                        • 3Dreamerundefined
                          3Dreamer @dc42
                          last edited by

                          Why not use a set of feeler gauges to check the Z accuracy? Home Z, command the head to Z=0.3 or 0.5 or anything else as long as it is higher than your 0.2mm Zmin limit, and use the feeler gauges to check the accuracy of the gap between the nozzle and the bed.

                          Yes, I'm currently working with feeler gauges.

                          3D Printing new Applications Researcher.

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