Navigation

    Duet3D Logo

    Duet3D

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Documentation
    • Order
    1. Home
    2. martincho
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 9
    • Best 1
    • Groups 0

    martincho

    @martincho

    1
    Reputation
    1
    Profile views
    9
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    martincho Follow

    Best posts made by martincho

    • RE: Auto Bed vs. Mesh Grid Compensation

      @fcwilt said in Auto Bed vs. Mesh Grid Compensation:

      Then how do you explain that on my printer I don't need G29 S1 (I assume you mean S1) to enable mesh compensation.

      I can run the mesh bed probing and check if mesh compensation is enable and it is.

      Are you using the most recent firmware?

      I can't explain it. That's why I asked @dc42 to chip in if possible. I'll check my firmware tomorrow, long day.

      Thanks.

      posted in General Discussion
      martincho
      martincho

    Latest posts made by martincho

    • RE: Auto Bed vs. Mesh Grid Compensation

      @fcwilt said in Auto Bed vs. Mesh Grid Compensation:

      Then how do you explain that on my printer I don't need G29 S1 (I assume you mean S1) to enable mesh compensation.

      I can run the mesh bed probing and check if mesh compensation is enable and it is.

      Are you using the most recent firmware?

      I can't explain it. That's why I asked @dc42 to chip in if possible. I'll check my firmware tomorrow, long day.

      Thanks.

      posted in General Discussion
      martincho
      martincho
    • RE: Auto Bed vs. Mesh Grid Compensation

      The default bed.g I got for the cartesian configuration does not enable mesh compensation. It runs everything but the map is never loaded. It's all the theatrics without the final functionality being enabled.

      This requires G29 S01, which is not included in the default bed.g.

      That was the root of the problem. G29 vs. G29 S01.

      BTW, I am not blaming anyone. This is just part of learning. My only input is that someone needs to consider that this might have become quite confusing and convoluted over time.

      As an aerospace engineer I don't think I am a dummy, and this had me going around in circles for quite some time because things would look like they worked better at times and then they would inexplicably break. Adding "S01" made the difference between an inconsistent printer and one I don't have to worry about any more. Surely I am not the only one who has fallen into this trap.

      posted in General Discussion
      martincho
      martincho
    • RE: Auto Bed vs. Mesh Grid Compensation

      Thanks for the input.

      I should clarify that my bed.g file is what was created by configtool.reprapfirmware.org. In other words, it's precisely what someone who goes to use a Duet for the first time on a custom build or retrofit is likely to end-up with.

      Now I know better, of course. However, the default bed.g created by this config tool seems to be, if I may be so bold to say, wrong.

      I'll bet if you polled 100 people as to what "Auto Bed Leveling" does or means they are likely to describe mesh leveling. I'll also bet that not one of them would conclude that the button does NOT load and activate the mesh leveling function.

      Anyhow, I figured this out after weeks of hair pulling. I am only posting this for the benefit of others who might be confused by first layer and other problems thinking they are doing everything correctly when, in reality, that button and the configuration file associated with it are part of the problem.

      posted in General Discussion
      martincho
      martincho
    • RE: Auto Bed vs. Mesh Grid Compensation

      Ah, OK, thanks for that. The button isn't labeled correctly then. Even then, the whole thing is really confusing because it runs "bed.g", which has G29 in it.

      Per the documentation on "Auto Bed Compensation" button:

      The "Auto Bed Compensation" button on a Cartesian or "Auto Delta Calibration" button runs G32. 
      This has different functions . On a Cartesian/CoreXY/SCARA machine it is used for 
      Bed levelling using multiple independent Z motors.
      

      Yet, if you look at documentation for G32:

      The firmware executes macro file bed.g if present instead of using the M557 coordinates.
      

      What does "bed.g" contain?

      bed.g
      ; called to perform automatic bed compensation via G32
      ;
      ; generated by RepRapFirmware Configuration Tool v2 on Wed Aug 14 2019 16:30:15 GMT-0700 (Pacific Daylight Time)
      M561 ; clear any bed transform
      G28  ; home all axes
      G29  ; probe the bed and enable compensation
      

      So...G32 really runs G29 but it seems it doesn't enable mesh compensation, for that you would need:

      G29 S1
      

      I don't know, the feeling I am getting is that the documentation isn't correct somewhere, the "Auto Bed Leveling" button isn't labeled correctly and the documentation sends in into a circular trip devoid of clarity. The fact that I was able to fix a bunch of problems by effectively adding just the "S1" portion to the G29 command tells me this might warrant a look by the Duet guys.

      This has caused weeks of consternation on my part. I am sure I'm not the only one who read "Auto Bed Compensation" and thought, well, that's what the button was for. Then, after using it, when the printer has problems, the last thing you think about is bed leveling...because you've already done it, including seeing the nice pop-up graphic showing you the measurements. You look at the documentation and it goes in circles, pretty much confirming that, again, you did the right thing. Until you notice "S1", try it, and all problems go away instantly.

      @dc42 a bit of wisdom on this might help. Thanks.

      posted in General Discussion
      martincho
      martincho
    • RE: Auto Bed vs. Mesh Grid Compensation

      @Phaedrux I saw your other response and dug into it, thanks.

      I guess I am now wondering if my firmware is out of date? The "Auto Bed Compensation" button --which I thought would probe and then enable compensation-- only seemed to do the first half of that. The only evidence I have in support of this is that it wasn't until I added probing code to the start of every part that my first layer became predictable and reliable.

      My problem is solved now. I am only continuing to dig in this discussion for the potential benefit of others who might run into this. This issue cost me weeks of pulling my hair trying to figure out what I was doing wrong.

      It would be nice if someone from Duet could answer and explain what the various buttons do in that menu.

      posted in General Discussion
      martincho
      martincho
    • RE: Z-home, probing and first layer math...

      Sorry for the late reply. Thanks for your feedback.

      Please see my update on my other thread. The printer is now working reliably but I have some questions about my findings.

      https://forum.duet3d.com/topic/11890/auto-bed-vs-mesh-grid-compensation

      posted in General Discussion
      martincho
      martincho
    • RE: Auto Bed vs. Mesh Grid Compensation

      OK, following up on this. I have to say I am still confused by the options. Yes, I have solved the problem but what I read in the documentation does not square-up with what I have seen happening.

      First, how did I fix it?

      I modified my startup script to include this before every single print job:

      M561    ; Clear any bed transform
      G28       ; Home machine
      G29       ; Probe the bed and enable compensation
      G29 S1  ; Enable mesh compensation
      

      This does exactly as the comments say. The machine changed from being unpredictable and not putting down a good first layer to reliably putting down an excellent first layer every single time.

      Menu

      What was I doing before? I was:

      • Manually turning on bed heating
      • Allowing the printbed to warm-up and stabilize (5 to 10 minutes)
      • Manually turning on the nozzleater
      • Allowing it to stabilize
      • Cleaning the tip from any ooze
      • Homing all axis
      • Using a feeler gauge to ensure the tip was 0.1 to 0.2 mm from the bed surface
      • Clean the print surface
      • Clicking the "Auto Bed Compensation" button
      • Waiting for results
      • Then I would launch the print job

      The above produced inconsistent results and it was hard to get a good first layer.

      I then changed my startup code to what's shown below and the printer went from having nothing but problems to being as reliable as can be. I also eliminated all the busywork as it became unnecessary to do all of that stuff. Today I simply run clean the print surface and launch the job. No problems. To be clear, I don't click on the "Auto Bed Compensation" button any more. It seems to be useless, at least for this purpose.

      I am trying to understand how it is that these changes made such a massive difference. In addition to this I am trying to understand why this many has seemingly equivalent options.

      The easiest question is:

      What's the difference between "Auto Bed Compensation" and "Run Mesh Grid Compensation"?

      The next question would be:

      What's the difference between "Disable Bed Compensation" and "Disable Mesh Grid Compensation"?

      And yet another:

      What's the difference between "Show Probed Points" and "Show Mesh Grid Heightmap"?

      Finally:

      Are the height maps generated by G32 and G29 the same? Why would you disable one vs. the other then?

      My current thinking is that the "Auto Bed Compensation" button seems to go through the motions of measuring the bed and that's where it stops. It does not seem to actually enable the compensation.

      Going by the documentation and UI, "Auto Bed Compensation" runs G32 and "Run Mesh Grid Compensation" runs G29.

      Despite what the documentation says, G29 by itself, does seem to enable bed compensation. I had to insert a G29 S1 in my startup code. In fact, my machine is only probing ONCE, despite having a G29 followed by a G29 S1.

      G32, again, per the docs, is supposed to load "bed.g". My "bed.g" has this in it:

       bed.g
      ; called to perform automatic bed compensation via G32
      ;
      ; generated by RepRapFirmware Configuration Tool v2 on Wed Aug 14 2019 16:30:15 GMT-0700 (Pacific Daylight Time)
      M561 ; clear any bed transform
      G28  ; home all axes
      G29  ; probe the bed and enable compensation
      

      Which is confusing, because it G32 documentation says:

      It probes the bed at 3 or more pre-defined points (see M557) and updates transformation matrix for bed levelling compensation.
      
      The firmware executes macro file bed.g if present instead of using the M557 coordinates.
      

      So...G32 doesn't actually run because I have a "bed.g" file that was generated when I used the RepRap Firmware Configuration Tool to setup the machine?

      In other words, do both "Auto Bed Compensation" and "Run Mesh Grid Compensation" run G29, resulting in compensation actually not being enabled?

      I would love to understand what's going on. As I said, I fixed it by no longer using this menu and resorting to the addition of a G29/G29 S1 probing cycle at the start of every print. Still, it would be great to understand.

      Thanks.

      posted in General Discussion
      martincho
      martincho
    • Auto Bed vs. Mesh Grid Compensation

      Can someone clarify the differences here. This is what I see:

      • Two forms of bed compensation
      • Two options to disable said compensations

      Bed Compensation

      Yet, when I run either one the process and apparent results seem to be the same. The points I defined in config.g, are probed and a map of the result is displayed:

      M557 X50:280 Y50:280 S46                     ; Define mesh grid
      
      • What is the difference, if any, between "Auto Bed Compensation" and "Run Mesh Grid Compensation"?
      • When would you use one versus the other, and why?
      • Does running either of these commands always result in activating compensation (after a successful run)?

      To be clear, what I think about when I say "bed compensation" is a procedure that maps flatness irregularities with the print surface to be used during printing to move the z axis up and down as necessary in order to maintain a constant tip-to-bed distance.

      I understand "Auto Bed Compensation" corresponds to G32 and "Mesh Grid Compensation" to G29. Having read the documentation on both, this is what I think each does:

      G32 ("Auto Bed Compensation")
      Runs the commands in "bed.g" and enables compensation. In my case:

      M561 ; clear any bed transform
      G28  ; home all axes
      G29  ; probe the bed and enable compensation
      

      G29 ("Mesh Grid Compensation" )

      Probes the points defined in M557 and enables compensation. It does not seem to run G28 before probing. I can't tell because the G-code isn't reflected in the G-code console.

      If the end result is the same, why are there two ways to disable compensation in the Machine Control page? "Disable Bed Compensation" and "Disable Mesh Grid Compensation".

      Am I correct to presume that if I want to probe the build-plate before every print I simply add these commands to my startup g-code?

      M561 ; clear any bed transform
      G28  ; home all axes
      G29  ; probe the bed and enable compensation
      

      Thanks,

      -Martin

      EDIT:

      I should add that the one distinguishing factor I am able to garner from what is reflected in the g-code console is:

      "Auto Bed Compensation" runs the g-code in bed.g, saves to "heightmap.csv" and DOES NOT seem to enable mesh leveling.

      "Mesh Grid Compensation" runs G29 and then explicitly enables it by running G29 S1

      If I understand the documentation on G29 correctly the plain G29 or G29 P0 command DOES NOT enable compensation, only G29 P1 does:

      S0 (default if no S parameter) Probe the bed, save the height map in a file on the SD card, and activate 
      bed compensation. The height map is stored in file is /sys/heightmap.csv.
      
      S1 Load the height map from file and activate bed compensation. The default filename is as for S0 but a 
      different filename an be specified using the P parameter.
      posted in General Discussion
      martincho
      martincho
    • Z-home, probing and first layer math...

      I am trying to debug first layer issues and have been seeing some inconsistencies. It would be useful to understand the math that connects initial z-home height (the piece of paper), initial layer height (slicer setting) and probing. Using both Simplify3D and Cura.

      Prior to all of my print jobs I allow a few minutes for both the print bed and nozzle to reach operating temperature. I do this in order to eliminate, to the extent possible, thermal expansion issues.

      Once everything is at temperature I use "Home All" and check z-home with 0.10 mm, 0.15 mm and 0.20 mm feeler gauges. The objective is to have the 0.15 mm gauge slide under a clean nozzle while slightly scrapping. The 0.20 should not go in and the 0.10 should be loose. In other words: 0.10 mm < z <= 0.15 mm.

      With that set, as well as both extruder and bed now nicely stabilized at temperature, I run "Auto Bed Compensation".

      Then I print.

      I machined my print bed on an industrial CNC milling machine (Haas VF-2), which makes it extremely flat (in the order of 0.01 mm, likely better, flatness). Regrettably the PEI sheet on top of it makes it less so. Still, it's very flat.

      That said, I have a problem with the mount such that the bed has some tilt to it. At the moment it is quite severe, in the order of 1 mm down along the front edge. I will fix this, but this is also what prompted me to try and understand the Duet math involved.

      The probing system relies on me telling it how far the extruder's tip is from the optical probe's trigger point. I can arrive at this number with very good accuracy, certainly in the order of +/- 0.1 mm and better if necessary.

      OK, long intro. Here's are the questions:

      If I set my slicer (using both Simplify 3D and Cura) for, say, a 0.2 mm first layer, how does the board make use of the probing data to direct the z axis?

      Put a different way, how do errors or variations in probe location relative to the extruder tip affect first layer z?

      The optical probe is mounted on the fan duct, which is printed from PLA. The coefficient of thermal expansion of PLA is in the order of 70 um/m°C. Which means it will move about 0.05 mm for a delta-T of 10 °C (about 5 cm of plastic from aluminum mount to optical sensor position). I have actually measured it moving as much as 0.10 mm between the entire machine being at room temperature vs. nicely warmed-up. Clearly this needs improvement. Still, I am after understanding the z-axis first layer math at this point.

      Let's say the optical sensor trigger point setting in the config file is off by 0.1 mm while actually printing (my height calibration was done while cold).

      So, we have:

      • Mechanically set z-home gap of 0.10 mm < z <= 0.15 mm
      • In other words, machine z-home does not touch the PEI sheet
      • Optical sensor trigger point 0.1 mm closer to tip (in z) due to thermal expansion (i.e.: config is 2.5 mm and actual measured distance when hot is 2.4 mm)
      • Slicer first layer set to 0.2 mm thickness
      • Print bed flat within 0.01 mm (with some thermal dependencies)
      • Print bed tilted down 1.0 mm in the front (with some thermal dependencies)

      A few questions:

      • What is the height of the z axis during first layer printing?
      • What is the effect of the z position error of the optical probe trigger point on the commanded z axis first layer height?
      • Should the nozzle's mechanical z home position be set to zero (touching the print surface) instead?
      • Should it be set to a slightly negative value off-build-plate and then use the touch probe to set the working z-zero? If so, how?
      • How does one reliably deal with printing from a cold start vs. hot start, other than calibrating hot and never printing from a cold start again?
      • What is the best approach to automating all of this such that the necessary probing and calibration happens at the start of every print?

      The reason I am asking these questions is that I seem to be getting inconsistent results. The only thought I have at the moment is that the combination of thermal expansion, z-probe related math and slicer settings are conspiring to make things difficult to calibrate.

      I do have the option to mount the optical sensor to an aluminum plate (CTE ~ 23 um/m°C ), and I will. This would require a significant amount of work. If I could avoid it for now it would be great.

      Thanks.

      posted in General Discussion
      martincho
      martincho