Bed Level Error

I was looking and wondering if there was a plugin that verifies if the bed level was good. Let me explain.

I have a BL Touch and use 25 touch points before every print. Almost every 3rd or 4th time there will be an early misfire of the touch arm and it will think that the are it touched was way higher than it is. It literally looks like a mountain on the bed. I was hoping that one of the bed level plugins would verify after a G29 (or whatever is used) code it sent it would read the values it got and if there is an anomaly, it would pause the print and send up an alert. Then either it can resend the g29 code again, or just probe the bad area.

Anyone know of something that does this?

There is a plugin called Bed Level Visualizer which will display a graphic of your print bed in a separate tab. You could make a point of reviewing it at the beginning of a print and abort if you thought things were amiss.

Thats what I've been doing, but I would rather have something safeguard it. I mean it is pretty transparent that something occurred. I mean I guess I could just add the M25 in my printer code, but I dont want to reprobe the entire grid if possible.

If it were me, I would replace the touch arm assembly.

But if in some parallel universe in which there are no parts available, I would consider using the GCode System Commands plugin to marry a command like OCTO711, for example, to a python script which would query the current leveling data from the firmware, look for any values above a threshold and then do something.

Let me see with that, The bl touch is fine, it sometimes will be a little too close or move a little to fast for the machine and misfire. My python is not good, what can i use as a resource?

Couldn't you slow down the speed? (This is the Fxxxx parameter of G0, possibly.)

G0 F300
G0 F3000

I could, but then it would take even longer. I use a 5x5 grid, and about every other probing I will have 1 misfire, but if I am not watching correctly, the print will be all messed up.

The script I'm looking for is (algorythm wise)

  1. After the G29 command finishes get the probe values
    2 Analyze values for any deviation above or below a threshold offset from 0
  2. If there is a point that is in question recheck that point and update the probe value.
    Rerun the G29 and test for anomalies again.
    4 if tested more than x times, throw up an error.
    5 if no errors go on your merry way.

I think @OutsourcedGuru is suggesting slowing things down to see if the "misfire" goes away. At the current 50% failure rate, the number of fast scans needed may well exceed the time taken by one slow scan with a much lower (and acceptable) failure rate.


Exactly. If you owned a canning facility and we're talking about 4,000 cans-per-hour sort of capacity then speeding up the conveyor belt is in the factory's best interest and then create high-tech to shunt mistakes off to the side.

From a reality check though, this is your printer and quality is more important than some perceived idea of how fast this should be in a perfect world (noting that this only occurs for a small fraction of the time of your overall print job's duration).

But if you're a geek like myself then drive on and create a plugin which matches your needs.

How do you find the default move rate. there are no G0 commands before the current call to the G29

That's a good question and one I can't answer at the moment since the site appears to have a problem. Go to school on one of your sliced gcode files and look for the first G0 command which includes an F parameter at the point where the actual work is being done.

I did and the first one is well past the G29 and a speed of F3600

Once upon a time, I repaired Teletypewriters and there was a dashpot adjustment which slowed down the end of an actual carriage return so that the first character on the next line would be where it's supposed to be. So there's a fine line between how-fast-can-I-carriage-return and how-well-will-it-print.

Is there a way to just reprobe one 1 point after a g29 is called?

G29 is a GCode command that triggers the process in the Marlin firmware. G29 has quite a few (optional) parameters depending on the flavor used so I'd suggest you carefully examine the Marlin Documentation,,,, and any documents referenced on those pages.

You will also need to know what options were used (Configuration.h, Configuration_adv.h) to compile the Marlin firmware used in your printer. For my LulzBot TAZ 6, I can find those files from the manufacturer's open source repositories.

Thank you I reviewed the documentation, but still am confused, I think I want to call the G29 W command for the point needed and give an x and y or I and j but still dont know what values to use and if the printer will update the level just at that point? Anyone had this?

These forums are a strong community of OctoPrint enthusiasts covering a wide range of printers, but not always "the printer you have". What you are asking for is specific to your printer and how it behaves and has little to do with OctoPrint. Unfortunately, I don't believe the expertise you require is available here.

In the documentation I pointed you to there are names of people that probably could answer your question(s). Marlin has its own set of forums and some of the people that frequent those forums may have the expertise you need.

Good Luck and I hope you find the answers you need.

1 Like

Cool, thanks

But it still would be a great plugin, or even a good addon to the BL touch/ABL Plugin