3.3RC1 Duet2 SBC Problems with Bltouch
-
Hey
i have recently upgraded to Duet 2 wifi running in SBC mode (Raspberry Pi 3b, duetPi lite). and I'm slowly wokring my way through a few issues but atm i am having quite a lot of problems with my BlTouch.
it deploys and retracts with M401 and M402 and also worked perfectly before with out any problems .
but after the upgrade the printer hangs when it has to deploy and it hangs when it triggers before then retracting the probe, and sometimes during probing it will then fail and give a "probe already triggered before probing move started"it seems to happen mostly when running a G29, but also sometimes happens with a G30, that i use to level the x axis, how not observed it when homing z.
my config.g
; Configuration file for Duet WiFi (firmware version 1.21) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2 on Tue Mar 05 2019 15:58:37 GMT+0100 (Centraleuropæisk normaltid) ;3dprint counter M950 S4 C"duex.pwm2" ;heater 7 as servo pin 4 M42 P4 S0 ; servo pin4 set to low ; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Network M550 P"P3sbc" ; Set machine name M551 P"iasdf" ; Set password ;M552 S1 ; Enable network ;M586 P0 S1 ; Enable HTTP ;586 P1 S0 ; Disable FTP ;586 P2 S0 ; Disable Telnet ; Drives M584 X0 Y8 E1 V3 W7 U9 Z2:4 ; two Z motors connected to driver outputs Z and E1 M569 P0 S1 ; Drive 0 goes forwards M569 P1 S0 ; Drive 1 goes forwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S1 ; Drive 3 goes forwards M569 P4 S1 ; Drive 4 goes forwards M569 P8 S0 ; Drive 8 goes backwards V M569 P9 S0 ; Drive 9 goes forwards U M569 P7 S1 ; Drive 7 goes forwards W M350 X16 Y16 V16 U16 W16 Z16 E16 I1 ; Configure microstepping without interpolation ; Configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E409.0 U400 V162 W26 ; Set steps per mm M566 X300.00 Y300.00 Z36.00 E240.00 U200 V3600 W300 ; Set maximum instantaneous speed changes (mm/min) M203 X12000.00 Y12000.00 Z1200.00 E7200.00 U2600 V7000 W9000 ; Set maximum speeds (mm/min) M201 X1300.00 Y1300.00 Z120.00 E3000.00 U500 V900 W900 ; Set accelerations (mm/s^2) M906 X1500.00 Y1500.00 Z800.00 E1250.00 U750 V1000 W750 I30 ; Set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ;Duel z compensation M671 X-55:296 Y0:0 S5 ; leadscrews at left (connected to Z) and right ; Axis Limits M208 X-8 Y-5 Z0 U0 V-1000 W0 S1 ; Set axis minima M208 X237 Y215 Z200 U75 V1000 W78 S0 ; Set axis maxima ; Stall detection M915 X Y U V W S20 R0 F1 ; Endstops M574 X1 Y1 S3 ; Set endstops controlled by motor load detection M574 U2 W1 S3 M574 Z1 S2 ; Set endstops controlled by probe M574 V1 P"e0stop" S1 ;Filament sensor M591 D0 P1 C"xstop" S0 ;led setup M950 P2 C"e1heat" Q500 M42 P2 I1 S1 ; set lighting on full bright ; Z-Probe M950 S0 C"duex.pwm1" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H10 F320 T9000 ; Set Z probe type to bltouch and the dive height + speeds G31 P900 X-14.65 Y19,29 Z3.24 ; Set Z probe trigger value, offset and trigger height M557 X20:222 Y15:215 S30 ; Define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 A"Bed" ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 A109.9 C411.9 D9.6 V11.7 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"spi.cs1" Y"rtd-max31865" A"Hotend" ; create sensor number 1 as a PT100 sensor in the first position on the Duet 2 daughter board connector M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 A354.8 C196.4 D4.3 V12 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S400 ; Set temperature limit for heater 1 to 400C M308 S2 Y"drivers" A"Drivers" ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 C"Part Cooler" ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 C"Heatsink Cooler" ; set fan 1 value. Thermostatic control is turned on ;Tools M563 P0 D0 H1 ; Define tool 0 G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C M563 P1 D0 H1 ; Define tool 1 G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C M563 P2 D0 H1 ; Define tool 2 G10 P2 X0 Y0 Z0 ; Set tool 2 axis offsets G10 P2 R0 S0 ; Set initial tool 2 active and standby temperatures to 0C M563 P3 D0 H1 ; Define tool 3 G10 P3 X0 Y0 Z0 ; Set tool 3 axis offsets G10 P3 R0 S0 ; Set initial tool 3 active and standby temperatures to 0C M563 P4 D0 H1 ; Define tool 4 G10 P4 X0 Y0 Z0 ; Set tool 4 axis offsets G10 P4 R0 S0 ; Set initial tool 4 active and standby temperatures to 0C ;LCD screen setup M575 P1 S1 B57600 ;Global varibels global purgeLoc = 0 ;retraction setup ;M207 P0 S0.8 F3000 Z0.2 ;basic Retraction setup ; Automatic saving after power loss is not enabled ; M911 S10.7 R22 P"M913 X0 Y0 G91 M83 G1 Z3 E-1 F1000" ; Custom settings are not configured T-1 P0
also an M122
M122 === Diagnostics === RepRapFirmware for Duet 2 SBC version 3.3RC1 (2021-05-01 09:58:40) running on Duet 2 1.02 or later + SBC + DueX5 (SBC mode) Board ID: 08DGM-9T6BU-FG3S8-6J1DJ-3SN6M-1SLBG Used output buffers: 1 of 24 (24 max) === RTOS === Static ram: 17420 Dynamic ram: 63480 of which 0 recycled Never used RAM 30660, free system stack 104 words Tasks: SBC(resourceWait:,57.5%,297) HEAT(delaying,0.5%,331) Move(notifyWait,2.3%,305) DUEX(notifyWait,0.0%,24) MAIN(running,39.7%,374) IDLE(ready,0.1%,30), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 01:23:27 ago, cause: power up Last software reset at 2021-05-08 17:13, reason: User, none spinning, available RAM 30660, slot 0 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x04 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 44.9, current 49.4, max 50.4 Supply voltage: min 11.4, current 11.6, max 12.2, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/140/128, gc cycles 0 Driver 0: position 9723, ok, SG min/max 0/1023 Driver 1: position 8541, ok, SG min/max 0/1023 Driver 2: position 1760, standstill, SG min/max 57/344 Driver 3: position 400, standstill, SG min/max 0/1023 Driver 4: position 1620, standstill, SG min/max 0/333 Driver 5: position 2028, standstill, SG min/max not available Driver 6: position 0, standstill, SG min/max not available Driver 7: position 0, standstill, SG min/max 0/846 Driver 8: position 0, ok, SG min/max 0/1023 Driver 9: position 0, standstill, SG min/max 0/1023 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-05-08 18:43:13 Cache data hit count 4294967295 Slowest loop: 735.06ms; fastest: 0.10ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Move === DMs created 83, maxWait 535188ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 6335, completed moves 6320, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 1], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.5 Heater 1 is on, I-accum = 0.7 === GCodes === Segments left: 1 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is doing "G1 X123.866997 Y100.974998 F7800.000000" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue* is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Filament sensors === Extruder 0 sensor: no filament === DueX === Read count 1, 0.01 reads/min === SBC interface === State: 4, failed transfers: 0 Last transfer: 5ms ago RX/TX seq numbers: 49622/49622 SPI underruns 0, overruns 0 Number of disconnects: 0, IAP RAM available 0x0d08c Buffer RX/TX: 976/2432-0 === Duet Control Server === Duet Control Server v3.3-rc1 File: Buffered code: G1 X123.867 Y100.975 F7800.000 Buffered code: G1 F900.000 Buffered code: G1 X113.132 Y100.975 E0.32706 Buffered code: G1 X113.132 Y97.539 E0.10467 Buffered code: G1 X123.867 Y97.539 E0.32706 Buffered code: G1 X123.867 Y100.915 E0.10284 Buffered code: G1 X124.275 Y101.382 F7800.000 Buffered code: G1 F900.000 Buffered code: G1 X112.725 Y101.382 E0.35186 Buffered code: G1 X112.725 Y97.132 E0.12947 Buffered code: G1 X124.275 Y97.132 E0.35186 Buffered code: G1 X124.275 Y101.322 E0.12764 Buffered code: G1 X123.877 Y101.335 F7800.000 Buffered code: G1 X114.487 Y98.068 Buffered code: G1 F2100.000 Buffered code: G1 X113.844 Y98.711 E0.02781 Buffered code: G1 X113.844 Y99.289 E0.01767 Buffered code: G1 X114.882 Y98.252 E0.04488 Buffered code: G1 X115.460 Y98.252 E0.01767 Buffered code: G1 X113.844 Y99.867 E0.06987 Buffered code: G1 X113.844 Y100.263 E0.01210 Buffered code: G1 X114.026 Y100.263 E0.00558 Buffered code: G1 X116.037 Y98.252 E0.08698 Buffered code: G1 X116.615 Y98.252 E0.01767 Buffered code: G1 X114.604 Y100.263 E0.08698 Buffered code: G1 X115.182 Y100.263 E0.01767 Buffered code: G1 X117.193 Y98.252 E0.08698 Buffered code: G1 X117.771 Y98.252 E0.01767 Buffered code: G1 X115.760 Y100.263 E0.08698 Buffered code: G1 X116.338 Y100.263 E0.01767 Buffered code: G1 X118.349 Y98.252 E0.08698 Buffered code: G1 X118.927 Y98.252 E0.01767 ==> 1480 bytes Code buffer space: 1664 Configured SPI speed: 8000000 Hz Full transfers per second: 35.70 Codes per second: 6.35 Maximum length of RX/TX data transfers: 3808/1580 File /opt/dsf/sd/gcodes/s-buffer-spacer.gcode is selected, processing
-
so i made a quick video that shows, a z home, x-axis level, and a G29 that shows they way it hangs at times
it also ends failing the G29
https://www.youtube.com/watch?v=p5xrNgZ7IoQthe error the paneldue show, i have not seen before as i so far have only seen DWC in a browser that shows, ""probe already triggered before probing move started""
-
@lahn92 said in 3.3RC1 Duet2 SBC Problems with Bltouch:
G31 P900 X-14.65 Y19,29 Z3.24 ; Set Z probe trigger value, offset and trigger height
Not sure if it matters but it looks like you're using a comma instead of a period in
Y19,29
You can send G31 by itself in the console to see what it has interpreted the value as.
Also, for the BLtouch try G31 P25. And your dive height is a bit high. Try M558 H5. And dive speed a bit fast. Try M558 F120.
-
@phaedrux
my dive hight and speed was normally what you sugested but changed it trying to diagnose the problem.but i have changed it back now to test
also changed the G31
; Z-Probe M950 S0 C"duex.pwm1" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F120 T9000 ; Set Z probe type to bltouch and the dive height + speeds G31 P25 X-14.65 Y19.29 Z3.24 ; Set Z probe trigger value, offset and trigger height M557 X20:222 Y15:215 S30 ; Define mesh grid
it homed z fine, ran G29 2 times and both times it failed within the first 5 probes
Edit: just had it happen on a z-axis home
M122 from right after
M122 === Diagnostics === RepRapFirmware for Duet 2 SBC version 3.3RC1 (2021-05-01 09:58:40) running on Duet 2 1.02 or later + SBC + DueX5 (SBC mode) Board ID: 08DGM-9T6BU-FG3S8-6J1DJ-3SN6M-1SLBG Used output buffers: 1 of 24 (23 max) === RTOS === Static ram: 17420 Dynamic ram: 63144 of which 0 recycled Never used RAM 30996, free system stack 126 words Tasks: SBC(ready,13.4%,291) HEAT(delaying,0.1%,331) Move(notifyWait,0.2%,305) DUEX(notifyWait,0.0%,24) MAIN(running,86.3%,479) IDLE(ready,0.0%,30), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 02:04:30 ago, cause: power up Last software reset at 2021-05-09 07:30, reason: User, none spinning, available RAM 30788, slot 1 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 31.8, current 38.1, max 38.6 Supply voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/24/12, gc cycles 0 Driver 0: position 9600, standstill, SG min/max 0/301 Driver 1: position 8800, standstill, SG min/max not available Driver 2: position 3296, standstill, SG min/max 65/299 Driver 3: position 0, standstill, SG min/max not available Driver 4: position 0, standstill, SG min/max 0/293 Driver 5: position 0, standstill, SG min/max not available Driver 6: position 0, standstill, SG min/max not available Driver 7: position 0, standstill, SG min/max not available Driver 8: position 0, standstill, SG min/max 0/634 Driver 9: position 0, standstill, SG min/max not available Driver 10: position 0 Driver 11: position 0 Date/time: 2021-05-09 09:40:37 Cache data hit count 4294967295 Slowest loop: 784.16ms; fastest: 0.09ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Move === DMs created 83, maxWait 7403072ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 6, completed moves 6, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Filament sensors === Extruder 0 sensor: no filament === DueX === Read count 1, 0.01 reads/min === SBC interface === State: 4, failed transfers: 0 Last transfer: 4ms ago RX/TX seq numbers: 61060/61060 SPI underruns 0, overruns 0 Number of disconnects: 0, IAP RAM available 0x0d08c Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.3-rc1 Daemon: Finishing macro daemon.g, started by system > Next stack level Code buffer space: 4096 Configured SPI speed: 8000000 Hz Full transfers per second: 34.10 Codes per second: 0.12 Maximum length of RX/TX data transfers: 3632/700
-
I have the exact same problem and for the life of me I can't figure it out.
I'm running a Duet 3 Mini 5+ in SBC mode. Also have the BLTouch connected to a Toolboard 1LC.
I've checked the wiring and everything and it all seems fine. Diving faster seems to help a little bit but doesn't solve the problem.
From what I can tell it's the combination of 2 factors that causes the problem to happen:
-
The BLTouch will go into error mode of it sits triggered for too long. Something like more than 750ms or around there. As far as I can tell this behaviour is intended.
-
At least with my setup, when probing and the BLTouch is triggered there seems to be a random amount of time before the printer reacts to the trigger. Sometimes it's almost right away and sometimes it's a little bit of a pause.
When the printer pauses long enough after a probe trigger, the delay causes the probe to go into error mode.
I don't have any idea how to fix it but this is at least my working theory so far. It's possible it may have something to do with SBC mode. Our printers both have that in common. Maybe the presence of the SBC/Pi introduces a slight delay in between commands and/or reactions.
@dc42 should be able to tell us if a delay does exist in SBC mode and if, per my theory, that could pose a problem for the BLTouch in some specific setups.
-
-
@nmsmith89
interresting, i was thinking it was something more to do with it being duet 2 and sbc -
@nmsmith89 In your case I think this is a known limitation in RRF3.
Endstop switches and Z probes connected to the main board cannot control motors on an expansion board. This is planned to be fixed in release 3.4.
If you use a Z probe then the Z motors must be connected to the main board. This is planned to be fixed in release 3.4.https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations
@lahn92 you're using a Duet2 modded to use the SBC connector, so I'm not sure how that limitation would affect you if at all. Will check.
-
@phaedrux
so tried removing my PT100 sensor and paneldue from my config to see if that was making somekind of problem.
it did not help.busy grasping at straws here
-
@lahn92 and @nmsmith89, the only reason I can think of why the Z probe triggering might be detected late is if either the BLTouch has a lot of leakage when it is triggered, or there is a lot of interference picked up by the BLTouch output wire (e.g. from an adjacent stepper motor cable); and the internal pullup resistor on the zprobe.in pin isn't sufficient to counter the interference or leakage.
Here are two possible solutions:
-
If your Duet 2 is version 1.04 then you can send a command to the BLTouch to pull the output to 5V when triggered, instead of relying on the pullup resistor.
-
You could connect an external pullup resistor between Z probe in and +3.3V pins. I suggest a value between 2.2K and 10K.
The limitation referred by @Phaedrux only applies to CAN-connected expansion boards.
-
-
any instructions on doing number 1. as i at the moment i dont have a resistor handy?
edit:
is it this
-
@lahn92 yes it's that. The Duet 2 1.04 and later can tolerate 5V input from the BLTouch.
-
@dc42 Tried it, it did not change anything.
but i think the problem lies in deployment and retraction of the probe
because if io do a repeatability test with the following code it does not hang anywhere. as it does not deploy and retract the probe between touch off.
M291 P"Probe will be tested 10 times and return mean and standard deviation. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel. M401 G28 Z G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P0 X100 Y101 Z-9999 G30 P9 X100 Y101 Z-9999 S-1 M402
is there maybe a way to get it to not retract and deploy the probe between each point in a G29, as a quick fix solution?
-
@lahn92 said in 3.3RC1 Duet2 SBC Problems with Bltouch:
is there maybe a way to get it to not retract and deploy the probe between each point in a G29, as a quick fix solution?
Yes, if you use P8 instead of P9 in the M558 command then it will do that. But that may fail, because after triggering the probe will extend immediately again; and if the Z axis is not fast enough then it may trigger immediately and go into the error state.
-
@dc42 Will try that tomorrow
-
so i have tried two things today.
first i tried running with the probe set as P8 and this seems to work just fin.
videothen i tried to switch out my current BlTouch 3.1 to an older 2.2 running as a P9.
this BlTouch does not have the same issue as the 3.1 but instead does a double bounce on retraction.
videowith both it does not seem to error out the Bltouch, but the 3.1 still seems to experience the hang up when deploying and retracting.
-
@lahn92 please update to release 3.3RC2 from the package server.
-
@dc42
tried updating, and after that i also tried reinstalling duetpi-lite.
both have not changed my problem -
And confirmed that RC2 was actually flashed to the duet?
-
Yup
M115 FIRMWARE_NAME: RepRapFirmware for Duet 2 SBC FIRMWARE_VERSION: 3.3RC2 ELECTRONICS: Duet 2 1.02 or later + SBC + DueX5 FIRMWARE_DATE: 2021-05-11 14:55:15
-
Thanks, just wanted to make sure.