-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
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
UBL Testing & Compile Error - Rambo #4437
Comments
Tried it with 1.6.10 and got this
|
@adamfilip Long term this isn't true. But right now you need to have an LCD Panel with an Encoder Wheel. If you don't have one, you can get one on eBay for $10.00 including shipping: http://www.ebay.com/itm/251242416836?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT |
My Machine has a LCD with encoder |
if its helpful. here is verbose output during compile |
dogm_lcd_implementation.h @@ -288,11 +288,11 @@ static void lcd_implementation_init() {
show_bootscreen = false;
#endif
}
-static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
+void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
FORCE_INLINE void _draw_centered_temp(int temp, int x, int y) {
int degsize = 6 * (temp >= 100 ? 3 : temp >= 10 ? 2 : 1); // number's pixel width
u8g.setPrintPos(x - (18 - degsize) / 2, y); // move left if shorter
lcd_print(itostr3(temp)); |
Thanks @Blue-Marlin ! That makes sense. Nothing ever called lcd_implementation_clear() outside of the LCD code before. So, now that G29 and G26 do call it, it can't be declared as static.
@adamfilip I've never compiled the UBL code against the full graphics controller because I don't have one to test. But I'll try to be as responsive as possible to any issues you run into. |
@Roxy-3D I suggest to activate UBL in all configs, in this branch, for the time you are working on it, to get some sanity checks with every commit/PR. |
Ok I reverted back to Arduino IDE 1.6.9 made that change to Next small problem. how do I set the Z Max endstop to be the Z min Probe Endstop |
And/or add specific UBL tests to the |
Got it Running.. When I first tried to do a BTW So far its Amazing! Thank you so much for all the time and effort you have put into this! |
BTW displays fine in Simplify3D Controller |
I need help and guidance to do that. Let's handle that in the Google Hangout Box.
You don't have to, but you should fill in all the invalidated cells. You can either do a G29 P2 R or a G29 P3 R? C# (4 or 5 times). Don't forget to Save your work periodically as you get better and better data to describe your bed. But once you have the Mesh fully populated, you want to shift gears and do a G26 to see how well it is defined. Once you have the image on the print bed, you can shift back to the G29 side of the world and do a G29 P4 R to edit all of the 'questionable' Mesh locations. Please post a picture of your G26 once you have gone through a couple of iterations of refinement. Its amazing how you get perfect adhesion across the entire bed. |
Was the one Blue-Marlin change sufficient to get it to work? Does the Encoder Wheel work for the editing?
You are very welcome. It was a fun piece of code to write. Wait until you see how a big print that reaches to all of the corners doesn't have any problems getting good adhesion! If you are going to do Auto Bed Leveling, a high resolution Mesh is the Cat's Meow. |
@Roxy-3D Have you looked at the |
Question. Why didnt it capture the Left and bottom row? |
So far I don't see how to edit from the menu.. only option is to
Yes |
I have never looked at it. If it is easy, I'll just dig in. I assumed it was difficult.
Because your probe can't reach those bed locations. Those have to be filled in manually. *1 Either by manually probing (G29 P2) or (G29 P3). Take your pick. And those values don't have to be super accurate. Because once you have the G26 Mesh Validation Print to guide you, You can do a G29 P4 R to get everything accurate. *1 (Actually, that is technically not true. You can leave those areas un-populated and they will be treated as 0.0000 But those areas of the bed will not benefit from the UBL corrections until you get them filled in. Uncorrected areas of the Mesh are stored as NAN - Not a Number. This enables the bi-linear Mesh correction calculations to happen with no checks for unfilled in areas of the Mesh. At the very end, we will see NAN as the correction and blow off the entire correction calculation. ) |
The LCD Panel Menu does not have any options (yet). Everything is done with PronterFace commands. The editing will happen with a G29 P4 R M flavor of command. But you need a G26 print to guide you. G29 uses the Encoder Wheel as input when you are editing the Mesh. Go through the steps... It will start to make sense. |
Can the best only be comprised of areas that the probe can reach so no manual entry is required? |
Yes, but you will give up part of your Print Envelope if you do that. You can do that, and at any time in the future, go back and do the manual entry of those areas. Or for that matter, jump ahead and get the G26 print, and then continue with the editing of those areas to get them perfect. (The editing of those areas might not work because they are stored as NAN in the Mesh. It is very possible the floating point math will lock you out from editing them. I'll have to check that, and if it does, I'll make it so you are not locked out from editing those areas.) If it does lock you out from editing those areas.... You can manually fill them all with 0.000 by doing a G29 R999 C0.000 P3 M @adamfilip If the manual entry is painful for you, don't sweat it. Just do the G29 R9999 C0.000 P3 M and continue to the G26 command. It is super easy to fix any area of the Mesh that is out of calibration once you see what is wrong with the Mesh. |
When starting manual probing it starts 5mm above probe height. since my hozzle is -16.62mm below probing height I need to turn the encoder in .025 increments down -21mm before the nozzle touches and for the 2nd manual point it raises back up +5 above probe.. so each time i need to rotate it down -21mm which takes forever LOL.. I gave up once it went to the 2nd one. I dont mind doing it once for the first one.. but even that should be +5 of the offset between the nozzle and probe. and then only +3 from the last point measured to be safe. |
and
Please read this:
But you can also just brute force fill it to 0.0000 with the G29 P3 R C0.0000 What you really want to do is get to the G26. If you have a G26 printed on the bed, you can very quickly edit your Mesh very accurately. After a couple of iterations, your Mesh will be perfect. If you are going to brute force fill the unpopulated areas, it might be best to set them with G29 P3 R C0.5 and not get the G26 print perfect the first time. This will keep you from scrapping the nozzle in the filled areas. And, if you start the print at the center of the bed, it will slowly reach out further and further from that point. If the nozzle is getting too close to the glass, you can either reset the machine or press and hold the encoder wheel to terminate the print. You can then move the nozzle to that area and do a G29 P4 R to start fixing those areas of the Mesh. |
Really don't appreciate that comment. I have read and re-read the instructions. Sorry if i dont know all the little details instantly. You have written alot about the parameters for the two new commands. |
Adam... It was a joke.... It is easy to miss small things with all of the complexity and details. I fully realize that. The comment is gone. |
The G29 Z code is totally untested. Don't believe what it says. In fact, the whole reason it had a bug is because I don't even use G29 Z. I didn't know it had a bug in it until you made that post saying it wasn't working. If you get your Z_PROBE_OFFSET_FROM_EXTRUDER number right, you can keep the Z-Offset at 0.0 And remember... Even if the probe side of G29 Z doesn't do what you want. If you add a number to the command, it forces the Z-Offset to that number. If you Save a Mesh or do a M500 you will lock that value into EEPROM. But with all that said... What exactly do you think G29 Z should do? The original thinking was to replace G30 with it. But Mesh Bed Leveling had a z_offset built right into their .h file so I kind of needed to preserve that. G29 Z can do what ever makes sense. |
Right now I just want to be able to accurately figure out the right offset from the nozzle to probe. Can't do that physically with caliper |
How I feel g29 z should work is that once it's runot |
Yes. I go through the same thing. I get the nozzle position close, but I make sure it is 1mm or 1.5mm too high so nothing gets damaged. I then edit Configuration.h to set the Z_PROBE_OFFSET_FROM_EXTRUDER to be closer to the bed, but I make the changes slowly so nothing gets damaged. It usually takes me 3 or 4 iterations to be exactly where I want to be.
OK! That makes sense. I think what you are saying is you want the G29 Z (with no constant in the command) to 'Baby Step' the nozzle down and when the Encoder Wheel is clicked, that number gets locked into the Z-Offset. I'll have to look at the code, but I think all of the support routines are in place to do that. If that is how you want it to behave, that is pretty straight forward. Now for specifics: The Z-Offset is part of the Mesh (and UBL) System. Should it always be active even if UBL is turned off? I think the answer is "Yes!" If so, maybe it should be pulled out of UBL. That is not that hard to do because the LCD Panel already has an option to adjust Z-Offset if you enable MANUAL_BEDLEVELING. |
Yes this all makes sense to me. Pull it out of UBL. use a seperate tool to figure out Offset. |
I think I have the Z-Offset editor working. But I'm cleaning up a few other things at the same time. Later today I'll have it all uploaded to devel_UBL branch. I think what is going to happen in practice is people will just get their Z_PROBE_OFFSET_FROM_EXTRUDER close to correct, and not worry about getting it exact. Probably most people will just dial in the Z-Offset to compensate for any error in the Z_PROBE_OFFSET_FROM_EXTRUDER number. |
Once I have my offset I typically only compensate in the slicer if its off. |
For the Slicer's.... They assume if you move to Z=0, the nozzle is just barely touching the glass. They also assume if they move to .2 or .3mm, that is enough of a gap to print the first layer. |
Can you add the ability to adjust the G26 Presets for Bed Temp, Hotend Temp, Filament Size, Prime Amount etc. in Config.h so that you dont need to do remember or look up all the conditions each time :) |
That is already setup for the user to adjust to their own machine. It is at the top of the G26.cpp file. I didn't want to add extra clutter to the Configuration.h file. Have you gotten a G26 to print a complete validation image? Have you used it to help edit the Mesh with a G29 P4 R ??? I usually do the G26 shifted toward a corner of the bed and give it a G26 P C That doesn't waist a lot of time moving big distances but still works its way across the bed nicely. |
Thanks for the tip about the G26.Cpp i will make some edits. didnt realize I did manage to get a G26 to print and it looked pretty solid. I didnt feel it necessary to adjust |
That's pretty impressive if you got an entire G26 printed and don't see a need to edit anything! |
True is was!. but it was way over extruding at the time. and with a 5x5 mesh. |
Good point about the over extruding. I noticed even when I had the Mesh very well defined... If I dialed back the amount of extrusion, I could still find areas that 'needed' some work to be perfect. But as long as you can get good adhesion everywhere on the bed, it doesn't really matter. At least for the things that I print. |
Trying to compile todays verson. maybe i missed a setting but im getting this error: sketch\ultralcd.cpp: In function 'void lcd_update()': ultralcd.cpp:2629: error: 'currentScreen' was not declared in this scope
ultralcd.cpp:2629: error: '_lcd_babystep_z' was not declared in this scope
ultralcd.cpp:2631: error: 'lcd_babystep_z' was not declared in this scope lcd_babystep_z();
exit status 1 |
I pulled down the current code and put my Configuration.h and Configuration_adv.h file into it just to make sure it would compile. I'm actually running that very code right now because I'm trying to resolve if we have a compiler bug in the floating point math. Can you try it with my Configuration.h & Configuration_adv.h file and see if you still have a problem? And what ever you find, I'm interested in hearing the results. Did you change anything on your settings? As it turns out... currentScreen is used by the new Z-Offset editing code I put in place. It is very believable that I screwed something up. Can you make copies of your Configuration.h and Configuration_adv.h and change the extension to .TXT and post them here? I'll take a look. And when I find what is wrong, I'll update the GitHub source so you can compile clean. |
when i download and use the example config under your name it compiles fine |
Difference i recall is that i updated G26 details for my machine |
No! No! No! There are still remnants of Mesh Leveling #ifdef's in the code. But you don't want to turn them on. At its lowest levels, the UBL System is a High Resolution Mesh Bed Leveling System. But if you turn on any of the remnant Mesh Leveling stuff you are asking for trouble. |
if i disable MANUAL_BED_LEVELING i still get the error. |
OK... Can you rename your Configuration.h and Configuration_adv.h files to Configuration.txt and Configuration_adv.txt and post them here? I'll get the errors resolved. It maybe very late tomorrow before I have things compiling clean for you because I will be on the road much of the day. |
I missed a few settings when i compared files.. related to my LCD.. once i updated it now compiles. |
OK... I'll pull them down and save them... |
Ok I tried the revised G29 Z command. much improved. I like the babystepping down. |
I didn't know where to start it. I figured +1.5mm above the bed was 'safe'. And see the comment in the code for the rest of the thinking. The UBL Encoder Wheel routines let the user step at +/- .005mm at a time. That might be a little bit too precise but I decided to be at that speed because the printers are getting more and more accurate. We can add a speed multiplier to the UBL Encoder Wheel routines if these kind of things are too painful.
|
The 1.5 was fine. no issues..ando the step increment was fine since it was close to bed |
I understand why you are confused... There are multiple 'offset' numbers. There is the Z_PROBE_OFFSET_FROM_EXTRUDER number. But then this extra z_offset number that is used to 'correct' an inaccurately set Z_PROBE_OFFSET_FROM_EXTRUDER number. If you look at all that text that happens when PronterFace connects to Marlin, towards the end, you will see both of the numbers displayed. It would make more sense and be easier to understand if the G29 Z started at 0.0 but that isn't safe to do. But, once you dial the nozzle down so it just touches the glass, the number on the LCD Panel is going to be your Z_PROBE_OFFSET_FROM_EXTRUDER error. If you add the number on the LCD Panel to the number in your Configuration.h file, you can probably set the z-offset at 0.0 |
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. |
Trying out the UBL version on my Makerfarm i3V with Rambo
. so far Havent been able to get it to compile
Error below. also attached configuration.h and configuration_adv.h
The text was updated successfully, but these errors were encountered: