Hi all,
I recently installed my 8x12 upgrade for my i3v and I would like to have ABL calibrate the entire bed instead of just the 9 points for 8x8 sized bed, how would I go about this?
Thanks.
Printable View
Hi all,
I recently installed my 8x12 upgrade for my i3v and I would like to have ABL calibrate the entire bed instead of just the 9 points for 8x8 sized bed, how would I go about this?
Thanks.
Things have changed based on the version of the firmware you are running. But the first step in all cases is to edit your Configuration.h file to set the
#define AUTO_BED_LEVELING_GRID_POINTS 3
higher. Maybe 5?
Assuming marlin firmware, find this section of configuration.h and change the "170" for y to something more appropriate for your 12" bed, e.g. "270".
This will change the overall bounds of the autolevel function and the firmware will recalculate the points in the middle, but will not change the number of points. To do that you can add a "N" command to your gcode. Something like G29 N4 will do 4 points in each axis (16 total). I'm not aware of a way to do uneven number of points in X&Y e.g. 3x4 points.Code://===========================================================================//============================= Bed Auto Leveling ===========================
//===========================================================================
. . .
#define AUTO_BED_LEVELING_GRID
#ifdef AUTO_BED_LEVELING_GRID
#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 170
#define FRONT_PROBE_BED_POSITION 20
#define BACK_PROBE_BED_POSITION 170
Oh! Yes, it will do a n x n grid. We will have to make a small change if you want more points in one direction than the other.
I think what Roxy is saying is that the marlin codes does not allow for different number of points in x vs y right now. Being code, it can of course be changed, but that would require a patch and a reason to accept the patch. That's somebody's work both now and for future maintenance and would need to be justified.
Right now your 8"X12" bed with a 4x4 grid will have 4 points in X separated by ~2-2.5" and 4 points in Y separated by ~3.5-4". Is that a problem? Is there a strong use case for e.g. 3x4 probe instead of 4x4? If so, maybe someone will help write the patch and argue for inclusion.
Make sure the bed size is entered in configuration.h like I said above so it knows where to probe. Then callout G29 NP where P is the number of points you want in each axis. The software will figure out the gap between points and take care of all the math.
Go get the latest 'Release' version of Marlin from GitHub: https://github.com/MarlinFirmware/Marlin (Do not grab the development version which is more 'current' than the last Release version!)
Go find this code in Marlin_main.cpp. This code controls the probing across both the X and Y axis. Change it to be what ever you desire it does:
Code:
for (int yProbe = front_probe_bed_position; yProbe <= back_probe_bed_position; yProbe += yGridSpacing) {
int xProbe, xInc;
if (zig)
xProbe = left_probe_bed_position, xInc = xGridSpacing;
else
xProbe = right_probe_bed_position, xInc = -xGridSpacing;
// If topo_flag is set then don't zig-zag. Just scan in one direction.
// This gets the probe points in more readable order.
if (!topo_flag) zig = !zig;
for (int xCount = 0; xCount < auto_bed_leveling_grid_points; xCount++) {
// raise extruder
float measured_z,
z_before = probePointCounter == 0 ? Z_RAISE_BEFORE_PROBING : current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS;
Hit the reset button on the electronics? Baud rate must match in your firmware configuration.h.
First... The Enhanced G29 that was published here is mostly folded back into the main code base. Depending on what code you are using the options are different. In the main code base 'P' is used to specify the number of points on each axis to probe. In the Enhanced G29 code published here, 'n' (with a lower case) is used. You can never use a capital 'N' with PronterFace.
Aw, crap. That's right "N" is reserved for line number. That explains the error mentioned above. My apologies, "n" is correct. Thanks for the reminder Roxy.
I also tried lower case n and it didn't work either. I'm gonna go to bed now but thank you guys so much for taking the time to help me try and work this out, sorry for all this trouble I know it's frustrating helping out a noob haha.
Doing a 3x3, 4x4, or 5x5 grid on a 8x12 bed will work just the same as on a 8x8 bed, only the Y points will be spaced further apart. ABL will still work, even if you don't have more Y probe points.
I downloaded it and made the necessary changes in configuration.h but I get an error when I try to upload it.
Quote:
Arduino: 1.6.1 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
In file included from Marlin.h:22:0, from BlinkM.cpp:5: Configuration.h:397:40: error: floating constant in preprocessor expression #define X_PROBE_OFFSET_FROM_EXTRUDER 29.20 ^ Configuration.h:437:9: note: in expansion of macro 'X_PROBE_OFFSET_FROM_EXTRUDER' #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 ^ Configuration.h:397:40: error: floating constant in preprocessor expression #define X_PROBE_OFFSET_FROM_EXTRUDER 29.20 ^ Configuration.h:442:13: note: in expansion of macro 'X_PROBE_OFFSET_FROM_EXTRUDER' #if ((X_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) ^ Configuration.h:398:41: error: floating constant in preprocessor expression #define Y_PROBE_OFFSET_FROM_EXTRUDER -9.00 ^ Configuration.h:446:9: note: in expansion of macro 'Y_PROBE_OFFSET_FROM_EXTRUDER' #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 ^ Configuration.h:398:41: error: floating constant in preprocessor expression #define Y_PROBE_OFFSET_FROM_EXTRUDER -9.00 ^ Configuration.h:451:13: note: in expansion of macro 'Y_PROBE_OFFSET_FROM_EXTRUDER' #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) ^ Error compiling.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
This is a common error people make. You are not allowed to use floating point numbers in the C preprocessor. The lines you updated:
#define Y_PROBE_OFFSET_FROM_EXTRUDER -9.00
should look like:
#define Y_PROBE_OFFSET_FROM_EXTRUDER -9
No Floating Point numbers!!!!
ohhhh
haha thanks
edit: That worked but why was -9.00 working on my previous version of Marlin? Also, how am I supposed to write the positions for Z and X?
After I flashed to the new version my LCD just has square blocks now, am I supposed to define which LCD I am using in one of the files?
Thanks.
Oh wait! I gave you bad advice. You can #define floating point numbers. You just can't use them in #if preprocessor blocks. And yes, you have to configure the type of LCD display you have in Configuration.h for it to be used.
Sorry for the late reply, been busy with work related crap :/
Yeah I'm pretty sure they are #define point numbers so it should work, right? They aren't in an #if block
#define X_PROBE_OFFSET_FROM_EXTRUDER 29.20
#define Y_PROBE_OFFSET_FROM_EXTRUDER -9.00
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.60
In the error output.... It was complaining about floating point numbers being used in an #if
#if ((Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
You can see here I don't have any floating numbers:
Attachment 5873
So what's it doing? What is the current set of error messages?
I went back to my previous version of Marlin because it works perfect for me and I used g29 u7 instead of "n" and that worked beautifully, exactly what I wanted. Thanks to everyone :)