BLTouch does not deploy for a print
-
@Phaedrux That is sound advice, I will do that.
-
@baird1fa if the update doesnt help:
I read in another thread that the heater disturbed the bltouch. One solution was to assemble the bltouch at a different position. The other means was to protect the cables with a shield, which can be bought separately and is around the cable.
It looked similar like the shielded cable on the left here in this link https://www.antclabs.com/wiring
-
@Phaedrux I have completed the upgrade to the latest version of the firmware. I tested the BL touch and after the update I was still able to deploy and retract the probe, so I started a print and the probe did not deploy. I hit the E-stop and then started the print again and the probe worked fine.
Now that the print has completed, I cannot activate the probe. I'm going to replace the BLTouch with a spare one and see if that has any effect.
-
@baird1fa said in BLTouch does not deploy for a print:
I'm going to replace the BLTouch with a spare one and see if that has any effect.
Good next step. Redo the wiring if possible as well if just changing the probe doesn't help. The intermittency really seems like a wiring fault.
-
@Phaedrux It really seems like something other than wiring. I can do exactly one print before it the servo signal doesn’t work. It really makes me think it is something that is in my slicer code but I don’t have anything strange there.
I have noticed since my upgrade to firmware 3.1.1 that I have a termination error at line 106 of my config.g macro. Line 106 is the latest line of my config.g
-
Ok that's something worth looking into.
Send M98 P"config.g" and report the results.
Maybe include your current config.g as well.
-
@Phaedrux
I’m just in the middle of a print so I will do that once it’s done. Also the config is the same as previously posted.Regards.
-
@Phaedrux I found that issue, It was my M911 command, I seem to have forgotten to close the quotations (") and so it wasn't understanding that command. So I'm pretty sure that is a completely unrelated issue.
But back to the matter at hand. The BLTouch will not deploy after I start a print job.
; G-Code generated by Simplify3D(R) Version 4.1.2 ; Jun 27, 2020 at 4:19:50 PM ; Settings Summary ; processName,Process1 ; applyToModels,Float switch Jbox cover,Float switch Jbox cover(2) ; profileName,Custom 22 (modified) ; profileVersion,2020-06-23 08:44:31 ; baseProfile,Default ; printMaterial,PC ; printQuality,Medium ; printExtruders,Extruder 2 Only ; extruderName,Extruder 1,Extruder 2 ; extruderToolheadNumber,0,1 ; extruderDiameter,0.8,0.4 ; extruderAutoWidth,1,1 ; extruderWidth,0.96,0.48 ; extrusionMultiplier,1,1.05 ; extruderUseRetract,1,1 ; extruderRetractionDistance,1,2 ; extruderExtraRestartDistance,0,0 ; extruderRetractionZLift,0.4,0.6 ; extruderRetractionSpeed,2400,2400 ; extruderUseCoasting,0,1 ; extruderCoastingDistance,0.2,0.2 ; extruderUseWipe,1,1 ; extruderWipeDistance,1,1 ; primaryExtruder,1 ; layerHeight,0.25 ; topSolidLayers,4 ; bottomSolidLayers,3 ; perimeterOutlines,3 ; printPerimetersInsideOut,1 ; startPointOption,2 ; startPointOriginX,0 ; startPointOriginY,0 ; sequentialIslands,0 ; spiralVaseMode,0 ; firstLayerHeightPercentage,120 ; firstLayerWidthPercentage,100 ; firstLayerUnderspeed,0.65 ; useRaft,0 ; raftExtruder,1 ; raftTopLayers,3 ; raftBaseLayers,2 ; raftOffset,3 ; raftSeparationDistance,0.14 ; raftTopInfill,100 ; aboveRaftSpeedMultiplier,0.3 ; useSkirt,1 ; skirtExtruder,1 ; skirtLayers,1 ; skirtOutlines,1 ; skirtOffset,2 ; usePrimePillar,0 ; primePillarExtruder,999 ; primePillarWidth,12 ; primePillarLocation,7 ; primePillarSpeedMultiplier,1 ; useOozeShield,0 ; oozeShieldExtruder,999 ; oozeShieldOffset,2 ; oozeShieldOutlines,1 ; oozeShieldSidewallShape,1 ; oozeShieldSidewallAngle,30 ; oozeShieldSpeedMultiplier,1 ; infillExtruder,1 ; internalInfillPattern,Fast Honeycomb ; externalInfillPattern,Rectilinear ; infillPercentage,30 ; outlineOverlapPercentage,40 ; infillExtrusionWidthPercentage,100 ; minInfillLength,5 ; infillLayerInterval,1 ; internalInfillAngles,0 ; overlapInternalInfillAngles,0 ; externalInfillAngles,45,-45,0,90 ; generateSupport,0 ; supportExtruder,1 ; supportInfillPercentage,45 ; supportExtraInflation,2 ; supportBaseLayers,2 ; denseSupportExtruder,1 ; denseSupportLayers,3 ; denseSupportInfillPercentage,70 ; supportLayerInterval,1 ; supportHorizontalPartOffset,0.8 ; supportUpperSeparationLayers,1 ; supportLowerSeparationLayers,1 ; supportType,0 ; supportGridSpacing,4 ; maxOverhangAngle,45 ; supportAngles,0 ; temperatureName,Extruder 1,Extruder 2,Heated Bed,Chamber circ fan,Chamber heater,Standby temp ; temperatureNumber,0,1,0,3,2,4 ; temperatureSetpointCount,1,1,1,1,1,1 ; temperatureSetpointLayers,1,1,1,1,1,1 ; temperatureSetpointTemperatures,0,300,120,200,60,0 ; temperatureStabilizeAtStartup,0,1,1,1,1,1 ; temperatureHeatedBed,0,0,1,0,0,0 ; fanLayers,1,5,10,30,40 ; fanSpeeds,0,10,15,20,25 ; blipFanToFullPower,0 ; adjustSpeedForCooling,1 ; minSpeedLayerTime,15 ; minCoolingSpeedSlowdown,50 ; increaseFanForCooling,0 ; minFanLayerTime,45 ; maxCoolingFanSpeed,100 ; increaseFanForBridging,1 ; bridgingFanSpeed,40 ; use5D,1 ; relativeEdistances,0 ; allowEaxisZeroing,1 ; independentExtruderAxes,0 ; includeM10123,0 ; stickySupport,1 ; applyToolheadOffsets,0 ; gcodeXoffset,0 ; gcodeYoffset,0 ; gcodeZoffset,0 ; overrideMachineDefinition,1 ; machineTypeOverride,0 ; strokeXoverride,355 ; strokeYoverride,334 ; strokeZoverride,578 ; originOffsetXoverride,177.5 ; originOffsetYoverride,175 ; originOffsetZoverride,0 ; homeXdirOverride,-1 ; homeYdirOverride,-1 ; homeZdirOverride,1 ; flipXoverride,1 ; flipYoverride,-1 ; flipZoverride,1 ; toolheadOffsets,0,0|0,0|0,0|0,0|0,0|0,0 ; overrideFirmwareConfiguration,1 ; firmwareTypeOverride,RepRap (Marlin/Repetier/Sprinter) ; GPXconfigOverride,r2 ; baudRateOverride,250000 ; overridePrinterModels,0 ; printerModelsOverride ; startingGcode,M106 P4 S100 ;Turn on chamber circ fan,,M104 S[extruder0_temperature] T0 ; Set nozzle 1 to temp,M104 S[extruder1_temperature] T1 ; Set nozzle 2 to temp,M140 S[bed0_temperature] ; Set bed to temp,M141 S[extruder2_temperature] ; Chamber heaters,,G28 ; Home all,M401,G0 Z10 F700 ; Bring up Z,M402,G1 X-55 Y-48 F12000,,G30 ;Probe bed single point and set offset of Z,M400,G29 ;Bed mesh probe,G1 Z25 F400 ;Lower bed while heating ,G1 X-185 Y-175 F12000 ;move head out of the way while heating,M400,,M109 T0 S[extruder0_temperature] ; Hold until nozzle 1 at temp,M109 T1 S[extruder1_temperature] ; Hold until nozzle 2 at temp,M190 S[bed0_temperature] ; Hold until bed at temp,,T0 ; First nozzle,G21 ; Metric values,G90 ; Absolute positioning,G92 E0 ; Set extruder to 0,,T1 ; First nozzle,G21 ; Metric values,G90 ; Absolute positioning,G92 E0 ; Set extruder to 0,,M106 P4 S[extruder3_temperature] ; Turn set chamber fan speed (speed depends on Filament),,G0 Z0.5 F900 ; Raise nozzle to .5mm over bed,,;M201 X600 Y600 Z100 E10000 ; Set acceleration,;M207 X5 ; Set Jerk,M400, ; layerChangeGcode, ; retractionGcode, ; toolChangeGcode, ; endingGcode,G28 Z,G28 X Y,M106 S0 ; Turn off cooling fan,M98 P"0/macros/Slow_cool.g" ;Slowly cools the bed and build chamber *comment for non PC or ABS parts,M104 S0 ; turn off extruder,M140 S0 ; turn off bed,M141 S0 ; Turn off chamber heater, ; exportFileFormat,gcode ; celebration,0 ; celebrationSong,Random Song ; postProcessing, ; defaultSpeed,2700 ; outlineUnderspeed,0.7 ; solidInfillUnderspeed,0.9 ; supportUnderspeed,0.9 ; rapidXYspeed,12000 ; rapidZspeed,1200 ; minBridgingArea,5 ; bridgingExtraInflation,1 ; bridgingExtrusionMultiplier,1.1 ; bridgingSpeedMultiplier,0.75 ; useFixedBridgingAngle,0 ; fixedBridgingAngle,0 ; applyBridgingToPerimeters,1 ; filamentDiameters,2.88|2.88|1.75|1.75|1.75|1.75 ; filamentPricesPerKg,46|46|46|46|46|46 ; filamentDensities,1.04|1.25|1.25|1.25|1.25|1.25 ; useMinPrintHeight,0 ; minPrintHeight,0 ; useMaxPrintHeight,0 ; maxPrintHeight,60.1 ; useDiaphragm,0 ; diaphragmLayerInterval,20 ; robustSlicing,1 ; mergeAllIntoSolid,0 ; onlyRetractWhenCrossingOutline,0 ; retractBetweenLayers,1 ; useRetractionMinTravel,1 ; retractionMinTravel,3 ; retractWhileWiping,1 ; onlyWipeOutlines,0 ; avoidCrossingOutline,0 ; maxMovementDetourFactor,5 ; toolChangeRetractionDistance,12 ; toolChangeExtraRestartDistance,-0.5 ; toolChangeRetractionSpeed,600 ; externalThinWallType,1 ; internalThinWallType,1 ; thinWallAllowedOverlapPercentage,25 ; singleExtrusionMinLength,3 ; singleExtrusionMinPrintingWidthPercentage,50 ; singleExtrusionMaxPrintingWidthPercentage,200 ; singleExtrusionEndpointExtension,0.2 ; horizontalSizeCompensation,0 G90 M82 M106 S0 M106 P4 S100 ;Turn on chamber circ fan M104 S0 T0 ; Set nozzle 1 to temp M104 S300 T1 ; Set nozzle 2 to temp M140 S120 ; Set bed to temp M141 S60 ; Chamber heaters G28 ; Home all M401 G0 Z10 F700 ; Bring up Z M402 G1 X-55 Y-48 F12000 G30 ;Probe bed single point and set offset of Z M400 G29 ;Bed mesh probe G1 Z25 F400 ;Lower bed while heating G1 X-185 Y-175 F12000 ;move head out of the way while heating M400 M109 T0 S0 ; Hold until nozzle 1 at temp M109 T1 S300 ; Hold until nozzle 2 at temp M190 S120 ; Hold until bed at temp T0 ; First nozzle G21 ; Metric values G90 ; Absolute positioning G92 E0 ; Set extruder to 0 T1 ; First nozzle G21 ; Metric values G90 ; Absolute positioning G92 E0 ; Set extruder to 0 M106 P4 S200 ; Turn set chamber fan speed (speed depends on Filament) G0 Z0.5 F900 ; Raise nozzle to .5mm over bed ;M201 X600 Y600 Z100 E10000 ; Set acceleration ;M207 X5 ; Set Jerk M400 ; process Process1 ; layer 1, Z = 0.300 T1 G92 E0.0000 G1 E-2.0000 F2400 ; feature skirt ; tool H0.300 W0.480 Just regular Gcode for the tool paths here that I removed ; layer end G28 Z G28 X Y M106 S0 ; Turn off cooling fan M98 P"0/macros/Slow_cool.g" ;Slowly cools the bed and build chamber *comment for non PC or ABS parts M104 S0 ; turn off extruder M140 S0 ; turn off bed M141 S0 ; Turn off chamber heater ; Build Summary ; Build time: 0 hours 41 minutes ; Filament length: 1726.4 mm (1.73 m) ; Plastic volume: 11246.52 mm^3 (11.25 cc) ; Plastic weight: 14.06 g (0.03 lb) ; Material cost: 0.65
Here is a sample file that I just printed.
-
I still haven't seen your homeall.
G28 ; Home all M401 G0 Z10 F700 ; Bring up Z M402 G1 X-55 Y-48 F12000 G30 ;Probe bed single point and set offset of Z
I don't know what's in your homeall, but it should be homing Z with the probe already, so you should remove everything after G28.
M401 G0 Z10 F700 ; Bring up Z M402
I'm not sure what that's trying to accomplish.
-
@Phaedrux no my home Z does not use the probe, nor does my home all. As you can see in my config.g I'm using a limit switch as the maximum Z for the home Z. The probe is only used for the bed mesh.
that is why I haven't posted it sooner is it has nothing to do with the probe.; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Fri Apr 24 2020 14:40:15 GMT-0600 (Central Standard Time) G91 ; relative positioning ;G1 H2 Z-10 F750 ; lift Z relative to current position G1 H1 Z585 F1000 ; move Z up until the endstop is triggered G1 H2 Z-5 F600 ; back off of limit for second pass G1 H1 Z8 F500 ; Second pass at limit switch G92 Z583.1 ; set Z position to axis maximum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z10 F100 ; lift Z relative to current position ;G90 ; absolute positioning
and home all
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Fri Apr 24 2020 14:40:15 GMT-0600 (Central Standard Time) G91 ; relative positioning G1 H1 Z2 F6000 ; lift Z relative to current position G1 H1 X-361 Y-355 F1800 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-361 ; home X axis G1 H1 Y-355 ; home Y axis G1 X5 Y5 F6000 ; go back a few mm G1 H1 X-361 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y-355 ; then move slowly to Y axis endstop G1 H1 Z585 F750 ; move Z up stopping at the endstop G90 ; absolute positioning G92 Z583.1 ; set Z position to axis maximum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z10 F100 ; lift Z relative to current position ;G90 ; absolute positioning
The issue is 100% repeatable so it is not the wiring. If I use the probe a few times or use the macro, before I print a file, the probe will not deploy. If I print a file, after the file is complete the probe will not deploy. And when I say deploy, I mean it won't respond to commands at all. After I reset the board either by hitting the emergency stop button or via power cycle, the BLTouch will respond. It is a very strange issue.
-
@baird1fa said in BLTouch does not deploy for a print:
It is a very strange issue.
Agreed. Are the BLtouch wires running next to anything else?
Can you connect the BLTouch directly to the board with it's short leads and see how it behaves then?
-
@baird1fa do you use the chamber heater, as there are settings for one in the config? BLTouch is sensible against heat if I remember well from another thread. I can't remember the exact temperature.
BLTouch uses Hall effect, so it will have a magnet also. Neodym magnets loose magnetism at 80°, so you must take care that you don't destroy it (I don't know whether they use neodym, there are ferrite magnets with resistence up to 200 °C)
M141 S60 is at the start of your g-code, maybe this already weakens the magnet enough so that BLTouch doesn't work as expected.
This highly technical paper https://www.kjmagnetics.com/blog.asp?p=temperature-and-neodymium-magnets tells that 60°C is still ok, but I think together with the bed heat of 120°C from below going up the total temperature for the BLTouch could be higher than 60°C. And the magnet gets weaker after some overheats. I just read that thin magnet's limit is 60°C. So it depends on the shape and type of the magnet with is built into the BLTouch, both unknown to me.
-
@JoergS5 yes I do have a heated chamber. It only operates up to 70 (65 really). That is something I’ve been concerned about weather the temperature would affect the sensor. I have had the same issue weather I use the heat or not. I don’t use the sensor when the changer is hot.
I think they use a ferrite core (the small setscrew on the top of the BLTouch is the core) so it should be good for reasonably high temps.
It is worth mentioning that I noticed this strange behavior of the BLTouch before I ever turned on the chamber heat.
-
Yes all of my wiring for the print head run in a bundle between the board and the print head. It’s about 1m-2m if cabling.
I could plug BLTouch into the board but I wouldn’t be able to have it mounted where it could touch the bed. It would work purely to see if there is interference.
The only issue with that thought is that it does work when I first start a print and all the PWMs are pulsing and causing the most EMF and potential for signal noise. But after a print, it no longer works and everything is off (all the fans and heaters set to 0).
It’s not an ideal solution but I suppose a workaround would be to reset the board after each print. I think there is a GCode for that.
Edit: I just looked up the Gcode for a firmware reset and Yes the M999 does reset the board, and then also allows the BLTouch to start working again. I just simulated the end of my gcode script by creating a macro that turns on all the fans, then turns off the fans and the heaters and then tries to deploy the probe. That seems to work fine.
I have noticed that if the print finishes or even if I cancel a print I need to reboot the board. I wonder if there is something in how the firmware handles the "cancel" or the "end of print" code that is causing me this issue. Is that something that I can actually investigate or is that locked away in the firmware?
-
M401 G0 Z10 F700 ; Bring up Z M402
I'm not sure what that's trying to accomplish.
This is just deploying the probe well before the bed gets to the print head so I know if it will deploy or not. The G0 Z10 is just a rapid move to bring up the bed because it’s a 22.75” or travel between home and the probe. Then the probe gets retracted, again just so I can see if it is going to work so I have time to hit the E-Stop.
If I can get this issue resolved the M401 and M402 will be removed. I’ll leave the Z10 in there.
-
@baird1fa One thing I found:
M950 S0 C"io4.out"
M558 P9 C"^io4.in" H3 F200 T12000
M280 P0 S160 I1In https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe#Section_BLTouch is mentioned: "On Duet 3 it is one of io4.out, io5.out or io7.out. If you use one of these pin names, you will not need to invert the output."
So you don't need the I1.
I think you will not need the ^ also. -
@JoergS5 I read that too, but the commands don’t work with out the I1. Also the ^ is for the pull-up resistor on the input isn’t it?
-
@baird1fa The sentence "The Z probe input pin will be zprobe.in on a Duet 2, or one of io4.in, io5.in or io7.in on a Duet 3. If using zprobe.in, you need to enable the pullup resistor using the ^ character in front of the pin name." seem to say, that only for zprobe.in the ^must be set.
It's strange that you need the I1 when in the documentation is explicitly said it is not needed for io4.out. There seems to be something wrong.
Could you try changing both at the same time, does the BLtouch still work then?
-
@baird1fa I looked: according to https://duet3d.dozuki.com/Wiki/Connecting_endstop_switches#Section_Duet_3_endstop_inputs each IO of Duet 3 has already pullup resistors: "Endstop devices can be connected to the IO_0 through IO_9 connectors. Each endstop input has a 27K pullup resistor, so the endstop devices only need to sink 0.12mA." so there should not be a necessity to set the ^
-
@JoergS5 that makes me wonder if I wired something wrong but there is only one pin for in and one for out. And if I was on the wrong pin it shouldn’t work at all.