Temp controlled fan sometimes only goes 50pct
-
My current configs for fans are below. I have a tool changer so there are A LOT of things going on. I'll post all of my scripts if you want.
I've also tried with T80:80 and gotten the same results. It only happens with tool 0 which is even stranger.
When I say 50pct, the M106 shows S50
Duet 2 Ethernet w/RRF 3.3
M106 P0 C"Cold Section 0" S1 H1 T80
M106 P1 C"Tool 0 Blower" S0 H-1
M106 P2 C"Cold Section 1" S1 H2 T80
M106 P3 C"Tool 1 Blower" S0 H-1
M106 P4 C"Cold Section 2" S1 H3 T80
M106 P5 C"Tool 2 Blower" S0 H-1
M106 P6 C"Cold Section 3" S1 H4 T80
M106 P7 C"Tool 3 Blower" S0 H-1 -
@gnydick
I had the same when I also added the fan# to my tool definition. I simply confused heatsink fan with part cooling fan. -
@gnydick if you have a temperature controlled fan and you try to change the speed to below 50% using the M106 S parameter, then RRF will set the speed to 50%. This is to stop you accidentally turning off a temperature controlled fan completely when it is supposed to be on. So most likely something in your system is trying to turn the temperature controlled fan off, by sending M106 P# S0 or M107 P# where # s the fan number. Or perhaps you have included the temperature controlled fans in the M563 F parameters of the tool definitions, which you should not do (that parameter is only for print cooling fans).
-
@dc42 thanks, I'll check that out
-
@dc42 none of those are the case, so I'm not sure why it's set at 50%
-
Most slicers by default assume that fan 0 is the tool 0 (part) fan.
A command of M106 S0 is the same as M106 P0 S0.
So check your slicer code for M106 commands.
Frederick
-
@fcwilt thanks. I don't think a temperature controlled fan would be changed by an M106 command without a "P"
-
@gnydick said in Temp controlled fan sometimes only goes 50pct:
@fcwilt thanks. I don't think a temperature controlled fan would be changed by an M106 command without a "P"
Well I made a configuration error on one of my printers and fan 0, which should have been the part fan was actually the hotend fan.
And when a print was run the hotend fan was controlled by the M106 commands in the print file.
Leading to the hotend overheating and melting of the hotend mount.
Frederick
-
@gnydick said in Temp controlled fan sometimes only goes 50pct:
M106 command without a "P"
An M106 without a P should control the currently selected tools part fan as defined in it's M563 F parameter.
If an S parameter is provided but no other parameter is present, then the speeds of the print cooling fans associated with the current tool will be set (see the F parameter in the M563 command). If no tool is active then the speed of Fan 0 will be set.
https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M106_Fan_On
So the question then is, does the slicer send a M106 S command when no tool is selected?
@gnydick said in Temp controlled fan sometimes only goes 50pct:
I'll post all of my scripts if you want.
Let's see em.
-
@phaedrux but the is not my part cooling fan, so it shouldn't affect it, right?
Scripts...
config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Jul 21 2020 18:20:38 GMT-0700 (Pacific Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"RailCore II ZLT" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 P10.0.0.201 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P10.0.0.1 ; set gateway M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S1 ; enable Telnet ; Drives M569 P0 S0 ; physical drive 0 goes b M569 P1 S1 ; physical drive 1 goes f M569 P2 S1 ; physical drive 2 goes f M569 P3 S1 ; physical drive 3 goes f M569 P4 S0 ; physical drive 4 goes b M569 P5 S0 M569 P6 S0 M569 P7 S0 M569 P8 S1 ; goes b M569 P9 S0 ; goes f M584 X0 Y1 Z5:6:7 E3:4:8:9 C2 U5 V6 W7 ; set drive mapping M350 X16 Y16 Z16 U16 V16 W16 E16:16:16:16 I1 ; set 16x microstepping for axes& extruder, with interpolation M350 C8 M201 X10000 Y10000 Z100 U201 V201 W201 E1500:1500:1500:1500 C400 ; Accelerations (mm/s^2) M203 X24000 Y24000 Z900 U900 V900 W900 E3600:3600:3600:3600 C5000 ; Maximum speeds (mm/min) M566 X250 Y250 Z100 U100 V100 W100 E8000:8000:1000:8000 C2 M204 P1000 T4000 M906 X1000 Y1000 Z1000 E800:800:800:800 C500 I60 ; Set motor currents (mA) M92 X200.00 Y200.00 Z1600.00 U1600 V1600 W1600 E800:800:800:800 C100 ; set steps per mm M84 S30 ; Set idle timeout ; Axis Limits M208 X-83.1 Y-7 Z0 C0 S1 V0 ; set axis minima M208 X425.60 Y300 Z580 C260 S0 V28 ;set X to max of 216, and for tool changing to 302 ; Endstops ;M574 X1 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 X1 S3 M574 Y1 S3 ;P"ystop" ; configure active-high endstop for low end on Y via pin ystop ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 R4700 B3950 H0 L0 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 Q100 ; 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 S160 ; set temperature limit for heater 0 to 160C ; set temperature limit for heater 0 to 160C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S400 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M308 S2 P"e1temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create nozzle heater output on e0heat and map it to sensor 2 M143 H2 S400 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H3 C"duex.e2_heat" T3 ; create nozzle heater output on e0heat and map it to sensor 2 M143 H3 S400 M307 H3 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M308 S4 P"duex.e3temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H4 C"duex.e3_heat" T4 ; create nozzle heater output on e0heat and map it to sensor 2 M143 H4 S400 M307 H4 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans ;tool 0 M950 F0 C"duex.pwm4" Q500 M950 F1 C"^duex.pwm5" Q16000 M950 F2 C"duex.pwm3" Q500 M950 F3 C"^duex.fan3" Q16000 M950 F4 C"duex.fan4" Q500 M950 F5 C"^duex.fan5" Q16000 M950 F6 C"duex.fan6" Q500 M950 F7 C"^duex.fan8" Q16000 M106 P0 C"Cold Section 0" S1 H1 T80:80 B1 M106 P1 C"Tool 0 Blower" S0 H-1 B1 M106 P2 C"Cold Section 1" S1 H2 T80:80 B1 M106 P3 C"Tool 1 Blower" S0 H-1 B1 M106 P4 C"Cold Section 2" S1 H3 T80:80 B1 M106 P5 C"Tool 2 Blower" S0 H-1 B1 M106 P6 C"Cold Section 3" S1 H4 T80:80 B1 M106 P7 C"Tool 3 Blower" S0 H-1 B1 ; Tools M563 P0 S"One" D0 H1 F1 ; define tool 0 M563 P1 S"Two" D1 H2 F3 ; define tool 1 - single hot-end M563 P2 S"Three" D2 H3 F5 ; define tool 2 - single hot-end M563 P3 S"Four" D3 H4 F7 ; define tool 3 - single hot-end G10 P0 X39.136 Y-4.384 Z-10.81 G10 P0 R0 S0 G10 P1 X39.197 Y-19.654 Z-19.87 G10 P1 R0 S0 G10 P2 X39.13 Y-5.869 Z-11.22 G10 P2 R0 S0 G10 P3 X39.285 Y-19.736 Z-20.15 G10 P3 R0 S0 ; Custom settings G21 G90 ; Send absolute coordinates... M140 S0 R0 M501 M555 P2 M671 X-41.2:-41.2:372 Y-2:252:126.1 S7.5 ;Front left,(-10,22.5) Rear Left (-10.,227.5) , Right (333,160) S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew ;M671 X-41.2:-41.2:372 Y10:264:138.1 S7.5 ;Front left,(-10,22.5) Rear Left (-10.,227.5) , Right (333,160) S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew M83 ; ...but relative extruder moves M929 P"eventlog.txt" S1 ; Start logging to file eventlog.txt ; Miscellaneous M501 ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M98 P"config-user.g"
tfreeX.g it's the same for all tools, just different offsets
; tfree0.g ; called when tool 0 is freed ; ;G60 S0 ; save the current position ; retract ;M98 P"/macros/_tip forming" ;if fans[0].actualValue > 0 ; M106 P0 S0 ;;;;;;;;;;;;;;;;;; ;mesh levelling off ;G29 S2 ;Purge nozzle ;M98 Ppurge.g ;Move In G60 S0 G53 G1 Y1.1 E0 F6000 G53 G1 X380 F6000 G53 G1 X424 F3000 ;G1 E-100 F3000 ;Open Coupler M98 P"/macros/tool_unlock" ;Move Out G53 G1 X380 F6000 G53 G1 X250 F3000 M400
tpreX.g
if tools[0].state != "active" M118 S"Activating Tool 0" ;Move In G53 G1 Y1.1 F6000 G53 G1 X380 F6000 G53 G1 X424 F1500 M98 P"/macros/tool_lock" ;Close Coupler
tpostX.g
if move.axes[2].machinePosition < 30 G91 G1 Z30 G90 M116 H1 ;G1 E100 F3000 if heat.heaters[1].current > 170 G1 E0 F420 M98 P"/macros/tools/wipe" ; enable fan if it was running M106 R2 G53 G1 X279 F16000 G1 X0 Y0 R0 F16000
-
@gnydick you've made the classic mistake of using Fan 0 as a hot end fan. Any M106 or M107 commands generated by the slicer when no tool is selected will target that fan. See https://duet3d.dozuki.com/Wiki/Connecting_and_configuring_fans#Section_General_recommendations.