-
-
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
BLTouch ignoring M-commands #7024
Comments
The blue light is primarily noticed on the very latest probes. If I had to guess... The last 6 weeks all of the probes have blue lights now. The position of the white and black wires do matter. By doing a M119 you probably will be able to see if the controller board thinks the probe is triggered or not. Because the BL-Touch only sends out a pulse... It should always be in an open state when you do a M119. You should be able to control the BL-Touch by doing these commands:
|
What version of Marlin are you running? I don't recognize the configuration.h file. If your BLTouch has a serial number then it has a blue LED. It's on the right side at the bottom of the PWB on the inside. Here's a sequence to see if your BLTouch with a serial number is hooked up correctly:
|
Mine has a QR code with a 9-character string that I guess could be a serial number. Just below it, in tiny letters is "Smart V1.0". It is also has a wiring harness instead of having the wires directly attached to it. I am pretty sure this is the one I have.
These are the commands I am trying. M119 returns "open" for the Z-minus, but when I issue the M280 commands it doesn't do anything. If I pull out the pin, the red LED goes off but M119 still shows Z-minus as "open". I have tried flipping the wires around but no difference. I don't see any blue LEDs at all, just the red.
|
Nice - BLTouch has done away with the soldered wires & gone to a connector. I take it that you downloaded Anycubic_kossel.rar or it's brother. That software puts the servo0 signal on pin 7. Marlin puts it on pin 11. If I read my notes properly pin 7 on RAMPS 1.3 was servo0. On RAMPS 1.4 (the current one) servo 0 is pin 11. Change your motherboard define from "33" (RAMPS 1.3 EFB) to "43" (RAMPS 1.4 EFB) and I think it'll start working. |
Ok, the M-commands are working now. I can raise/lower the pin and can run the "self test". But the M119 still is reporting "open" even when the pin is pulled out. Still need to figure out why. I'll try to fiddle with the connections to Z-min and see if maybe it's just the order. |
M119 will almost never report the BLTouch as triggered unless you put the BLTouch into the self test mode. In normal operation the BLTouch sends out a 5mS pulse when triggered. You'll have to be very lucky or very persistent to catch that pulse with M119. If you use the sequence above you'll find out if the BLTouch's output is working properly. There's an alternative method to determine if the BLTouch is fully functional. Issue the M43 S1 command and follow the directions on the host screen (not the LCD screen). To enable the M43 commands you'll need to enable PINS_DEBUGGING in configuration_adv.h. |
Fair enough about the M119, but when I run the following:
The BLTouch pin will extend, then the head will smash into the bed and it will drag out violently towards X-, Y-, (front left corner). I double-checked and the bottom of the BLTouch is almost spot-on at 8.3mm above where the print head is. I have |
Can you deploy the Z-Probe with a M280 P0 S10 And then manually raise the pin until it triggers. It should trigger before the pin is above the bottom of the nozzle. |
Here are the steps I just performed:
Then I used the -.1 stepdown in Printerface until the pin popped up and the light was on. This was at My printer is leveled right now so Z0 has just a slight bit of friction with a thin sheet of paper. Edit: |
The paper test will get you close. You'll need to refine the Z_PROBE_OFFSET_FROM_EXTRUDER based on what it's actually doing. Make sure leveling is off when you set Z_PROBE_OFFSET_FROM_EXTRUDER. Don't forget to do the M502, M500, M501 sequence to save it to EEPROM. |
Maybe it's trying to probe too fast or something? |
.2 mm isn't a lot of room. I have my BL-Touch at -1.027mm |
|
Ok, I adjusted my bracket until the pin activated at 2.1 above the bed, then I set the
It still bangs dead into the bed then rubs the printhead out towards the X-,Y- corner, so hard it's tearing the tape I have there. |
Every probe should look like this:
I'll bet that's not happening. I expect this is another example of wrong settings because of a poorly worded Z probe section. We have to come up with something better. You're homing in the +Z direction which means you're using the Z_MAX endstop for homing and the BLTouch only for probing. In this situation you need the following defines: I don't know if When you do a G28 and then a G0 Z0, how far above the bed is the nozzle? |
If I run the
I took a video of it this morning and shared it here. |
You definitely do NOT have the probe's output setup properly. Did you do these changes?
The M502, M500, M501 sequence is used when you have the EEPROM enabled and want to save your changes. G29 does NOT save the results to EEPROM. You'll need to do the M502, M500, M501 sequence to save the results. The sequence to determine if the BLTouch is setup properly is:
|
Yes, I made those changes when you suggested them and uploaded to the printer. I also ran the eeprom_clear script first just to make sure it wasn't holding on to any bad values. With the above steps, everything was good until Step 9. At that step, |
I think I know what the problem is.
The work around is to do one of the following:
|
I made those changes but it's still showing "open" after M119. I also tripple-checked all the wires are where they should be (orange/red/brown to S0 and white/black to Z-Min). Is there some way to test the board directly, like maybe putting voltage on one of the Z-MIN pins, to see if it's maybe the board isn't working or isn't setup right? |
The M43 command has several useful options. You'll need to enable PINS_DEBUGGING in Configuration_adv.h to activate M43.
|
I don't see any pins listed as
Not sure what to look for here, and just to note the
Not sure what this was supposed to do, but it caused a loud screeching sound. I used a piece of metal to try to ground the S pin to the G pin, but it didn't do anything. The output was:
|
Shoot - I forgot you were running RC8. Some files need to be updated & M43 S1 just isn't available. Please copy these files into your directory. and then re-run M43 I1. |
I am getting a lot of compiler errors:
I see As a side note, should I consider updating to the latest Marlin FW? Would that maybe help debug the problem better? |
You're correct - the files I sent came from the newer software. Moving to bugfix-1.1.x would be great! You'll need to transfer your machine specific items to the new config files. The best way I've found to do this is to use an editor that will do a side by side difference display. I like using the Compare plugin within Notepad++. There's also a new tool that's supposed to automate the process of getting new software and transferring the configuration files over. It's called marlin-conf and marlin-confg , depending on which page you're on. It uses the NPM system./service. I think the starting point is either https://github.com/akaJes/marlin-config#readme or https://www.npmjs.com/package/marlin-conf |
I just tried marlin-conf. If you're running Windows then start on this page. It doesn't offer bugfix-1.1.x but it does offer 1.1.3. I'd rather you use bugfix-1.1.x as it has the latest M43 debug tools. It does take some getting used to. Seems to do what it says it'll do. |
Alright, I am trying my hand at marlin-conf. Installation was pretty easy (I am a developer, mostly web, so pretty familiar w/ NPM and such). I am trying to go through my Configuration.h line-by-line and match that to what is in the tabs of Marlin configurator, but I am not finding the section in mine marked "Delta". Where do I set up those values? I also see a G-code setting for |
Looks like the latest release of marlin-conf doesn't support deltas. The main discussion on this tool is in issue #6722. There's no mention of delta in there. Looks like you're stuck with doing a manual update. |
That probably can be cured pretty easily. But Delta's keep getting treated like the ugly step child. (for example: UBL didn't run on Delta's until @oldmcg stepped up and did the conversion...) |
ultralcd.cpp has a lot of issues. Tannoo and I are trying to clean it up. But it is confusing as $h|+. There are a bunch of symbols that don't even need to be in it: |
OMG! It works! All I did was upload the bugfix-1.1.x branch after manually copying over the settings from my old config. Made no changes at all to them, just 1-for-1 translation the best I could. Here is the output when I ran the G29:
Now I think I just need to go back over @Bob-the-Kuhn 's instructions above on how to get these settings into the eeprom and make small adjustments to the Z offset of the probe to hone it in. Then I should be off to the races! @Bob-the-Kuhn and everyone else, thanks so much for all the fantastic help. You were all EXTREMELY helpful and I do really appreciate it! |
I'm concerned that you're not getting good readings. The 0.4mm & 0.5mm changes between adjacent samples seem large. Try running the M48 command. That'll give you some idea of the error in the BLTouch probe results. You'll need to enable Z_MIN_PROBE_REPEATABILITY_TEST in configuration.h to enable the M48 command. |
I get more consistent results with my bltouch using Z_PROBE_SPEED_SLOW 500 and BLTOUCH_DELAY 400, and be sure bed heater and nozzle heater are both off for probing. |
@Bob-the-Kuhn Repeatability test results:
And the second time I ran it:
I also slowed down the probing as suggested by @oldmcg :
And I ran G29 again:
|
I think you must have some delta geometry a bit off. Make sure the bed is mounted roughly square to the towers -- I use a square but a book will work too. Then with DELTA_AUTO_CALIBRATION defined in configuration.h, try running G33 P7 V2 before G29. If the results look "better" then you can save the G33 calibration results with M502. I can't speak for BILINEAR leveling but UBL bed leveling is working well for me on delta with bugfix_1.1.x. I use UBL_MESH_INSET of zero and 11x11 grid. The G29 sequence is then G29 P1 to BLtouch-probe the points that can be reached by the probe, then G29 P2 to do the manual nozzle/paper leveling for grid points that can't be reached by the X/Y offset probe (use knob by LCD to run nozzle up and down and push click when it's dragging the paper), and then for delta specifically G29 P3.15 to fill the remaining points outside the circular bed to complete the grid. Run G29 T at any point in the sequence to see the grid, G29 S0 to save the mesh, G29 A to activate leveling with that grid. |
And... my guess is oldmcg has the geometry of his Delta tuned pretty well so he didn't mention this... But after you get your mesh setup, there is one more tool that is there to help you. You can do a G26 to print a Mesh Validation Pattern on the bed. With that, you can see mesh points that are not quite perfect. You can move the nozzle over those areas and do a G29 P4 R to edit an area's mesh points up or down. If you repeat the G26 and G29 P4 two or three times... You should get perfect adhesion across 100% of your bed every time. |
There's definitely something wrong with the probing. The differences between points in the first mesh post are off by as much as 0.7 mm compared to the differences in the second mesh post. You should be getting better repeatability on the M48 command, What's the mechanical resolution of your Z axis? Please post your current configuration. |
It would be good if the M48 was returning better numbers. But Delta's are notorious for having waves in the nozzle height across the bed. And even if those .7mm differences are the result of bad probe values... If he can print a G26 pattern, it will be clear those points are wrong and need to be adjusted. I guess what I'm really saying is "The G26 pattern is going to tell you the truth about what is happening at various places on the bed." |
Is G26 just for UBL? There was some discussion about making it available to other systems. Is there a way to edit the bilinear mesh? |
G26 currently works just for UBL. It is not going to be difficult to change, but G26 makes use of the has_control_of_lcd_panel = true; and I think the ultralcd.cpp file only turns on the required support if UBL has been activated. We might want to enable that same control for BiLinear so G26 can be used there also.
Not with UBL's interactive editor. But the M421 command edits all of the various mesh bed leveling schemes mesh points. So... If we get G26 to work with BiLinear Mesh Leveling... M421 can be used to update the mesh. And... The same methodology should work there too. (Print a G26 pattern... Edit the bad areas of the mesh... repeat until you have perfection...)
This really should be done. BiLinear Mesh Leveling would benefit from this happening. And it really should be very straight forward to do. But I'm not going to get to it for a while because I have too many other distractions. If you get bored and are looking for something to do... Please feel free.... |
Couple more things. Are you using interrupt endstops? #define ENDSTOP_INTERRUPTS_FEATURE. UBL G26 is very handy to check if grid is tuned and leveling is working correctly. I haven't tweaked the G26 pattern for delta beds yet, but it still prints a workable pattern. |
Bob, if you are looking for something fun to do... For Delta's we are thinking we need to print a circle just within the Delta Printable Radius. (And then we have follow up ideas to help identify (and edit) the mesh points just outside the Delta Printable Radius.) |
My next fun project is to replace my AzteegX3pro with a Re-Arm & the Geeetech RAMPS-FD. I plugged in an obviously mislabeled stepper driver & my controller went up in smoke. It's a wonder I hadn't killed it earlier with all the changes I've done trying to emulate a user's system. The RAMPS-FD is coming from China so it'll be a while before my printer is fully functional again. I need to clean up some items around the house so it'll be tomorrow before I can look at G26. Does UBL compensate the G2 & G3 arc commands? Just wondering if there is an obvious way to generate the curves. Hmmm - it already generates half circles so I'll look that method over first. |
Please correct me if I'm wrong. But I thought the Re-ARM board worked with a normal, everyday, 5 Volt RAMPS v1.4 board. If that is not true... I need to know that!!!
It should. Just because those ultimately go down into buffer_line_kinematic(). But G26 doesn't really draw circles. (Maybe it should!!!) What it does is 8 or 10 line segments that form a circular pattern. (Look close at the 'circles' and you will see some corners on them.) I was thinking it could do the same thing except with 100 line segments to go around the edge of the circular DELTA_PRINTABLE_RADIUS. But it may be more efficient to just call the same code that G2 implements. If you do end up looking at G26... It might not hurt to see if those 'circles' can be done with G2 because that would collapse 50 lines of complicated code out of G26. Doing a 'circle' is not a lot of code. It is the complicated code to know where to start and end a partial circle along the edge (or especially the corner) of the mesh. It maybe G2 would cut all that complicated logic out of the code. That would be good! |
Yes, Re-ARM works with the RAMPS 1.4 board. The RAMPS-FD is supposed to be 100% RAMPS 1.4 compatible with a sixth stepper driver slot and beefier drivers. I see your point on the 3.3V signal translations it does. I'll double check the pinout before I use it. I'll start with a RAMPS 1.4 for development. |
UBL for delta does G2/G3 arc, but I think UBL for cartesian probably does not do G2/3 arc yet -- need to #define PLANNER_LEVELING to make that happen, and it is disabled by default for UBL cartesian. I don't have a cartesian machine to test a change -- just guessing at behavior based on code. The G2/3 arc code acts kind of like delta segmentation -- it just used fixed length 1mm lines to draw any arc, but does some fancy sin/cos estimations to minimize per-segment overhead. |
This sounds like something fun to mess with.... But I won't get to it for a while. I've got too many other fun things to mess with. The 20x4 LCD Panel needs some fun code to do the 'Postage Stamp UBL Map' for Tannoo's code. And right now, I'm distracted trying to figure out everything needed to bring up the 32-Bit Re-ARM board. I want to see if I can get UBL to run on the 32-Bit version of Marlin as soon as I can. |
@oldmcg I checked it with a carpenter's square and it seems pretty level. I ran the G33 as instructed, the results were:
I would like to check the other parameters I copied over from the old config, like the delta arm length, but my caliper doesn't open wide enough for me to verify that. Could the cabling tension have anything to do with the inconsistencies? I have all the wires from the print head wrapped with cable wrap, but it's sort of free-dangling around. Maybe it's putting enough tension that the printer thinks the head move to X,Y, but its just a tad off??? I've been thinking of coming up with a way to hang it over the top using something like rubber bands or something. The belts all feel pretty tight. I have one belt tensioner on each right now. I can pick up some more but it may be a few days as I would have to order them from Amazon. I was also debating one picking up a set of aluminum sled carriages to replace the plastic ones that came with the printer. It just seems like the metal ones I am looking at has an much easier means of attaching the belt to the sled so that it's tight from the start. I also did not have @Bob-the-Kuhn I didn't make any changes to the Configuration_adv.h from what is in the bugfix-1.1.x branch. |
I haven't seen G33 come back with all zeros for endstops and tower angles. Did you run with P1 instead of P7? How many passes did G33 do before giving you that result? It usually says "rolling back" after the last pass before giving the final numbers. @LVD-AC, something seems fishy about reported stddev. My "bundle" of wires going to head is zip-tied to one of the rods. The steppers are strong enough that the cable bundle doesn't cause any movement problems. I'm very curious if ENDSTOP_INTERRUPTS_FEATURE improves the M48 repeatability. |
@oldmcg I re-ran it with ENDSTOP_INTERRUPTS_FEATURE enabled. Here is the full output:
And the full output from running the G29:
|
Ok, I have been tinkering with this all weekend. I figured I'd just go back to basics and try to get a consistent result for height calibration using I started by clearing eeprom and manually calibrating the height using a piece of paper. I was able to get the height of 335.6, and was able to auto-home and retest the height several times and each time it reproduced satisfactory results. Now that I had the actual tested bed height, I entered that for I then tried to calibrate using
I kept doing this over and over, but I just never could seem to get the numbers "dialed in". If I was, say, .19 too far below on the paper test, I would bump the z-offset of the prob .19 and rerun everything but it would either not change or would go in a direction I wasn't expecting at all. So, backing up, I cleared eeprom and re-uploaded the factory settings, made sure things were as expected w/
It just doesn't seem repeatable at all. I have double-touch probing turned on, so it does a fast one followed by a slow for the read, and I have the slow speed set pretty low. I just feel something is off, as @oldmcg mentioned, but I don't know how to go about calibrating things, even manually. |
A lot has been written about the double-touch feature; it does not seem to improve accuracy. By probing the bed fast the motors could loose a step or two and those errors are accumulated to all consecutive probes until a new home command is issued. You can test the repeatability of your probe with the M48 Xx.x Yy.y S command at different locations. |
I am away and can't look at code but recently noticed that probe_Pt returns logical not raw, so probably need raw conversion on each probe_Pt result, otherwise prev z home offset might cause wrong subsequent.
Double touch ignores first result, not very useful, thought about adding N probes per point and take avg.
…Sent from my Windows 10 phone
From: Luc Van Daele
Sent: Monday, June 26, 2017 3:42
To: MarlinFirmware/Marlin
Cc: oldmcg; Mention
Subject: Re: [MarlinFirmware/Marlin] BLTouch ignoring M-commands (#7024)
A lot has been written about the double-touch feature; it does not seem to improve accuracy. By probing the bed fast the motors could loose a step or two and those errors are accumulated to all consecutive probes until a new home command is issued.
You can test the repeatability of your probe with the M48 Xx.x Yy.y S command at different locations.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
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. |
High, all.
I am VERY new to this, so my appologies if this is being posted in the wrong place. I am trying to add a BLTouch Smart to my Anycubic Kossal but having problems.
When I turn on the printer, the BLTouch does it's self test, moving the pin out and in twice, then I get a solid red light. I am not seeing any blue light at all (maybe this version doesn't have it???). If I pull the pin out the red light goes off.
My setup is as follows:
My config is:
current_config.txt
I have the Black and White wires from the BLTouch wired to the Z- S and G pins (there is also a V pin, but the board seems not to boot up at all if I us that one). It doesn't seem to matter which way the White and Black wires are connected, as long as I am not using the V.
For the servo wires I have the Yellow wired to S, Brown wired to -, and Red wired to +.
Any help is much appreciated!
The text was updated successfully, but these errors were encountered: