Spurious Board Resets on Mini Wifi
-
Hello! I've been having an issue with my Duet Wifi randomly resetting itself during a print, and I'm not too sure why. There's no pattern in terms of when it happens during a print, and M122 reports that the cause was "reset button". AFAIK, nothing could be knocking into the button or otherwise shorting the pins. However, I made a couple upgrades recently and I suspect it's due to any number of these things. In brief:
- Updated my firmware from 3.3.10 to 3.4.5
- Installed a V2.0 rotating magnet filament sensor and configured M591 using actual L and R values
- Changed the motor on my Berd Air system to a 24V BLDC motor, driven directly from the mainboard as a 4-pin fan (from the LASER 5V buffered pin for the PWM, with a pullup resistor)
- Changed hotend from a DyzEnd X to a Revo Six
Occasionally I get seemingly spurious filament errors from the rotary sensor, even after calibration: I assumed it was due to changing the nozzle a lot more than I did before (the Revo is smashing in that regard), but could errors from the filament sensor somehow be resetting the board?
I also supply my 5V from a separate 3A PSU; I haven't tested the 5V draw, but would sagging 5V cause this fault? Between the pullup resistor for the BLDC motor PWM, the filament monitor, and the pre-existing BLTouch, there's a fair bit of low voltage power pumping through the system now.
I copied my config.g below for reference, but let me know your thoughts. Thanks in advance!
; Configuration file for Duet 3 Mini 5+ (firmware version 3.4) ; executed by the firmware on start-up ; ; Originally generated by RepRapFirmware Configuration Tool v3.3.5 on Thu Oct 28 2021 12:03:21 GMT-0400 (Eastern Daylight Time) ; Last updated Dec 23, 2022 ; Index of OUT/IO used: ; OUT_0: Heated bed (screw terminals, fixed) ; OUT_1: Hotend heater ; OUT_2: (unused) ; OUT_3 [VIN/24V jumper]: Print cooling fan; 24V, GND, and TACH directly connected from BLDC motor for Berd system ; OUT_4 [VIN/24V jumper]: Stock 24V Revo 30 mm cooling fan (2-wire fan) ; OUT_5: (unused) ; OUT_6: Occupied (out6 is tied to the 5V PWM buffered output) ; LASER/VFD: PWM signal to out6.buff, 5V to an external 10K pullup connected to the PWM from BLDC motor for Berd system ; IO_0: X axis endstop (no reason for it to be here, any IO would suffice) ; IO_1: (unused) --> Known bug that IO_1 should not be used for servos or BLTouch ; IO_2: BLTouch ; IO_3: Y axis endstop (no reason for it to be here, any IO would suffice) + Occupied io3.out (used for 12864 connection) ; IO_4: Occupied (io4.out tied to pson pin) ; IO_5: Rotating Magnet Filament Sensor ; IO_6: (unused) ; Note: IO_0 through IO_4 are 5-pin headers with +5V, ioX.out, GND, ioX.in, and +3.3V pins. IO_5 and IO_6 are 3-pin headers with ioX.in, GND, and +3.3V pins. ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Rosalind" ; set printer name M918 P2 E-4 F2000000 ; configure direct-connect display M150 X2 R255 U100 B100 P100 ; Initialize color of the screen M150 X1 R64 U128 B64 S7 ; Initialize color of the screen M81 C"pson" ; Initialize the ATX control pin (mirrored with io4.out) ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S1 D3 ; physical drive 0.0 goes forwards, stealthChop mode M569 P0.1 S1 D3 ; physical drive 0.1 goes forwards, stealthChop mode M569 P0.2 S1 D3 ; physical drive 0.2 goes forwards, stealthChop mode M569 P0.3 S1 D3 ; physical drive 0.3 goes forwards, stealthChop mode M569 P0.4 S1 D3 ; physical drive 0.4 goes forwards, stealthChop mode M584 X0.0 Y0.1 Z0.2:0.4 E0.3 ; set drive mapping M671 X-52:290 Y0:0 S4.0 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z400.00 E666.54 ; set steps per mm, starting E steps/mm = 690, tested 10 > 10.352 M566 X900.00 Y900.00 Z60.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E3600.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E600.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z250 E500 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X230 Y205 Z200 S0 ; set axis maxima ; Endstops M574 X1 S1 P"!io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin !io0.in M574 Y1 S1 P"^io3.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ^io1.in M574 Z0 ; disable Z-probe endstop (probe being used for Z homing) ; Z-Probe M950 S0 C"io2.out" ; create servo pin 0 for BLTouch M558 P9 C"io2.in" H5 A3 F120 R0.2 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P25 X0 Y20 Z2.743 ; set Z probe trigger value, offset and trigger height, trigger height variance 2.540 to 2.547 M557 X10:220 Y20:200 S30 ; define mesh grid M376 H10 ; Bed compensation taper ; Filament Sensor M591 D0 P3 C"io5.in" S1 L26.04 R85:115 ; rotating magnet filament monitor connected to IO_5, calibration TBD ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B0 R0.314 C414.3 D10.40 S1.00 ; Autotuned M303 H0 S90 for MK52 bed + steel sheet M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.060000e-8 ; Default Revo Six config (Semitec 104-GT2) M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 R4.378 C165.3 D1.78 S1.00 V24.1 ; Autotuned for stock Revo Hotend M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"out6+out3.tach" Q25000 ; 4-wire fan connected to 5V PWM line out6.buff with power from out3 connector M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out4" Q25000 ; create fan 1 on pin out4 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; 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 M572 D0 S0.05 ; Miscellaneous T0 ; select first tool
-
@DechAmim-0 please post a M122 report taken after one of these random resets.
-
@dc42 Certainly, the full M122 is below. I should also note that I've tried selectively taking out things like the monitor and fan (including removing them from config) but the problem has persisted.
=== Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.4.5 (2022-11-30 19:41:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: M09F8-Z396U-D65J0-40KMW-NG03Z-RJSH5 Used output buffers: 1 of 40 (36 max) === RTOS === Static ram: 103652 Dynamic ram: 117432 of which 0 recycled Never used RAM 20628, free system stack 204 words Tasks: NETWORK(notifyWait,11.0%,261) HEAT(notifyWait,0.0%,358) Move(notifyWait,0.0%,363) CanReceiv(notifyWait,0.0%,942) CanSender(notifyWait,0.0%,336) CanClock(delaying,0.0%,341) TMC(notifyWait,0.1%,115) MAIN(running,85.7%,425) IDLE(ready,2.3%,30) AIN(delaying,0.8%,263), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:00:12 ago, cause: reset button Last software reset at 2022-12-31 19:31, reason: User, GCodes spinning, available RAM 16932, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU revision 3, ADC conversions started 12950, completed 12949, timed out 0, errs 0 Step timer max interval 1488 MCU temperature: min 38.3, current 39.0, max 39.2 Supply voltage: min 1.0, current 1.0, max 24.3, under voltage events: 1, over voltage events: 0, power good: no Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 2, read errors 0, write errors 1, ifcnt 23, reads 85, writes 11, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 0, write errors 1, ifcnt 23, reads 85, writes 11, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 1, ifcnt 23, reads 85, writes 11, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 2, read errors 0, write errors 1, ifcnt 22, reads 85, writes 10, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 23, reads 85, writes 11, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2022-12-31 20:17:47 Cache data hit count 23710643 Slowest loop: 4.65ms; fastest: 0.13ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 3.4ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle 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: pos 81.91, errs: frame 0 parity 0 ovrun 0 pol 0 ovdue 0 === CAN === Messages queued 114, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 18 (min 18), ts 64/0/0 Tx timeouts 0,0,63,0,0,49 last cancelled message type 4514 dest 127 === Network === Slowest loop: 22.21ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = WiFi = Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.27 WiFi MAC address f0:08:d1:02:e9:24 WiFi Vcc 3.38, reset reason Power up WiFi flash size 2097152, free heap 26832 WiFi IP address 192.168.1.4 WiFi signal strength -61dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
-
@DechAmim-0 said in Spurious Board Resets on Mini Wifi:
Last reset 00:00:12 ago, cause: reset button
Did you push the reset button?
Is there a wire that could be pressing on the reset button?
-
@alankilian Nope, never touched the button on the mainboard nor the 12864 display, and there's nothing that could be bumping into either one during motion. Likewise, I can't really see anything that could be shorting out either connection (no stray uninsulated wires or metallic crud)
-
@DechAmim-0 please can you inspect the board in the region of the reset button and check that resistor R47 is present and both ends are soldered. Here is an image showing that region of the PCB design:
R47 is the other side of the small 6-pin connector from the reset button.
If you have a multimeter, you could also try measuring the voltage across pins 1 and 4 (or 2 and 3) of the reset button. It should be 3.3V.
-
@dc42 Sorry for the late reply, back to work started with a bang! R47 appears to be OK from what I can see, but I think I squashed the issue somehow: I rerouted a bunch of wires when upgrading toolhead, which placed the hotend heater cartridge lines and NEMA14 motor wires much closer to the bottom edge of the PCB. I moved these wires back to their original position (at the side of the PCB), and after several prints, the problem seems to have gone away. Maybe the EMI was intense enough to rattle the reset connection?
Either way, thanks again for your help!!
-
@DechAmim-0 the cable to the 12864 display carries the Reset signal, so close proximity of that cable to a stepper motor cable might perhaps cause a reset because of capacitive coupling.