Solved Flaky BL-Touch
-
I have two printers that are, theoretically, identical. CoreXY Duet 3 6HC with Pi SBC. BL-Touch is wired to IO_7. I have issues with the BL-Touch on both machines, but it's much worse on one than on the other.
-
BL-Touch deploys during printing. It's not a GCODE issue. I can run the same code multiple times. Sometimes the probe is bent at the end of the print. Sometimes it isn't.
-
After running a job or sitting idle for a while, the BL-Touch is not responsive. Reset commands run without error, but there is no response - the sensor doesn't blink or deploy. I have to cycle power on the machine to get the probe to wake up.
-
I've had a few times where the probe deploys for home Z. Bed doesn't stop rising when probe is hit. Printer reports probe not activated (or whatever it says) and Z axis crashes the nozzle, but it looks like all was working as expected.
I added probe RESET commands to the HOME and HOMEALL gcode files. I've replaced the probes.
What are some other troubleshooting steps I can take here to try to ID the issue.
-
-
-
@droftarts Been through all that. Have not been able to ID any issues with wiring or codes.
-
@zemlin Okay, will need more info. M115 for firmware version, config.g, homing files.
Some other thoughts:
Big bed heater, strong magnets affecting BLTouch? Try probing cold, or with heater off.
BLTouch wiring picking up interference from motor wires or heater PWM?
Drop in power to the BLTouch? Are you powering the RPi from the Duet? Or running something else off 5V, like a lot of LEDs? What changes at the end of a job that causes the BLTouch to be unresponsive? Post your end gcode.I doubt it will be the firmware or the Duet board; I can't think of a BLTouch issue (which are common) that hasn't been configuration, wiring or the BLTouch itself.
Ian
-
@droftarts - not a code guy - just fumble my way through, so pardon any sloppy work here.
M115 FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.4.5 ELECTRONICS: Duet 3 MB6HC v1.02 or later FIRMWARE_DATE: 2022-11-30 19:35:23
G21 ;Work in millimetres G90 ;Send absolute coordinates... M83 ;...but relative extruder moves M552 I1 S1 M550 P"D2" ; Axis and motor configuration ;M569.1 P50.0 T2 C5 R70 I3000 D0.05 ; Configure the 1HCL board at CAN address 50 with a quadrature encoder on the motor shaft that has 20 steps per motor full step. ;M569.1 P51.0 T2 C5 R80 I4500 D0.07 ; Configure the 1HCL board at CAN address 51 with a quadrature encoder on the motor shaft that has 20 steps per motor full step. ;m569.1 P50.0 T2 C5 R82 I2500 D0.32 ;m569.1 P51.0 T2 C5 R82 I2500 D0.32 m569.1 P50.0 T2 C5 R82 I2500 D0.24 m569.1 P51.0 T2 C5 R82 I2500 D0.24 ;M569 P0 S1 ;Drive 0 X / Rear ;M569 P1 S1 ;Drive 1 Y / Front M569 P2 S1 ;Drive 2 Z Front Left M569 P3 S1 ;Drive 3 Z Rear Left M569 P4 S1 ;Drive 4 Z Right M569 P5 S1 ;Drive 5 Extruder M669 K1 ;corexy mode M569 P50.0 D4 S0 ; Configure the motor on the 1HCL at can address 50 as being in closed-loop drive mode (D4) and not reversed (S1) M569 P51.0 D4 S0 ; Configure the motor on the 1HCL at can address 51 as being in closed-loop drive mode (D4) and not reversed (S1) M917 X10 Y10 M584 X51.0 Y50.0 Z2:3:4 E5 ; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to drive 5 ;Leadscrew locations ;M671 X-38:-38:340 Y62.5:247.5:139 S7.5 ;X -38, -38, 340 ;Leadscrew locations M671 X-24:-24:325 Y32:287:159 S7.5 ;X -38, -38, 340 M350 X16 Y16 Z16 E16 I0 ;set 16x microstepping for axes with interpolation M92 X101.002 Y101.002 Z1600 E400 ;steps/mm 0.9 z ;M350 X64 Y64 Z64 E64 I0 ;set 64x microstepping for axes without interpolation ;M92 X404.0080 Y404.0080 Z6400 E1600 ;steps/mm 0.9 z ;M350 X128 Y128 Z16 E16 I1 ;set 128x microstepping for axes with interpolation ;M92 X808.016 Y808.016 Z1600 E400 ;steps/mm 0.9 z M906 X2100 Y2100 Z1200 E600 I60 ;Set motor currents (mA) M201 X3000 Y3000 Z600 E6000 ;Accelerations (mm/s^2) M203 X24000 Y24000 Z900 E3600 ;Maximum speeds (mm/min) M566 X300 Y300 Z100 E250 ;Maximum jerk speeds mm/minute M208 X310 Y310 Z345 ;set axis maxima and high homing switch positions (adjust to suit your machine) M208 X0 Y-3 Z-2 S1 ;set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed) ; End Stops M574 X1 S1 P"io3.in" ;Map the X endstop to io3.in M574 Y2 S1 P"io1.in" ;May the Y endstop to io1.in ; Filament Sentinel M591 P1 C"io4.in" S1 D0; filament monitor connected to E0 endstop ; Thermistors M308 S0 P"temp0" Y"thermistor" A"bed_heat" T100000 B4240 H0 L0 ;Bed thermistor - duet 3, connected to temp0 ;M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.060000e-8 ; sensor 1 M308 S1 P"temp1" Y"pt1000" ; configure sensor 1 as PT1000 on pin temp1 M308 S2 P"temp2" Y"pt1000" A"enclosure"; configure sensor 2 as PT1000 on pin temp2 - Enclosure ;Define Heaters M950 H0 C"out0" T0 ;Bed heater is on out0 M950 H1 C"out1" T1 ;Hotend heater is on out1 M950 H2 C"out2" T2 ;Enclosure heater is on out2 M307 H0 A90.0 C700.0 D10.0 S1.00 B1 ;Bed Heater duet 3 configuration M307 H1 A548.8 C298.6 D4.6 S1.00 B0 ;Hotend duet 3 configuration ;M307 H2 R0.060 D89 S1.00 B1 ;Enclosure Heater duet 3 configuration M307 H2 B1 C96000 D1000 R0.01 M570 H1 P4 T15 ;Hot end may be a little slow to heat up so allow it 180 seconds M143 S350 ;Set max hotend temperature ; Fans M950 F0 C"out4" ;Hotend fan on "out4" connector M106 P0 S255 H1 T50 ;enable thermostatic mode for hotend fan M950 F1 C"out5" ;Layer fan on "out5" connector M106 P1 S0 ;Layer Fan M950 F2 C"out6" ;Layer fan on "out6" connector M106 P2 S0 ;Layer Fan M950 F3 C"out7" ;Enclosure fans on "out7" connector M106 P3 S255 H2 T35 ;enable thermostatic mode for enclosure circ fans M950 F4 C"out3" ;Exhaust blower on "out3" connector M106 p4 h-1 S0 ;Exhaust blower off ;M106 P4 T{heat.heaters[2].active + 2} H2 ; Tool definitions M563 P0 D0 H1 F1:2 ;Define tool 0 G10 P0 S0 R0 ;Set tool 0 operating and standby temperatures ;R3D Probe ;M558 P5 C"io7.in" H2.5 A10 S0.02 F120 T12000 ; set Z probe type to EZ ABL and the dive height + speeds ;G31 X28 Y0 Z1.1 P25 ;Z offset can be adjusted here ;BL Touch M950 S0 C"io7.out" ; create servo pin 0 for BLTouch M558 P9 C"io7.in" H3.5 A10 F60 T12000 ; set Z probe type to bltouch and the dive height + speeds G31 X30 Y0 Z1.0 P25 ; ;set the offsets for the bltouch ;Accelermeter ;M955 P0 C"spi.cs3+spi.cs2" I20 ; all wires connected to temp DB connector M593 P"zvdd" F64.2 M575 P1 S1 B57600 ;G29 S1 M557 X30:300 Y10:300 P7 M501 M140 H0 ;set bed heater as H0 M143 H0 S120 ;set max bed temp M141 H2 S0 R0 ;set enclosure heater as H2 M143 H2 S65 T2 ;set enclosure max temperature T0 ;select first hot end M556 S100 X-0.0495 ; Skew Correction M579 X0.9913 Y0.9923 ; Scale Correction
HomeAll
M280 P0 S160 ; reset BL Touch G4 P500 M280 P0 S90 ; retract BLTouch G4 P500 M280 P0 S10 ; deploy BLTouch G4 P500 M280 P0 S90 ; retract BLTouch M98 P"homexy.g" ; Home X and Y together G90 G1 X125 Y145 F6000 ; Move to the center of the bed ; M558 Fxxx sets the probing speed. ; Probe rapidly to get us in the right ballpark. ; This brings the bed up quickly but may be less accurate. M558 F250 G30 ; Probe again slowly for precision M558 F50 G30 ;G1 H1 Z-340 F360 ; move Z down stopping at the endstop ;G90 ; absolute positioning ;G92 Z0 ; set Z position to axis minimum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing G91 ; relative positioning G1 Z10 F500 ; lift Z relative to current position G90 ; absolute positioning
HomeZ
M280 P0 S160 ; reset BL Touch G4 P500 M280 P0 S90 ; retract BLTouch G4 P500 M280 P0 S10 ; deploy BLTouch G4 P500 M280 P0 S90 ; retract BLTouch G91 G1 Z10 F800 H2 ; lift z so we don't crash G90 G1 X125 Y145 F6000 ; Move to the center of the bed ; M558 Fxxx sets the probing speed. ; Probe rapidly to get us in the right ballpark. ; This brings the bed up quickly but may be less accurate. M558 F250 ; Probe again slowly for precision M558 F50 G30 ; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun Feb 02 2020 20:26:36 GMT-0600 (Central Standard Time) ;G91 ; relative positioning ;G1 H2 Z5 F6000 ; lift Z relative to current position ;G1 H1 Z-305 F1800 ; move Z down until the endstop is triggered ;G92 Z0 ; set Z position to axis minimum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing G91 ; relative positioning G1 Z10 F500 ; lift Z relative to current position G90 ; absolute positioning
Bed heater is Keenovo 300x300 24V 400W, which does push the limit on the bed output current. I've watched the 24V level as reported by the board and don't see any voltage drops from when the heater is on. PSU is a Meanwell 24V 25A. 5V for the Pi comes from a Daygreen DC converter with a 5V 10A output rating. I have one small strip of LEDs on the machine that is wired to the Duet.
I could move the bed to an SSR to take the current draw off the board. I have those parts on hand. Not blowing the 15A fuses though, so figured I should be good.
The bed is magnetic, but I have 3 other machines with identical mag bed designs that have never had issues. Enclosure is heated to 55C, but again I have other machines that I run at 60C without issues.
Interference from motor wires or heater PWM is a possibility. Any suggestions on how to diagnose that? Wiring to print head goes through a cable chain. My Raise machines have similar wiring and much longer bundles to the print head, but they are Duet2, not 3. I think the Raise hot end is 40W vs the 50W Slice on these machines. I could strip the probe ribbon cable from the print head harness and run it loose for a while.
Probing with the bed heating is never a problem. If I cycle power on the printer before starting a job, machine will heat up, home, probe the bed, all without issue. I have a 10 minute dwell in my start script to let the bed soak/settle before probing. I usually let the machine soak for 30 minutes before rechecking the Z-offset and startup is always fine.
It's somewhere mid-print that the probe will sometimes drop and get bent. Starting the next print is sketchy. If the probe appears to be responding, it may or may not keep working through the homing/probing sequence. If I cycle power, it's always solid for the print startup.
-
@droftarts I finally witnessed the probe misbehaving during a print. Was just popping up and down pretty frequently while running the first layer ... then it seemed to settle down. So maybe EMI from the stepper?
I have some 5-conductor shielded cable on order. I'll make up new cables, and will route them along the filament tube initially to keep it clear of the wire harness. We'll see if that makes a difference.
Could that cause the probe to be come unresponsive?
-
@zemlin Yes, I think it's picking up inductive interference from something, and it's hitting the PWM frequency on the servo wire that matches deploy and retract. It may also be why it goes out of service; there are various PWM frequencies for the codes the BLTouch responds to. This table lists the instructions that different PWM frequencies call, but I don't know which, or if it's a combination of them, are making it unresponsive:
Source: https://www.antclabs.com/bltouch-v3Shielded twisted pair wiring on the motor wires (and possibly heater wires) would help, as well as shielding the BLTouch wiring, or moving them further apart, if you can.
Ian
-
It could also be intermittent power causing it to do the startup test?
-
Yesterday I made up new leads for the BL-Touch using shielded cable, and I routed the lead along the filament feed tube rather than through the print head harness.
All issues have cleared up on both machines. Gone a whole day without bending a pin!!!
Thanks for your time and assistance @droftarts & @Phaedrux
Have a couple more issues to clear up on these machines, but those will be different threads.
karl
-
-