Problem with PWM fans Duet 2 Wifi
I've been running a Duet 2 wifi for a few years in a build of the Kossel XXL DC42 build from the blog, pretty much exactly to the same specs laid out there. Very straightforward Kossel build.
This evening I noticed my PWM print fan was on even when It should be off. Spinning at a lower than normal rate but not off. This had been working previously without any hardware or software changes. So I tested the voltage coming out at the pins on the smart effector. Under load with the fan it was putting out 12vDC, with the fan disconnected, it's putting out 24v DC. This is a 40x40x10 2 pin blower fan off Amazon with the following specs. "Rated Voltage: DC 24V; Rated Current: 0.05Amp; Rated Speed: 9500 RPM"
I tested the fan 0 pins on the board and it is putting out 24v there as well when the print fan should be off, and behaves the same way there as it does passing through the smart effector. My fan config from my gcode is as follows.
M950 F0 C"fan0" Q500
M106 P0 S0 H-1
I decided to test mapping it to the fan 1 output as follows. But got the exact same results, fan spins slowly all the time and measures 12v at the pins. 24v is always present without load. (also I tried switching the jumper to 5v, there was a constant 5v output on the pins even with pwm 0)
M950 F0 C"fan1" Q500
M106 P0 S0 H-1
Is something fried on my board? As a note, the always on fans are working 100%, the fan 0 pwm pin is now only outputting 22V (3.8V when on the 5v supply)
o_lampe last edited by
Sounds like a dying FET. Or the fan connector get's some 'creeping current' from a halfway short to GND.
I tried eliminating everything except power in, and the single PWM fan. Still the same results.
Is there anything I can test, or components I can replace on the board short of just scrapping it and trying another?
GeneRisi last edited by
@o_lampe the FET switches the negative side of the fan between non conducting and conducting to ground. So, if fan voltage is measured between the v_in pad and ground with a DVM, itvwill read as full voltage all of the time.
Am I missing something ?
Ok, but its still stuck on and won't shut off on any of the 3 fan headers.
I did try other fans with the same results. It does ramp up when setting to 100% fan, so it's partially working in that respect, but at fan speed 0 it is still putting out 12v and spinning the fan.
Now it's not spinning the PWM fans at all or putting out any voltage on any PWM header. since I plugged everything back into the board and buttoned it back up. Always on fans still work as does everything else.
There's a brief blip of life on the print fan at boot then it shuts off and voltage measures 0.8ish on the pin. This is on every PWM header. No change when setting the fan to 100.
Can you get a photo of the fan mosfets or inspect them and see if they look damaged?
Compare to the image here: https://duet3d.dozuki.com/Wiki/Connector_and_spare_part_numbers#Section_Fan_mosfet
@phaedrux I found another thread about it, and yes, the mosfet for fan 0 appears damaged (and that one was the one that drooped to 22V compared to the others. However the others look normal.
Still there is no output from any of them. I was able to find the replacement mosfets on digikey and I can probably wrangle them on there with a soldering iron to try. However I am concerned as to what the cause may be. I'm not using anything wild for fan load, just a teensy blower print fan and a 40mm bladed fan for the hot end fan.
And the way they all failed in concert concerns me. Is there some other component besides them that could account for that?
Am I not mapping my fan right to the other pins with the following settings by changing C"fanX"?
M950 F0 C"fan1" Q500
M106 P0 S0 H-1
The damage isn't always visible. Was there possibly a short in wiring for the fans?
@phaedrux Not really, I did recently mount the blower fan and change out the stock e3d 30mm to a 40mm, but that was like a month ago and its been working fine and I had no indications of problems or shorting when I did that, It's really just putting the connector on and plugging it into the smart effector, which was detached from the machine while I was working on it.
I did complete an upgrade to 3.22 about 2 weeks ago because I was still running 2.01 I think it was. But I just started from scratch with the rep rap firmware configuration tool since I was so out of date and that went pretty smoothly. The only hiccup was during the upgrade I used the stock probe speed and forgot to punch in my old setting, which is not enough to trigger the smart effector, it and it did slam the bed causing me to have to emergency stop, so that's the only thing I could think of which could be damage inducing, but I can't see how that would damage the fan fets.
There is one weird event that happened I just thought of. I had my magball arms off when I was changing a bearing in the top corner. When I took them off I put them on backward it seems, and the magnetic field from them caused the 30mm hotend fan to stop spinning twice. I thought it was the fan, so I changed it, then when it happened again I researched it more and found a thread about the magnetic field, checked all the arms and the problem went away. Unless that interference from the magball ends damaged the fets.
o_lampe last edited by
@o_lampe I can't really confirm that the PWM fan stopped from that field. I didn't look at it, but what did happen was my always on hotend fan which is not connected to a PWM header at all stopped and the nozzle clogged from heat creep. I didn't really check the print fan, but I suppose it could have stopped or been slowed down as well.
I found another thread about the subject that outlined three possibilities, 1: dead fan, 2: dead fets, 3: dead gpio. What does option 3 refer to here?
I ordered a pack of mosfets to try, sadly the same ones as the higher current more robust ones are all sold out everywhere I look, and I do have an older Duet Wifi 1.0 from my old printer around that I suppose I can swap in the meantime.
So in further weird turns, I put the 1.0 board I had lying around in. Updated it to 3.2.2, uploaded my config.g, started it up with just one of the 40mm blower fans on header PWM 0, and the board cooling fan which is another 40mm bladed fan just like the hotend fan on always on header 1.
Same behavior... The PWM fan is spinning very slow but will not shut off. I unplugged all other fans and put the 40mm bladed fan on the PWM header. It spins very slightly for a second then stops and makes a high pitched whining sound. It works on the always on header.
I didn't leave it long and shut it down because I have no idea at this point wtf is even going on and didn't want to blow up this board.
I've now tested it right down to using a different power supply and just a fan, with a 12v Corsair PC PSU, and a 40mm new out of the box 12v noctua fan.
I get the same behavior on 3.2.2, the fan will not stop completely on pwm. So, I erased the chip and downgraded completely to 2.01 which I was still running about a month ago before I upgraded, put on my old backed up config, and the PWM fan works normally...
No Idea what I'm doing wrong with 3.2.2 or what could be causing this.
I get the same behavior on 3.2.2, the fan will not stop completely on pwm.
One possible reason is that the fan is set to thermostatic control. When a thermostatic fan is supposed to be on, RRF forces a minimum of 50% PWM even if the S parameter in the most recent M106 command for that fan is lower.
It should be off.
M106 P0 S0 H-1
After erasing and reverting to 2.01, I decided to try 2.02 which also worked. Then I thought I'd try 3.0, it worked, 3.2, worked. And again went back up to 3.2.2 and it's still working now.
I have no idea what was causing it, I did revert to complete basics, wipe the /sys/ folder and put in just the downloaded *.g files from the reprap firmware tool. The strange thing is I didn't change my config prior to the fan issue, and 3.2.2 was initially working for me before this behavior started.
The only real difference is I did not copy the configoverride.g file back with my pid tunes and probe data, but it doesn't have anything in it that should affect the fan. It seems to be a combination of things since I definitely have a dead fet if not all fets dead on the 1.04 board, but something seemingly config related would appear to have been causing the fan not turning all the way off thing.
Gremlins at this point, I don't know.
@dc42 After reassembling my machine I moved on to looking at the 1.04 board. I followed the same procedure, erased the chip, flashed 2.01. Flashed it up to 3.2.2, put the original configs from the rep rap firmware tool on. PWM headers 1 and 2 now work normally. The fet shows clear damage on 0.
In further looking over the board I found the main ground pin on the big green connecter to be a cold solder joint which had snapped free and was moving around. I'm not sure if that could have caused damage to fet 0 or not.
As to the original problem of them not shutting off, and fan1/2 stopping to work at all, I have no Ideas really. Everything was working in the first place. The only changes issued were M500 commands to save probe and pid tune data.
Possibly a config issue. But we haven't seen the old configs ye. Post them and maybe we can see why it didn't work then.
@phaedrux It did work, that's the thing, and stopped working without a change.
The config I downloaded from the non working board Is honestly the same as what I'm using now. I changed very few values from what came out of the rep rap firmware tool. Really just probe height offset, speed, and the max temp.
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sat Mar 27 2021 18:14:03 GMT-0600 (Mountain Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Lemurmatic10000" ; set printer name M665 R180 L360.24 B150 H481.97 ; Set delta radius, diagonal rod length, printable radius and homed height M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X200.00 Y200.00 Z200.00 E822.00 ; set steps per mm M566 X1200.00 Y1200.00 Z1200.00 E1200.00 ; set maximum instantaneous speed changes (mm/min) M203 X18000.00 Y18000.00 Z18000.00 E1200.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z1000.00 E1000.00 ; set accelerations (mm/s^2) M906 X1400 Y1400 Z1400 E1150 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M572 D0 S0.2 ; Set Pressure Advance ; Axis Limits M208 Z0 S1 ; set minimum Z ; Endstops M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop M574 Y2 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop M574 Z2 S1 P"zstop" ; configure active-high endstop for high end on Z via pin zstop ; Z-Probe M558 P5 C"zprobe.in" H5 R0.4 F1200 T6000 ; set Z probe type to unmodulated and the dive height + speeds G31 P100 X0 Y0 Z-0.08 ; set Z probe trigger value, offset and trigger height M557 R135 S15 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; 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 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" ; 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 B0 S1.0 ; disable bang-bang mode for heater and set PWM limit M143 H1 S300 ; set temperature limit for heater 1 to 300C ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H0 ; set fan 0 value. Thermostatic control is turned off ; 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 ; Custom settings are not defined ; Miscellaneous M501 ; load saved parameters from non-volatile memory
; config-override.g file generated in response to M500 at 2021-04-08 20:33 ; This is a system-generated file - do not edit ; Delta parameters M665 L360.240:360.240:360.240 R179.939 H467.203 B150.0 X-0.419 Y-0.322 Z0.000 M666 X-0.287 Y0.275 Z0.012 A0.00 B0.00 ; Heater model parameters M307 H0 R0.565 C480.496:480.496 D3.93 S1.00 V24.3 B0 M307 H1 R1.671 C232.603:232.603 D6.72 S1.00 V24.3 B0 ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 M486 S-1
; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H0 ; set fan 0 value. Thermostatic control is turned off
There's no fan definitions for fan1 and fan2 which would explain why they weren't working? Or am I missing something?
@phaedrux Yes, I mentioned above I changed the line to,
M950 F0 C"fan1" Q500
M950 F0 C"fan2" Q500
To map outputs 1 and 2 to F0 alternately, neither of which worked at the time. Currently after erasing and re-flashing the 1.04 board, I am using...
M950 F0 C"fan2" Q500, at line 59, which is working to control a fan plugged into PWM header 2.