Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Understanding AUTOBEDLEVELING/AUTO BED LEVELING #7562

Closed
ghost opened this issue Aug 25, 2017 · 40 comments
Closed

Understanding AUTOBEDLEVELING/AUTO BED LEVELING #7562

ghost opened this issue Aug 25, 2017 · 40 comments

Comments

@ghost
Copy link

ghost commented Aug 25, 2017

What autobedleveling do

ABL is not a rectifier , but only a repeter of the bad surface on all your object
ABL is just made to make adhesion but the price of adhesion is your object deformation
ABL copy your surface and will make the same surface for all layer of your object
ABL don't modify extrusion for some first layers , to make a plane vertical ,
and parallel to the ' X & Y ' rods
ABL , construct a tower perfectly perpendicular to the calculated probed plan
ABL is not serious , you must have an absolute PERFECT PLAN SURFACE ,
it's not serious to build and object on a mountain buildplate , the perfect surface is the first tool needed to build and object
LINEAR or BILINEAR ? , now I think you can find by yourself , linear will make a 'possible plan'
by using the max height of your bent bed', it's a risk to make zero adhesion
if too high somewhere, and BILINEAR make a mesh , adhesion is perfect , but mesh is respeated infinitly

The magic of FADE_HEIGHT

ENABLE_LEVELING_FADE_HEIGHT is the only option that will linearise the print plan, you can add this option in the firmware for all leveling system and now only you are in harmony with all the axes of the printer. iIt gradually reduces leveling correction until a set height is reached, set with M420 Z
_Now you know all about Autobedleveling .

Unified Bed Leveling

UBL , is a bilinear with fade height too , but very complete to make precision mesh , but in theory , everybody have a ' correct ' bed and will not need to probe some other points after the automesh generated. UBL is an ULTRA BIG TOOL to probe where it's needed 'if needed ' to use a bad bed , but if you have a good bed , it's easy too, it has Tools and Utility to try a print test and more. As I said before , UBL must be simplified and I'm sure in a few weeks , UBL will be a smart system with only one click . I recommend you use it to report all informations to help the developers to make it more simple.
You can save your mesh , and use it on each print
No need to enter dimensions values in firmware , total area is used automaticly
You can make a mesh without probe and with an endstop ' manually meshing '
You can make it with hot bed and nozzle at different temps
You can adjust , add a new probed point if needed outside of the predefined grid
You can make a test print to validate if you are not sure of your mesh

Why UBL ?

Because , all devellopers have decided to make war to the first layer. It's a good idea because , it's really possible. And it's made now , UBL will scan all the surface ' 10x10 points by defaut' , will make a smooth mesh that can be very precise with the interpolation between probed points . If we set a good mesh 'UBL is made for this ' , we can have the first layer perfect like the second layer lol !! No you're not dreaming , play with UBL and you will have this results. It's why , I have made this guide , to guide you to the most Advanced AUTOBEDLEVELING.

Thks to @Roxy-3D

For better results

For information , the only material that can help you to have a perfect bed immediatly ,
is the vitroceram glass or borosilicate , 3mm glass can hold 2kg of plastic without bending ,
if you can buy 4mm or 5mm glass , you will have a buildplate impossible to bend with the heat or the weight of the object
My buildplate is 400x400 and 3mm and with this , i don't need autolevel , the bed is so perfect ,
i just use the probe , just for swapping the nozzle and adjust offset by firmware .

So , the first job , is to make 'mechanicaly' an amazing buildplate , and if you have this , you can use a probe ' bltouch' or other to probe the zero , because when you change the nozzle , you don't have to touch your bed screw , but just to find the offset by software , no mechanical modifications
The probing with sensor offer to never touch the bed screws , but , sometimes , you can verify it lol
To make a perfect bed on another already installed , cut a borosilicate glass and fix it , to fix it you can glue it with silicone '5mm of perimeter glued is enough and very solid ' , and place under one or two coats of aluminim paper to equal to the height of the silicone of the edge , this solution works , the bed can be unmounted and back to origin mounting and the heat conduction is good.

Thks for all that want to complete this topic

How UBL works

For the moment UBL is too young , and not simplified , you have 20/30 menus and submenus but in resuming it's just a one click all in one system , I'm sure in a close future , UBL , will be a total automated system.

LCD Guide

Before
-Mesh Inset must be good , if not , the probe can not go everywhere , if you choose a 3x3 grid ' in firmware' , your mesh must probe 9 times if not , set better the MESH INSET , or use the manual mode
-Try to inform the firmware of the area the probe can reach , if not , you will have 'unprobed zone ' and you willl have to make it manually and it takes time for nothing.
-INITIALISATION OF MEMORY , if not , you will have bip and bip and nothing else

After
Create cold mesh in menu ' you can heat the bed and nozzle if you want precision '
Store in a Slot
Activate UBL
Store EEPROM if you want to keep this settings for the next boot ' the mesh is stored but not activated

Test
you make a movement NOT BY LCD , you need a true GCODE INSTRUCTION ,of x or y and you see if z motors move to make correction
If you want the perfect correction you use ' validate menu' and a test print will start
after the print , you can adjust , add points , add new values in manual mode , or increase the auto grid

Print Behavior
With UBL precision , your first layer will be perfect mathematicly and it's a problem for users that never have this precise settings. Why ? Because the first layer is not compressed and the risk of bad printing is possible , then , ask to your slicer , to reduce a little the first layer height and SLOW the speed , the extrusion will have no pressure on the build plate and , the fixation of the melt plastic can be corrupted.
it's why , the print test is included in the menus , because , it's not possible to make an UBL without human intervention to validate before use
You can reduce height , but you can increase extrusion too

Steeve !

If you have win , now , you can tweak value and make your own adventure , you know all is needed to go deep in this abyss

Sorry for my bad english , i'm FRENCH !

Here are the gcode Steps , equal to LCD steps

No problem with this , let's follow

M502          ; Reset settings to configuration defaults...
M500          ; ...and Save to EEPROM. Use this on a new install.
M501          ; Read back in the saved EEPROM.  

For better probing , bed and nozzles heated

M190 S65      ; Not required, but having the printer at temperature helps accuracy
M104 S210     ; Not required, but having the printer at temperature helps accuracy

Homing ' of course '

G28           ; Home XYZ.

Now you need to probe the needed point or the desired points as you want

G29 P1        ; Do automated probing of the bed.

Or

G29 P2 B T    ; Do manual probing of unprobed points. Requires LCD.

Or

G29 P3 T      ; Repeat until all mesh points are filled in.
G29 T         ; View the Z compensation values.

Probing is finished , and the map must be stored

G29 S1        ; Save UBL mesh points to EEPROM.

The miracle now !!! The famous height of the perfect linearised layer with all your axes

G29 F 10.0    ; Set Fade Height for correction at 10.0 mm. 
          Depending of the type of the printed object , must be modified if needed

Permanent parameter :: ON/OFF after booting , if saved in EEPROM take care !
No need of G29 , before printing , once activated , you can print directly .

G29 A         ; Activate the UBL System.
M500          ; Save current setup. 
                   ;WARNING: UBL will be active at power up, before any `G28`.

Autotesting Pattern

This tool 'if defined in Firmware ' will heat bed and nozzle as specify and print some lines , you will now see where you need to add some probing points to perfect you mesh but always with the minimum points as possible ' of course'

G26 C P T3.0  ; Produce mesh validation pattern with primed nozzle  PLA temperatures
              ; are assumed unless you specify B 105 H 225   for ABS Plastic
G29 P4 T      ; Move nozzle to 'bad' areas and fine tune the values if needed
              ; Repeat G26 and G29 P4 T  commands as needed.

G29 S1        ; Save UBL mesh values to EEPROM.
M500          ; Resave UBL's state information.

Now I'm sure everybody has a better vision of the AUTOLEVELING system and all types, you can now access to the firmware documentation here

http://marlinfw.org/docs/features/unified_bed_leveling.html

Thks For all devellopers !

Enjoy !

@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 25, 2017

'Please just add information , no discussion please '

BULL FU#$K!#g $H!+ You put stuff like this in your post and you don't expect some discussion?

UBL ???? Horrible and so many settings , we are all totally AFRAID , to play with UBL ,

At:
https://github.com/MarlinFirmware/MarlinDocumentation/blob/master/_features/unified_bed_leveling.md

There are simple directions that tell you how to bring up UBL after you can

The printer should be able to successfully print a small object at the center of the bed. Most problems bringing up the UBL Bed Leveling system occur when this step has been ignored. It is very important to verify the configuration.h settings can make this happen.

The following command sequence can then be used to home, level, and then fine-tune the results:

M502          ; Reset settings to configuration defaults...
M500          ; ...and Save to EEPROM. Use this on a new install.
M501          ; Read back in the saved EEPROM.  

M190 S65      ; Not required, but having the printer at temperature helps accuracy
M104 S210     ; Not required, but having the printer at temperature helps accuracy

G28           ; Home XYZ.
G29 P1        ; Do automated probing of the bed.
G29 P2 B T    ; Do manual probing of unprobed points. Requires LCD.
G29 P3 T      ; Repeat until all mesh points are filled in.

G29 T         ; View the Z compensation values.
G29 S1        ; Save UBL mesh points to EEPROM.
G29 F 10.0    ; Set Fade Height for correction at 10.0 mm.
G29 A         ; Activate the UBL System.
M500          ; Save current setup. WARNING: UBL will be active at power up, before any `G28`.
;---------------------------------------------
;--- Fine Tuning of the mesh happens below ---
;---------------------------------------------
G26 C P T3.0  ; Produce mesh validation pattern with primed nozzle  PLA temperatures
              ; are assumed unless you specify B 105 H 225   for ABS Plastic
G29 P4 T      ; Move nozzle to 'bad' areas and fine tune the values if needed
              ; Repeat G26 and G29 P4 T  commands as needed.

G29 S1        ; Save UBL mesh values to EEPROM.
M500          ; Resave UBL's state information.

How about you ACTUALLY TRY THOSE DIRECTIONS before you post crap like that. I bet those steps pretty much get you perfect adhesion across 100% of your bed 100% of the time.

Thks for all that want to complete this topic
'Please just add information , no discussion please '

Please JUST FOLLOW THOSE STEPS. And no discussion from you until you do!

@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 25, 2017

ok G28 ; Home XYZ.
** Not ok** G29 P1 ; Do automated probing of the bed.
Question Where are the point location of the definition of the points for probing ? In firmware ?

Show some initiative. JUST DO IT and see what happens.

@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 25, 2017

The automated G29 P1 probing does NOT need any configuration of probe points. It is building a mesh. Just do it and watch it probe the entire bed to get the first iteration of the automatically generated mesh.

Everything after this step is aimed at filling in unprobed mesh points and further refinement of the accuracy of those mesh points.

@Tannoo
Copy link
Contributor

Tannoo commented Aug 26, 2017

Isn't there already a guide in the documentation?

@ghost
Copy link
Author

ghost commented Aug 26, 2017

@Roxy-3D . I'm googlized now !
Thks for help

@ghost ghost changed the title Understanding AUTOBEDLEVELING Understanding AUTOBEDLEVELING/AUTO BED LEVELING Aug 26, 2017
@ghost
Copy link
Author

ghost commented Aug 28, 2017

@Roxy-3D @thinkyhead
Please can you answer me about this

Issues
1-) Why G29 Jxxxxx make a probing grid but impossible to save it ?
2-) How to know the actual Fade Height ?
3-) what is the defaut fade height value in UBL
4-) How to purge EEPROM and delete all grid
5-) Why the ubl utility in lcd menu tell me to choose my number point and my custom grid , and when i make a grid outside of the ubl menu , the grid is made with the number points defined on the firmware

Curiosity

1-) Why no LCD menu for FADE HEIGHT ? very usefull to SEE and to SET
2-) why no initialising memory steps , in ' step by step ubl ' VERY USEFULL FOR BEGINNER
3- Why no possibilites to change the grid resolution by LCD ' may be i don't know how '
4-) why no ' storing eeprom ' for mesh , and for setup in ' step by step ' Very usefull to have all in one

I don't know i have made ' right ' questions , but , all help about each topic will be appreciated

THks

@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 30, 2017

1-) Why G29 Jxxxxx make a probing grid but impossible to save it ?

G29 J is used to tilt the mesh. You can save the tilted mesh if it really does make sense. But I doubt that really makes sense most of the time..

2-) How to know the actual Fade Height ?

I use G29 W (What? command)

3-) what is the defaut fade height value in UBL

10mm. UBL was developed with that number and it is well tested. It is possible some people need or want a different number. But pretty much, 10mm works for most printers.

4-) How to purge EEPROM and delete all grid

You could do a G29 P0 which will zero the current mesh. And then save it on top of any mesh you want destroyed.

5-) Why the ubl utility in lcd menu tell me to choose my number point and my custom grid , and when i make a grid outside of the ubl menu , the grid is made with the number points defined on the firmware

I'm not sure what you are looking at. You should probably give us the full path through the LCD Menus so we know what you are seeing. @Tannoo might know the answer off of the top of his head.

1-) Why no LCD menu for FADE HEIGHT ? very usefull to SEE and to SET

I guess nobody has gotten around to adding that if it isn't there. For that kind of stuff, I would just use PronterFace to send a G29 F 12.34 if I wanted to change it. For me, command line control is easier.

2-) why no initialising memory steps , in ' step by step ubl ' VERY USEFULL FOR BEGINNER

I'm not sure that is true. This text can be found at: https://github.com/MarlinFirmware/MarlinDocumentation/blob/master/_features/unified_bed_leveling.md

The following command sequence can then be used to home, level, and then fine-tune the results:

M502 ; Reset settings to configuration defaults...
M500 ; ...and Save to EEPROM. Use this on a new install.
M501 ; Read back in the saved EEPROM.

3- Why no possibilites to change the grid resolution by LCD ' may be i don't know how '

The mesh is very expensive from a RAM memory perspective. And the access to the mesh is optimized in a number of ways. Pretty much, if you want to change the mesh dimensions, you need to re-build the firmware. Most people don't change mesh sizes. In fact, the most common mesh dimensions are 10 x 10 and that seems to work for most machines. I'm currently using 10 x 10 on my 400 mm x 400 mm printer.

4-) why no ' storing eeprom ' for mesh , and for setup in ' step by step ' Very usefull to have all in one

I'm not sure this is true. I see at least two G29 S1's in the step by step directions at: https://github.com/MarlinFirmware/MarlinDocumentation/blob/master/_features/unified_bed_leveling.md

And the M500 at the end will save the mesh if the firmware is configured that way.

@Tannoo
Copy link
Contributor

Tannoo commented Aug 30, 2017

Why the ubl utility in lcd menu tell me to choose my number point and my custom grid , and when i make a grid outside of the ubl menu , the grid is made with the number points defined on the firmware

I am lost.
There is no UBL Utility in the LCD menu.
At no point is there a selection to change the grid from the LCD.
The grid is hard-coded in the firmware.
Change that in Configuration.h, re-compile, then flash.

  #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

why no ' storing eeprom ' for mesh , and for setup in ' step by step ' Very usefull to have all in one

You mean this one?

      MENU_ITEM(function, "7 " MSG_UBL_SAVE_MESH, _lcd_ubl_save_mesh_cmd);

It shows this on the LCD: 7 Saved Bed Mesh

Scroll down in the UBL Step-by-Step menu to see all options. You will see seven of them.

Refresher on the Step-by-Step UBL:

    /**
     * UBL Step-By-Step submenu
     *
     * << Unified Bed Leveling
     *    1 Build Cold Mesh
     *    2 Smart Fill-in
     *  - 3 Validate Mesh >>
     *    4 Fine Tune All
     *  - 5 Validate Mesh >>
     *    6 Fine Tune All
     *    7 Save Bed Mesh
     */

How to know the actual Fade Height ?

By the LCD, there are two ways to see this:

  1. Open a serial monitor and navigate LCD to Prepare > Unified Bed Leveling > Output UBL Info
    (This issues a G29 W like Roxy stated)

  2. Without the serial monitor, you can edit the fade height which will show you the current value first. This is a little buried into the menu but, it is there:
    Navigate the LCD to Prepare > Unified Bed Leveling > UBL Tools > Edit Mesh > Adjust Mesh Height > Height Amount

@ghost
Copy link
Author

ghost commented Aug 30, 2017

@Tannoo
I don't know who you are .... But I LOVE YOU !
All i want to read , you write it ...
Thk you very much
Now it's too late , i go to sleep , but tomorow i will play with ubl to test my new knowledge and i will be back

' I'm sure everybody is ok to say UBL is not an Easy access for '3d maker ' " , too much possibilities and user is lost between them. Not all maker are 'informaticians ' or ' devellopers ' , some are just ' artist or designer ' , and UBL technology not help them
The old leveling was one touch ready , and now , it's a big adventure and it's really impossible to understand it without a long learning.
The future of UBL is to be understood quickly and by anyone , not for big brains, printing must be just printing and not A SCHOOL OF C++ and Gcode and REVERSE ENGINEERING ' , if UBL not simplified , then it will stays an option for the github community and noone else , so many people that never use gcode instructions , but they print 2 kg of plastics everyday in a designer office . I'm dreaming to give us the perfect first layer , but UBL not ready for the moment

@Tannoo
Copy link
Contributor

Tannoo commented Aug 30, 2017

UBL is always evolving. The thought is, that one day it will be just a "point-and-level" solution.

@ghost
Copy link
Author

ghost commented Aug 31, 2017

Some bad questions have been made , just for the only reason of my bad 'english' , but now , i have enough knowledge to understand them
I'm very surprise , of the firmware integrated grid resolution , i believed it was just a database used databasely , and not a compiled built map inside the engine.
It's ok

For fun , i will give here my own idea of the new ubl
iF bltouch
ONE CLICK UBL ' shape of the bed in firmware , not probed ' little 'areas by interpolation ' and the mesh inset disappear and replaced by the max calculated area .
Made , stored , activated , and an icon in LCD to see if activate , to avoid print test , use double or triple topology probing to make a mean value and IT'S ENOUGH , the world work with just an endswitch then , it's really ENOUGH ! 👍
ACTIVATE ON/OFF , just one line menu
FADE HEIGHT
If no bltouch then the actual multi menus UBL in manual mode only

For gcode just activation on/off , fade height , and makemesh 'if bltouch ' it's enough
Like the old versions , but in SMARTMeshing 👍

@Roxy-3D
Copy link
Member

Roxy-3D commented Aug 31, 2017

Why stop there? Let's have one single GCode that says "Print the entire object perfectly."

@ghost
Copy link
Author

ghost commented Aug 31, 2017

And with 300 000 km/s feedrate of course !

No ! if print is perfect , MARLIN COMMUNITY WILL DYE ;-)

@ghost
Copy link
Author

ghost commented Aug 31, 2017

@Tannoo
-Why the probing is not made by line like the ' tilted meshing' , my nozzle go everywhere and probe points randomly ?

@Tannoo
Copy link
Contributor

Tannoo commented Aug 31, 2017

When building the mesh, it probes the closest points to the current postion of the nozzle.
Because it homes first, you could say that it probes the closest points to home.
All in a close to a circle or arc as it can until all points are probed.

@ghost
Copy link
Author

ghost commented Aug 31, 2017

smart path probing NEED TO BE ADDED in next release lolll

thks 👍

@Duinishuodedui
Copy link

I have a question regarding this function:
Could it take some height parameters on the fly from an external sensor?
I'm asking this question because I'm using Marlin to control my plasma cutter CNC. Due to the heat during the cut, the material warps quite a bit, so you need to continuously adjust the height of the torch to keep it about 2mm close from the thing you're cutting.
Problem is, probing before the cut is useless in this case, since the warping occurs continuously during the cut. I can relatively easily build a sensor to detect the distance, but then I would need to feed this information to Marlin somehow. Since the Bed leveling function allows to adjust the height on the fly, I was wondering if there were any way to feed this parameter to the firmware, so that it can adjust the torch height continuously based on actual distance measurements?

I 'm pretty sure this is not possible yet, but I think it would be a really nice addition to Marlin, especially considering the crazy high prices of torch height control devices, which makes them difficult to afford for DIYers. I have no idea if this is complicated to do or not to program though.

Thanks a lot, sorry for the rather long message.
Hope you can work on this feature, even if it is not really 3D printing, it would be awesome.

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 12, 2017

I 'm pretty sure this is not possible yet, but I think it would be a really nice addition to Marlin, especially considering the crazy high prices of torch height control devices

I don't think this would be that hard to do. The problem you are fighting is most of the people doing the firmware have 3D-Printers and do not have CNC machines. So, they only see the problems that 3D-Printers have. They don't see the problems that CNC machines experience.

There are a couple of options... We could probe a single location close to the cut and see how much it curled up... And raise the whole mesh that much. Or we could just raise the mesh points close to where the probe happened. And there are other questions: How often can we stop a cut and probe? If we can stop the cut often enough and probe to see what is happening... we could probably come up with an algorithm that does the 'right thing'.

One problem to think about is the curl won't be uniform. Even if you get one cut done right, if you move some where else on the sheet and start cutting.... You will need a different offset because that location won't be curled. Maybe the firmware could always do a probe (along the projected cut line) before it starts a cut so it knows how to correct?

@Duinishuodedui
Copy link

Thanks for your answer Roxy :)
I'll try to better describe the way this should work:
The height control works by sensing the voltage of the arc between the torch and the metal plate to be cut. It needs to be done continuously during the cut, while the torch is cutting, because warping happens continuously during the cut, due to the very high temperatures of the plasma.
So, basically, it should work something like that:
-Lower the torch, to probe a point
-Store this point into the memory as the zero height
-Move the torch up to about 4mm to start the cut (the torch needs to fire a bit higher to avoid metal splashing during the very first seconds)
-Fire the torch
-Move the torch down to the set distance (1 or 2 mm usually)
-Start the cutting path while continuously measuring the voltage and correcting the height in accordance to the measurement (higher voltage = need to low down a bit, lower voltage = need to move up a bit)
-Once the cutting path is finished, move up the torch and prepare for travel
-Repeat this process for the next path

Probing from time to time or only at the beginning of a path wouldn't work, because warp up is very significant on these machines. For some small sheets, warping during the cut can be more than 4-5 millimeters! That's why voltage measurement and height adjustments must be continuous.
Also, you cannot stop the cut and probe too much, because every start and stop of the cutter will leave a big and ugly spot.

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 16, 2017

OK... We can use (or allow) the various bed leveling systems to work and help... But it sounds like we need a whole new GCode for doing laser cuts. And this new GCode would have various parameters.

  • initial starting arc height.
  • initial starting cut height.
  • voltage (or percentage of something) to track during the cut.
  • end point of cut.
  • other things that can make things work better.

Do you write C code? If somebody else doesn't help, I'll help... We can get this merged with very little work.

@Duinishuodedui
Copy link

Yes, indeed, It may need those parameters. I don't see any other ones aside from the ones you mentioned so I thing you pretty much covered it :)

Unfortunately, I completely suck at coding, I can only do very, very basic things, and would be totally unable to code this in Marlin... If you could help with that to make it an "enable/disable" option, it would really be awesome, I think it could help many people who struggle with plasma height systems and have to pay big bucks for these ! Could finally make plasma cutting an option for the average DIYer!
I'm not sure if I'm allowed to post external links here, but just so you can get a better understanding of what I'm trying to achieve and what is the machine I'm using, here is my building thread (it is not an ad, I'm not selling anything, it's just me building my DIY 3 in one plasma cutter/giant 3D printer/milling machine. I currently use Marlin to control it with a Ramps): https://www.vicious1.com/forum/topic/my-mpcnc-made-in-china/

Again, a million thanks for your help !

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 18, 2017

Wow! Very cool!

@fiveangle
Copy link
Contributor

I want one ! Haha

@ghost
Copy link
Author

ghost commented Oct 19, 2017

Use a loud glass on your parts . To press the objects on the table and to have constant height
Or learn c++ and math and marlin planner timing algorithm 😂😂😂😂

And after you will have to motorise the sensor to place it always in the next direction . If you measure the rear and go to the front .. measurement is wrong . Or place 4 sensors .
After this you will have to be placed in the output of the planner for immediate correction...
And may be the 16mhz pic avr processor and all routine will never have enough speed to make a true teal time correction .

@ghost
Copy link
Author

ghost commented Oct 19, 2017

The only solution is to unconnect z motor and add a new arduino board just programmed for the z teal time correction with a sensor capable of a peripheral area around the laser to make a mean correction for all direction

@ghost
Copy link
Author

ghost commented Oct 19, 2017

Or glue the material to fight against warping

@ghost ghost closed this as completed Oct 19, 2017
@ghost ghost reopened this Oct 19, 2017
@Duinishuodedui
Copy link

These wouldn't work. I cannot glue the material to anything, because the way plasma cutters work. They blast high pressure air to evacuate the melted metal through the plate, so I cannot have anything on top of the plate or even under. The plate will be supported by some kind of mesh.
The only appropriate way to sense the height is by taking voltage measurement of the plasma arc, which shouldn't be very difficult. Any other way to sense the height will fail, due to many reasons (sensor going over already cut spots, very high magnetic interfecences, very bright light, localized warping and so on) this is really the only way.

But these are no concerns to me, the only problem is how can I feed this voltage information in real time to the control board, so that it can compensate the height automatically during the cut. I'm sure this is technically possible, because height compensation is something that Marlin already does in the autobed mesh leveling. The only difference here would be that the mesh leveling would not be done before the cut, but while cutting, on the fly.
I think that Roxy understands the problem perfectly, lets just hope that it can be solved in a future release :)

@MarlinFirmware MarlinFirmware deleted a comment Oct 23, 2017
@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 23, 2017

But these are no concerns to me, the only problem is how can I feed this voltage information in real time to the control board, so that it can compensate the height automatically during the cut. I'm sure this is technically possible, because height compensation is something that Marlin already does in the autobed mesh leveling.

Yes. To simplify things we have removed this extra term. But there was a z_offset term that got added to every move. In the case of a CNC doing plasma cutting, we could put back in a term that factored in the current voltage and tracked that too. And we could make it break up mesh cells into 100 (10 x 10) smaller mesh cells where the voltage is factored in at each sub-mesh cell crossing.

But to do this... Hardware is required. If you can put together a sensor that accurately measures the instantaneous cutting voltage... We can make a few additions to the code to factor that into compensation. I don't know that we will be successful. But from what I'm hearing I think it is likely to work.

The only difference here would be that the mesh leveling would not be done before the cut, but while cutting, on the fly.

Yes. It would be a combination. You would have a base level of correction for your CNC bed. But you would have dynamic correction based on the cutting voltage.

@Duinishuodedui
Copy link

Yes, I will make the sensor soon, it should not be too complicated. Just a little voltage divider and some filters to get a clean 0-5V signal from the original 0-96V of the cutter. I may use another small Arduino in between to clean the signal and add a few functions, then connect this Arduino to the Main Arduino controlling the CNC machine, through an unused pin.

@Tannoo
Copy link
Contributor

Tannoo commented Oct 23, 2017

Ooooo... a trinket pro would work nicely with that.

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 23, 2017

Just a little voltage divider and some filters to get a clean 0-5V signal from the original 0-96V of the cutter.

I know I'm paranoid. But a couple of zener diodes to clamp the voltages going to the A to D converter might make sense too....

@AnHardt
Copy link
Member

AnHardt commented Oct 23, 2017

My first idea would be to regularly (100ms?) test if to high or ot low and insert some babysteps into the right direction. This will resonate a bit, but be better than nothing.

@ghost
Copy link
Author

ghost commented Oct 23, 2017

Marlin use a buffer of 16 lines , but the z axis can be adjusted for each moves ,
Converting a 0/5v a in an analog pin and add a mapped or may be ' linear 'z correction ok possible
But , if possible a little math computation , and a little table map of correction to have a correct feedrate
On this repository , a user have made a firmware , with all memory allocation by features
but in your situatin you deactivate the heaters , the ubl , the bltouch , zero extruders/hotends , you will have enough progmem to make all possible
And if not possible , now with an arduino board , you can add a 32 bit teensy , with infinite progmem
For me , the most difficult ,is to take the information at the source and build a map , but i can see it's a pleasure for you and you never talk about complications
👍

@ghost
Copy link
Author

ghost commented Oct 23, 2017

I have a question : Before to make this , a waste so many nights and day to debugg all you never believe it appears in this adventure , i'm sure you're not the one that have this , and may be , a big effort on google and all communauties , and may be some professionals , to know ,if something exist , and may be something ' chinese ' that cost nothing ' could exist and already made , may be ' lol
Now i know marlin , and i have given so many nights to this firmware , and i have learn something , anything that already exist must never be remade by myself lollll , time is precious !

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 23, 2017

My first idea would be to regularly (100ms?) test if to high or ot low and insert some babysteps into the right direction. This will resonate a bit, but be better than nothing.

Yeah... That was part of the idea of sub-dividing the normal mesh cells into something with a much finer resolution. Sort of like the Delta's do with the number of segments per second. But... The problem with that is those moves are calculated and buffered in advance.

Your idea of doing it in real time is better. There could be some code down in the stepper motor ISR that is monitoring the voltage and tracking it with baby steps up or down. That would do a much better job tracking the cut.

@Duinishuodedui
Copy link

Oh, yes, I didn't mention it but I did quite a lot of research and made my homework before asking this question here, of course. There are in fact two solutions, but none of them really satisfy me:
-First one is to create a secondary Z axis, controlled with a DC motor in addition to the normal Z axis controlled by the stepper. This guy did something similar: http://www.tamarisktechnicals.com/pages/CheapTHC.html
That is currently what I'm building to make my first tests, but I do not consider this an elegant solution. It may work ok, but it needs way more hardware and complications, and makes things complicated for the beginner. Also, the guy seems to use Mach3 for controlling the machine, while my plan is to use Marlin with the SD card reader, so no computer at all. So I'm not sure I can actually make this work using Marlin (I guess I can, but I'll need to try)
There are some Torch height controllers available commercially, but they all seem very expensive to me (the cheapest I saw was about 300 bucks, the allegedly "good ones" are usually over 1500... that's maybe 3 times the cost of my entire machine!). I might worth it for commercial applications, but it is way too expensive for DIYers.
Also, I love Marlin, I use it for all my CNC/3D printing applications, and I bet having a torch height control function available could bring plasma cutting enthusiasts to using this firmware, since an Arduino/Ramps is extremely cheap and easy to use setup.

"Your idea of doing it in real time is better. There could be some code down in the stepper motor ISR that is monitoring the voltage and tracking it with baby steps up or down. That would do a much better job tracking the cut."

Yes, I think this would be the perfect solution

@Roxy-3D
Copy link
Member

Roxy-3D commented Oct 24, 2017

Also, I love Marlin, I use it for all my CNC/3D printing applications, and I bet having a torch height control function available could bring plasma cutting enthusiasts to using this firmware, since an Arduino/Ramps is extremely cheap and easy to use setup.

"Your idea of doing it in real time is better. There could be some code down in the stepper motor ISR that is monitoring the voltage and tracking it with baby steps up or down. That would do a much better job tracking the cut."

If you want to do 'cut leveling' with Marlin's auto bed leveling systems.... I'll help.... I suspect there are a number of people that want to do Additive & Subtractive printing with Marlin. If somebody can do plasma cutting height sensors for a few dollars using a voltage divider and a couple of zener diodes... It opens a whole bunch of new doors....

@Sazoji
Copy link

Sazoji commented Nov 19, 2017

I have a dual lead screw system where my bed just needs tilt correction before printing, but with UBL over the past two days, I have followed the guide and made a good mesh for PLA, but when I execute G29 L1, G29 J in my gcode to compensate for tilt on that specific print, the leveling stops and does not tram at all.

I think this is an issue with fade hight, loading of the mesh via gcode send via octoprint and needs to be sent with a pause in between, or a factor In UBL that makes it not work well with a moving z bed. but I dont know where to start troubleshooting other than just going though the UBL guide a fourth time

@fiveangle
Copy link
Contributor

fiveangle commented Nov 20, 2017

@mjc619 - I applaud you for searching before posting, but if you want support for your problem, highjacking someone elses thread is not the way to do it.

You really need to open a new issue for tracking your problem (and please pay attention to the template contents because if you include all the relevant info asked for when you open it, you'll have the best chance of getting a response from someone who can help).

Good luck !

-=dave

@github-actions
Copy link

github-actions bot commented Jun 2, 2021

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Jun 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants