Page MenuHomeAleph Objects Inc

Feature Request: Store Bed Matrix
Open, HighPublic

Description

In the past, we have had requests from customers to be able to store the bed leveling matrix, to prevent cleaning and wiping before each print.

If we could implement a process that would allow customers to run through the probing routine by option (Whether multiple times for an average, or when things get out of alignment), and store the settings it could save a lot of time.

Related Objects

Event Timeline

karrad created this task.Dec 12 2017, 11:14 AM
karrad renamed this task from Store Bed Matrix to Feature Request: Store Bed Matrix.Feb 15 2018, 12:58 PM
karrad lowered the priority of this task from Normal to Low.
alexei changed the edit policy from "Custom Policy" to "Marlin (Project)".May 18 2018, 11:40 AM
alexei added a subscriber: marcio.Jun 19 2018, 8:41 AM
marcio closed this task as Resolved.Aug 9 2018, 8:13 AM

This feature already exists in Marlin 1.1.9, possibly in earlier versions as well.

karrad reopened this task as Open.Aug 9 2018, 1:11 PM

@marcio Is this activated? What do we need to do to implement on our machines with G29?

marcio added a comment.Aug 9 2018, 1:14 PM

Yes. It is active. If you do a G29, followed by a M500, then that bed leveling matrix will be present the next time you power up.

marcio added a comment.Aug 9 2018, 1:16 PM

However, my guess is that your Z-offset would be wrong if you actually tried to print. I think you need something a bit more accurate than a Z-max endstop to actually take advantage of not having to have G29

marcio added a comment.Aug 9 2018, 1:18 PM

It might be possible to substitue the G29 with a single Z probe: http://marlinfw.org/docs/gcode/G030.html

marcio added a comment.Aug 9 2018, 1:39 PM

Actually, it looks like the correct thing to do would be to use G38.3, followed by G92 to reset the Z height.

So, if the washers was 1.5 mm thick and the probe point was at (-4, 163), then the following sequence of commands should allow you to probe the Z height without doing a full G29:

G0        X-4 X163 Z5 ; Move above washer
G38.3  Z-4                   ; Find surface of washer
G92 Z1.5                      ; Set Z height of top of washer
karrad added a comment.Aug 9 2018, 2:11 PM

@marcio Would there be a way to pull the set marlin offset using gcode commands? We have a lot of customers tweak their offset and store to eeprom

marcio added a comment.Aug 9 2018, 2:21 PM

For that we would probably need to add our own GCODE command, or add an argument to G38.3

karrad claimed this task.Nov 20 2018, 2:33 PM
karrad moved this task from Backlog to Next Release (3.6) on the Cura LulzBot Edition board.
zachah added a subscriber: zachah.EditedDec 5 2018, 9:17 PM

I was able to get UBL mesh bed saving working on the Taz 6 a few months back. I've been using it for a while on my Taz 5 at home and thought it would be cool on the Taz 6 so I compiled a firmware with that enabled for the Taz 6 too.

I've attached Taz 6 Aerostruder firmware with UBL enabled. Here is the start g-code that I used. The parts that are commented out are parts that weren't needed from the stock g-code and lines with the comments in caps are the new/changed lines.

;This G-Code has been generated specifically for the LulzBot TAZ 6 with Aerosturder
M75 ; start GLCD timer
G26 ; clear potential 'probe fail' condition
G21 ; set units to Millimetres
M107 ; disable fans
M420 S0 ; disable leveling matrix
G90 ; absolute positioning
M82 ; set extruder to absolute mode
G92 E0 ; set extruder position to 0
M140 S{material_bed_temperature} ; start bed heating up
G28 XY ; home X and Y
G1 X-19 Y258 F1000 ; move to safe homing position
M104 S{material_soften_temperature} ; SET SOFTEN TEMP
G28 Z ; home Z
G1 E-15 F100 ; retract filament
M104 S{material_wipe_temperature} ; SET WIPING TEMP
G1 X-15 Y100 F3000 ; move above wiper pad
G1 Z1 ; push nozzle into wiper
G1 X-17 Y95 F1000 ; slow wipe
G1 X-17 Y90 F1000 ; slow wipe
G1 X-17 Y85 F1000 ; slow wipe
G1 X-15 Y90 F1000 ; slow wipe
G1 X-17 Y80 F1000 ; slow wipe
G1 X-15 Y95 F1000 ; slow wipe
G1 X-17 Y75 F2000 ; fast wipe
G1 X-15 Y65 F2000 ; fast wipe
G1 X-17 Y70 F2000 ; fast wipe
G1 X-15 Y60 F2000 ; fast wipe
G1 X-17 Y55 F2000 ; fast wipe
G1 X-15 Y50 F2000 ; fast wipe
G1 X-17 Y40 F2000 ; fast wipe
G1 X-15 Y45 F2000 ; fast wipe
G1 X-17 Y35 F2000 ; fast wipe
G1 X-15 Y40 F2000 ; fast wipe
G1 X-17 Y70 F2000 ; fast wipe
G1 X-15 Y30 Z2 F2000 ; fast wipe
G1 X-17 Y35 F2000 ; fast wipe
G1 X-15 Y25 F2000 ; fast wipe
G1 X-17 Y30 F2000 ; fast wipe
G1 X-15 Y25 Z1.5 F1000 ; slow wipe
G1 X-17 Y23 F1000 ; slow wipe
G1 Z10 ; raise extruder
M104 R{material_probe_temperature} ; SET PROBE TEMP
;G1 X-9 Y-9 ; move above first probe point
M204 S100 ; set probing acceleration
;G29 ; start auto-leveling sequence
M420 S1 ; enable leveling matrix
M420 L0 ;LOAD MESH 1
G28 Z ; HOME Z
M425 Z ; use measured Z backlash for compensation
M425 Z F0 ; turn off measured Z backlash compensation. (if activated in the quality settings, this command will automatically be ignored)
M204 S500 ; restore standard acceleration
;G1 X0 Y0 Z15 F5000 ; move up off last probe point
G4 S1 ; pause M400 ; wait for moves to finish
M117 Heating... ; progress indicator message on LCD
M109 R{material_print_temperature} ; wait for extruder to reach printing temp
M190 S{material_bed_temperature_layer_0} ; wait for bed to reach printing temp
G1 Z2 E0 F75 ; prime tiny bit of filament into the nozzle
G92 Z7.3 ;SET Z TO 7.3
M117 TAZ 6 Printing... ; progress indicator message on LCD

To enable UBL first you'll need to initialize/reset the eeprom.

Then go into prepare and enable UBL.

After that make sure your nozzle is clean and run prepare>UBL>build cold mesh.

Once you've done that you can save the mesh in slot 0 and try out printing without auto-leveling every time{F2265678}

Orias added a subscriber: Orias.Dec 6 2018, 8:34 AM
robby added a subscriber: robby.Jul 1 2019, 10:45 PM
bmh added a subscriber: bmh.Jul 11 2019, 9:36 AM
karrad removed karrad as the assignee of this task.Aug 23 2019, 11:42 AM

@zachah Sorry for the delay in this one, it looks to be a we bit of an older ticket. What FW version did you compile, and what changes were required on this?

Any chance this will get built and brought into Lulzbot Cura? It'd be a huge convenience to those of us who have finicky auto-leveling, as well as save time on consecutive prints.

@robby It is one we are definitely going to look at implementing. We will need to do some testing on reliability and repeatability and get the specific details of what will be required. If you are interested in giving it a try we can get a specific FW posted for you once it is ready. What specific printer and tool head combination are you running?

@karrad I would love that, thanks! I'm using the Taz6 with the stock single extruder.

@robby sounds good, we will post the .hex file and directions once we can get details on the firmware.

bmh added a comment.Aug 23 2019, 1:41 PM

@robby It is one we are definitely going to look at implementing. We will need to do some testing on reliability and repeatability and get the specific details of what will be required. If you are interested in giving it a try we can get a specific FW posted for you once it is ready. What specific printer and tool head combination are you running?

@karrad, this would be darn near the best thing since the creation of beer!!!

The Pro had a lot of issues upon release and you guys have done an admiral job of resolving many of the issues and at a decent pace and I would like to say I love seeing how you are actually responsive to us users :-) (thank you).

However, I hate, I mean REALLY HATE the bed leveling :-) -- it is _very unreliable_ and at least for me, the one item that makes me curse often and the one thing that does prevent me from recommending the printer to others.

If the leveling could be done on-demand and then stored that would be a HUGE HUGE HUGE win and while it may not improve the reliability, it will at least mask it by letting someone get a good leveling and then forget about it until the need arises.

So, you asked @robby if he would test ... I will be happy to test too if this will apply to the TAZ Pro also and I have a Taz 6 too I would be happy to test on as well.

Oh my goodness, I am just dreaming of this day :-) ... and I am not kidding :-).

bmh added a comment.Aug 23 2019, 1:49 PM
In T1506#58642, @karrad wrote:

@marcio Would there be a way to pull the set marlin offset using gcode commands? We have a lot of customers tweak their offset and store to eeprom

For whatever the $0.02 is worth, yes, not losing our ability as users to adjust the offset seems paramount.

robby added a comment.Aug 23 2019, 2:19 PM

I just want to second everything @bmh wrote. I can't get over how great Aleph support is and really appreciate all the work y'all do for us users. Bed leveling is the one part of my Taz6 experience that is slow and frustrating.

karrad claimed this task.Aug 23 2019, 2:24 PM

@bmh @robby First of all, thank you for the kind words! We appreciate all the feedback we can get and take all suggestions/comments seriously.

Double checking with @marcio It looks like this feature is already implemented in 1.1.9.xx FW which is currently loaded in 3.6.18 for all printers except for Pro and Workhorse.

It looks like this would just require some changes to start gcode to get testing on reliability and repeatability. While @zachah has a good starting point there, I would like to run some tests in house to ensure we are not going to damage any of your machines while helping us out. We should have an update here next week and I will be sure to tag you both once ready for external testing.

karrad raised the priority of this task from Low to High.Aug 23 2019, 2:24 PM

It looks like I wrote 71 in the name which means it should be firmware 1.1.5.71

For this first I enabled UBL under bed leveling options. For probe points X, Y under UBL options I set those to 2. Then if I remember correctly I used a negative probe inset of 9 to get it probing onto the washers. G29 retry was commented out as well because it was causing issues with UBL.

When I compiled I got a sanity check warning about the amount of probe points being less than 3. I was able to comment out that sanity check and it compiled without issues.

A bonus of UBL is that you can adjust the individual probe point set values after calibrating automatically. So if one of your corners is printing higher or lower than the others you can simply raise or lower that corner through the LCD menu.

So more or less I just enabled it in the firmware config files. I don't even think we'll need to change the start gcodes with Marlin 2. I was able to compile Marlin 2 with UBL for a workhorse last week and run the quick-circle straight from the existing g-code on the SD. The code below, which is already in our start gcode, was added to prevent bed leveling compensation stacking, and it enables the bed leveling matrix for UBL as well.

M420 S1                                   ; enable leveling matrix
bmh added a comment.Aug 23 2019, 2:40 PM

@bmh @robby First of all, thank you for the kind words! We appreciate all the feedback we can get and take all suggestions/comments seriously.

Double checking with @marcio It looks like this feature is already implemented in 1.1.9.xx FW which is currently loaded in 3.6.18 for all printers except for Pro and Workhorse.

It looks like this would just require some changes to start gcode to get testing on reliability and repeatability. While @zachah has a good starting point there, I would like to run some tests in house to ensure we are not going to damage any of your machines while helping us out. We should have an update here next week and I will be sure to tag you both once ready for external testing.

Sounds good ... and hopefully you can get it in the Pro too for testing at the same time :-). You guys have a great weekend.

Just so I don't lose it, it does look like a more efficient way will be to activate it in the FW itself to allow LCD options.

from @zachah

"it" in that statement will be referring to UBL. I enabled UBL and told it to ignore the sanity check for the amount of probe points. The only other thing that will be needed is telling it/ figuring out where the probe points are. That's done with the #define MESH_INSET line under the unified bed leveling options. If I remember -9 is what worked when I was experimenting with a Taz 6

marcio added a comment.EditedSep 4 2019, 9:31 AM

As far as I can tell, UBL is not required for saving bed leveling information. The bed leveling information is stored using M500. When the printer powers on again, a user can re-enable bed leveling by typing M420 S1. I believe this request keeps coming up because people try printing without G29 and without M420 S1. You need one of those in your start GCODE in order to enable bed leveling. The only difference is that G29 re-probes the bed, while M420 S1 will simply used the saved information.

nopick added a subscriber: nopick.Sep 8 2019, 11:35 AM
bmh added a comment.EditedOct 8 2019, 10:19 AM

As far as I can tell, UBL is not required for saving bed leveling information. The bed leveling information is stored using M500. When the printer powers on again, a user can re-enable bed leveling by typing M420 S1. I believe this request keeps coming up because people try printing without G29 and without M420 S1. You need one of those in your start GCODE in order to enable bed leveling. The only difference is that G29 re-probes the bed, while M420 S1 will simply used the saved information.

I tried doing this on the Pro and it did not seem to work. What I did was:

M420 S0 ; turn off bed leveling
G28 ; home
G29 V3 ; do leveling
M500 ; save

turn machine off and wait a minute, turn machine back on

G28
M420 S1

Then I did G0 commands to move around and the leveling did not seem to take. For example, when I did G0 Z1 it pressed the bed down (prior to power cycling doing various G0 Zx's did work as expected).

I really hope this can be done - I hate, hate, hate the leveling aspect of this machine :-). But love you guys. :-)

Maybe I just did something wrong in my sequence. Also, the G38.3 mentioned previous in this task, comes back with "not found" on the Pro.

EDIT (add): What would really be nice too is being able to just manually level the bed and save it and totally ditch the "auto leveling".