-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
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
Bilinear bed leveling w/BLTouch not working #5868
Comments
M420 is for Mesh leveling(manual), which is totally different than bilinear leveling(auto). You should only need a G28 followed by a G29. I would remove the M420/M500 commands and see if that helps. Make sure you have your Z probe offset set correctly. M851 Zxxx followed by an M500 is used to set the offset in EEPROM. You only need to do this once when you have the correct height figured out(ie you don't need it in your start script). As a rule of thumb I never put M500 in my automatic scripts. This seems like a good way to accidentally destroy your EEPROM settings. |
I used that script on the last try to see if it helped. It has already been deleted. I have done the M851 z-2.8/M500 but what I am saying is that after everything is done, it does not apply the compensations for the bed so it still acts as if it never probed in the first place. If I were to print without probing, I would get the exact same issue so therefore the probe calibration is not being applied. |
Here is my config file. Is there issues with it? `/**
*/ /**
*/ /**
//=========================================================================== /**
//=========================================================================== //=========================================================================== // @section info // User-specified version info of this build to display in [Pronterface, etc] terminal window during // /**
/**
// Enable the Bluetooth serial interface on AT90USB devices // The following define selects which electronics board you have. // Optional custom name for your RepStrap or other custom machine // Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) // This defines the number of extruders // Enable if your E steppers or extruder gear ratios are not identical // For Cyclops or any "multi-extruder" that shares a single nozzle. // A dual extruder that uses a single stepper motor /**
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). /**
#if POWER_SUPPLY > 0 // @section temperature //=========================================================================== /**
// Dummy thermistor constant temperature readings, for use with 998 and 999 // Use temp sensor 1 as a redundant sensor with sensor 0. If the readings // Extruder temperature must be close to target for this long before M109 returns success // Bed temperature must be close to target for this long before M190 returns success // The minimal temperature defines the temperature below which the heater will not be enabled It is used // When temperature exceeds max temp, your heater will be switched off. //=========================================================================== // Comment the following line to disable PID and enable bang-bang. // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // MakerGear // Mendel Parts V9 on 12V #endif // PIDTEMP //=========================================================================== //#define BED_LIMIT_SWITCHING // This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. #if ENABLED(PIDTEMPBED) //#define PID_BED_DEBUG // Sends debug data to the serial port. //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. // @section extruder // This option prevents extrusion if the temperature is below EXTRUDE_MINTEMP. // This option prevents a single extrusion longer than EXTRUDE_MAXLENGTH. //=========================================================================== /**
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders //=========================================================================== // @section machine // Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics // Enable this option for Toshiba steppers //=========================================================================== // @section homing // Specify here all the endstop connectors that are connected to any endstop or probe. // coarse Endstop Settings #if DISABLED(ENDSTOPPULLUPS) // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). // Enable this feature if all enabled endstop pins are interrupt-capable. //============================================================================= /**
/**
*/ /**
*/ /**
*/ /**
/**
//=========================================================================== // // A Fix-Mounted Probe either doesn't deploy or needs manual deployment. // The BLTouch probe emulates a servo probe. // Z Servo Probe, such as an endstop switch on a rotating arm. // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. // Z Probe to nozzle (X,Y) offset, relative to (0, 0). // X and Y axis travel speed (mm/m) between probes // // *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** // // // Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. // To use a probe you must enable one of the two options above! // Enable Z Probe Repeatability test to see how accurate your probe is /**
*/ // // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 // Disables axis stepper immediately when it's not being used. // @section extruder #define DISABLE_E false // For all extruders // @section machine // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. // @section homing //#define Z_HOMING_HEIGHT 5 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... // ENDSTOP SETTINGS: #define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS. // @section machine // Travel limits after homing (units are in mm) /**
//=========================================================================== //#define MESH_BED_LEVELING // Enable mesh bed leveling. #if ENABLED(MESH_BED_LEVELING) //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. #if ENABLED(MANUAL_BED_LEVELING) // Gradually reduce leveling correction until a set height is reached, #endif // MESH_BED_LEVELING //=========================================================================== /**
/**
#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. // Set the boundaries for probing (where the probe can reach). // The Z probe minimum outer margin (to validate G29 parameters). // Probe along the Y axis, advancing X after each column #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
#endif #elif ENABLED(AUTO_BED_LEVELING_3POINT) // 3 arbitrary points to probe. #endif /**
// @section homing // The center of the bed is at (X=0, Y=0) // Manually set the home position. Leave these undefined for automatic settings. // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. #if ENABLED(Z_SAFE_HOMING) // Homing speeds (mm/m) //============================================================================= // @section extras // #if ENABLED(EEPROM_SETTINGS) // // // // // @section temperature // Preheat Constants #define PREHEAT_2_TEMP_HOTEND 240 // #if ENABLED(NOZZLE_PARK_FEATURE) // #if ENABLED(NOZZLE_CLEAN_FEATURE) // Specify positions as { X, Y, Z } // Moves the nozzle to the initial position // // //============================================================================= // @section lcd // // // // // // // // /**
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //============================================================================= // @section extras // Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // Incrementing this by 1 will double the software PWM frequency, // Temperature status LEDs that display the hotend and bed temperature. // M240 Triggers a camera by emulating a Canon RC-1 Remote // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure // Support for the BariCUDA Paste Extruder. //define BlinkM/CyzRgb Support // Support for an RGB LED using 3 separate pins with optional PWM /*********************************************************************\
// Number of servos // Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle. // Servo deactivation /**********************************************************************\
#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation #if ENABLED(FILAMENT_WIDTH_SENSOR) #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. #endif // CONFIGURATION_H` |
From what I can tell your firmware config looks correct. I just uploaded the RCbugFix today and configured my Delta(Ramps 1.4) to use a BLTouch. I verified that the compensation is working by triggering the probe, in several spots, several mm above the print bed; then i printed a part. It is actively compensating. Maybe you could try this? It would rule out a hardware or offset issue. The other option is to disable EEPROM settings and plug your probe offset and any other EEPROM settings directly into the config file. That is how I just setup mine. Maybe the EEPROM offsets are not being read correctly for some reason. |
The only other thing I can think of is that bilinear leveling used to only work with an odd number of points. ie instead of This one is a bit of a shot in the dark... |
How would I do this? Also what about this section? // Experimental Subdivision of the grid by Catmull-Rom method. |
Actually, M420 is for all the bed leveling systems in RCBugFix. Sections are added/deleted based on if mesh leveling is enabled or if one of the Auto Bed Leveling schemes is selected. I wouldn't recommend using M500 unless something has changed. The EEPROM literally wears out a little every time it's written. Definitely disable the EEPROM until you have things working as desired. The settings in EEPROM override a lot of the settings in your configuration files. You can find examples in this forum of people pulling out their hair because they'd make a change in their config file but the EEPROM would keep on overriding it with the old value. To disable the EEPROM just comment out EEPROM_SETTINGS in configuration.h. Sanity check - go to each of your G29 probe points and use the M48 command to measure the repeatability of your BLTouch. Your compensated Z height is at best as accurate as the readings you get from M48. FYI - don't do a G28 after you've done a G29. G28 turns off bilinear bed leveling. Increasing the number probe points definitely improves the results of G29. You're running 3x4 now. Try 5x5. Any idea how far off the compensation is after doing the G29 command? |
Looking at the printer, let's say the left 1/2 prints good and the right is
into plate. I am using buildtak so you can imagine my frustration having
gouge marks in my build material..
I have 1st layer settings at 100% and my probe offset is -2.75.
I am not a very comfortable coder so is there any way you can kindly walk
me through what I need to do? I can handle commenting out the line in code
but that is about as far as it goes.. Lol.
I M48 1 single spot and this is what I got:
Mean: 2.906875 Min: 2.840 Max: 2.927 Range: 0.088
Standard Deviation: 0.023407
…On Feb 20, 2017 3:14 AM, "Bob-the-Kuhn" ***@***.***> wrote:
Actually, M420 is for all the bed leveling systems in RCBugFix. Sections
are added/deleted based on if mesh leveling is enabled or if one of the
Auto Bed Leveling schemes is selected.
I wouldn't recommend using M500 unless something has changed. The EEPROM
literally wears out a little every time it's written.
Definitely disable the EEPROM until you have things working as desired.
The settings in EEPROM override a lot of the settings in your configuration
files. You can find examples in this forum of people pulling out their hair
because they'd make a change in their config file but the EEPROM would keep
on overriding it with the old value.
To disable the EEPROM just comment out EEPROM_SETTINGS in configuration.h.
Sanity check - go to each of your G29 probe points and use the M48 command
to measure the repeatability of your BLTouch. Your compensated Z height is
at best as accurate as the readings you get from M48.
FYI - don't do a G28 after you've done a G29. G28 turns off bilinear bed
leveling.
Increasing the number probe points definitely improves the results of G29.
You're running 3x4 now. Try 5x5.
Any idea how far off the compensation is after doing the G29 command?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#5868 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ALBnoXga1-8xSNX8l-5kV9iVoZ_L0Ucoks5reUtXgaJpZM4MFtVk>
.
|
I just looked up buildtak. Nice but not cheap. You're not actually changing code when you set/enable/disable items in Configuration.h and Configuration_adv.h. You're just setting parameters and enabling/disabling flags used by the code and the compiler. You're expected to modify these files and pins_AZTEEG_X3_PRO.h to match your machine. To disable the EEPROM open the file configuration.h, do a search for EEPROM_SETTINGS and then add // at the beginning of the line. Have you tried changing your probe offset? Any error in it directly affects what the system thinks Z0 is after G29. Try using the "paper between nozzle and build surface" method to look for high/low spots with leveling enabled and then disabled. There should be an obvious improvement. |
I have already done all of that (enable/disable/set) specific lines in code since your post. I have had my printer working for quite some time now (Printing, not probing) and I am an original backer for the BLTouch but it never seemed as though it was working properly since I was using Repetier. I just recently switched to Marlin because I was told that it supports the probe and Rep does not. When I first load the code, I always do the paper/nozzle calibration so I know what the offset would be (M851 Zxxx) but I only have done it in 1 spot (Middle). Is there something that I should do differently? I do not understand how I would do the paper test in multiple spots and only enter 1 # for the offset.. |
I hope you're using an RCBugFix that's less than a week old. Older ones had a minimum speed limit where if you probed too slow the BLTouch signal could be missed which results in the head being pushed into the build plate until you hit your kill switch. So you're the one to blame for that 5mS pulse from the BLTouch! Not the best decision they made. The Z offset moves everything up/down at once. Based on your printing experience I suggest modifying it by 0.05 or 0.1 and see what happens. Sorry, too late at night and I don't remember if going from -2.75 to -2.65 raises or lowers it. I'm a little surprised at the M48 results. They imply that each step pulse (when micro stepping is set to 1) results in about 0.025mm movement. I'm not used to seeing dedicated 3D printers with that course of a minimum physical movement. The more I think about it the more I'm convinced your path to better prints is to go to a 5x5 grid and to adjust your Z offset. Don't forget to put your final offset back into your config file. |
I am using the latest RCBugFix. The -2.65 would raise the nozzle away from the bed. The higher the - #, the more "into" the bed it goes. I do not think I have micro stepping activated unless it is on by default. You say not to forget to put it back into the config file. What exactly are you speaking of and where? |
Z_PROBE_OFFSET_FROM_EXTRUDER in Configuration.h is the variable/setting you need to update. Once you've set this then you no longer need to manually set it with M851. At power up or after a reset the offset is loaded from EEPROM if that is enabled. If the EEPROM is not enabled then it uses the offset from the Configuration.h file. M851 changes the currently used offset. A M851 specified value is lost after a reset/powerup unless saved to the EEPROM via the M500 command or manually copied into the config file. |
Here is what I got with 5x5 grid and -2.95 as my offset (center) READ: Bilinear Leveling Grid: |
I have the same problem (briefly mentioned in issue #5817 ) but the fact that I didn't own a legit BLTouch lead me to rethink if it was a sensor problem or not. You seems to have a legit one and the same problem as me. Maybe I screwed up Marlin and it's not the sensor's fault! The I tryed with linear, bilinear. 2, 3 or 4 points. With and without EEPROM. With the lastest RCBugFix. No luck. Here is the picture of mine, I wonder where your error occur (which axis): |
I'm guessing here ... but is the 0.2mm error section outside the probe area? Can you modify the xxx_PROBE_BED_POSITION settings to include more of the error section? With a BLTouch type of probe there'll always be a strip along two edges that the probe can't get to. You could try a 5x5 bilinear grid. That was the magic bullet on a couple of issues but those were for errors within the probed area. Really long shot - try enabling ABL_BILINEAR_SUBDIVISION in configuration.h. By chance is the bed tilt primarily in the X direction and are you running Z_DUAL_STEPPER_DRIVERS? If yes to both then you could consider using Z_DUAL_ENDSTOPS. This allows you to tilt the X carriage. Both of these are in configuration_adv.h. I'm curious about your BLTouch type probe. If it's a Geeetech 3D Touch then you have no worries. They did a good job of emulating the BLTouch. If it's not a Geeetech then I have a utility that I'd like you to run. I've proposed a Z servo probe utility that will tell you if the probe is BLTouch compatible. |
The probing points are within the printing zone. I modified the max X and Y of the printer to compensate the offset of the probe ( I'm currently set as:
So yes, the subdivision is already activated. I'll try increasing the grid to 5x5 and update the result. And no, there's no dual stepper set in the firmware. The printer is a Leapfrog Creatr where all the electronics have been replaced to RAMPS. Forked at (if you want to see the full files): https://github.com/m600x/Leapfrog-Creatr-on-RAMPS-with-Marlin/tree/RCBugFix/Marlin As for the probe type, mine seems to behavior like a retarded clone: deployed pin is always triggered, there's no pulse involving. And sure, I can run your utility! |
TL;DR: 5x5 doesn't solve the problem.
I did what you suggest me to do: increasing the grid point from 4 to 5 in bilinear leveling with subdivision activate. 4X4 5x5 So it is roughly the same result. Increasing did not solve the problem unfortunately. The following code is used to produce the result below:
Bilinear 4x4 with subdivision 3
Heatmap version: https://plot.ly/~M600/3/ Bilinear 5x5 with subdivision 3
Heatmap version: https://plot.ly/~M600/1/ Further testing the probeIn an attempt to see if the probe is somewhat reliable, i ran a series of The slower version show a bigger deviation than the fast speed but nonetheless the figure are not big enough to cause a major deviation in probing accuracy imo. Homing speed 600mm/min (average 0.0074794)
Homing speed 300mm/min (average 0.0145168)
//Sorry for my english. This is not my native language. |
Do M48 at a few of the "good" spots and a few of the "bad" spots. The spread should be no more than the movement 2 steps of the motor would produce. In my case I have 200 step motors. 1 step results in 0.027mm movement. I normally see my spread between 0 & 0.054mm. At best your grid will only be as accurate as the spread you see with M48. |
I've got to learn to put my machine back to normal after troubleshooting a problem. Nothing like a few moved pins and an open connection to drive you crazy. I've finally been able to test my utility with your branch. Attached is the modified file. To run the test issue a M43 S1 command. You'll need to enable PINS_DEBUGGING near the end of Configuration_adv.h. |
Your utility seems to work (can't confirm, ain't got a real one):
As pointed out by playlet, his workaround seems to be disabling Will keep updated. |
Thanks |
@m600x did disabling the fade height make any difference for you? I just realized my leveling was not working in a small increments as well. It does not appear that disabling the fade height made a difference for me. |
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. |
I recently configured RCBugFix and uploaded to my Azteeg X3 Pro board and I can not get the autolvl to work! My probe works fine and probes the defined points correctly but when it prints, the nozzle still digs in a little on one side. What do I have to do to get this working properly?? I have tried M420 S1 to enable auto leveling, M500 after probing and everything. I get the readout after probe but nothing is compensated for the bed irregularities.. PLEASE help!
Here is what I get when finished probing
READ: Bilinear Leveling Grid:
READ: 0 1 2 3
READ: 0 +0.28 +0.24 +0.36 +0.21
READ: 1 +0.25 +0.20 +0.16 +0.07
READ: 2 +0.10 +0.07 +0.08 +0.05
READ: 3 +0.23 +0.20 +0.18 +0.14
This is my starting script in S3D
G21 ;metric values
M107 ;start with the fan off
G28
M420 S1
M420 Z0.7
G29 ;AUTO PROBE
M500 ; SAVE AUTO PROBE RESULTS
G1 X2 Y2 Z0
M109 S245 ;set extruder temp and wait
M116 ;wait for temps to stabilize
G92 E0 ;zero the extruded length
G1 F200 E20 ;extrude 10mm of feed stock
G92 E0 ;zero the extruded length again
The text was updated successfully, but these errors were encountered: