Status-based fan mode
-
I want to have a fan turning on whenever the heated bed is heating. This fan is used to cool my PSU and the PSU only get's hotter when a large consumer like the heated bed is drawing enough current. Currently I have it set to whenever heated bed is warmer than 25°C but this could in theory be also because it is a warm day on the room temperature is already above that. It is not really a harm if the fan turns on then also but it is unnecessary in my opinion.
Also it would be great to have a fan being able to turn on when motors are on. That would then be a trigger to start cooling the Duet. Currently I still have low-current motors that will probably never heat up the drivers anyway but besides buying higher-current motors I also plan to put the Duet into an enclosure that will also have a fan. This one could maybe be simplified by using the already existing virtual heater channel for the drivers that currently reports 0°C in case of no warning and 100/150°C in case of warning or overheating. I have not checked the code base in this regard but I have the feeling this could maybe extended in a way where 0°C means drivers are off, 50°C (or any other value between 0 and 100) means drivers are on but everything OK and 100/150°C keep their current meaning.
-
The drivers only supply warning flags. There is no output from the driver chips that report actual temperature. So if you want to control fans based on temperature, you need to stick temperature sensors (thermistors) directly onto the driver chip. You could do likewise with the PSU - that way fans will only come on when cooling is needed due to temperature and will take account of ambient temperature as well as PSU load.
-
@deckingman I know that the drivers do not actually report temperatures and that 100/150°C are also just values that are set by RRF based on flags the drivers set in various responses. What I was asking for is to extend that behavior with another (fixed) value above 0 and below 100 that will only indicate that the driver is currently powering the motor (in contrast to being disabled by
M18/M84
). This way one could setup a thermostatically controlled fan the usual way using this specific temperature as trigger value. -
Have you considered wiring the PSU fan in parallel with the bed heater? You might need to increase the bed heater PWM frequency from its default value to e.g. 100Hz to avoid the sound of it cutting in and out when the bed heater power is reduced.
For the electronics, you could have the cooling fan triggered by CPU temperature and by any driver overheat warnings.
This one could maybe be simplified by using the already existing virtual heater channel for the drivers that currently reports 0°C in case of no warning and 100/150°C in case of warning or overheating. I have not checked the code base in this regard but I have the feeling this could maybe extended in a way where 0°C means drivers are off, 50°C (or any other value between 0 and 100) means drivers are on but everything OK and 100/150°C keep their current meaning.
That's an interesting idea, I'll give it some thought.
-
@dc42 said in Status-based fan mode:
Have you considered wiring the PSU fan in parallel with the bed heater? You might need to increase the bed heater PWM frequency from its default value to e.g. 100Hz to avoid the sound of it cutting in and out when the bed heater power is reduced.
To quote you even more: That's an interesting idea, I'll give it some thought.
This would also save me a fan connector on the board which I would run short otherwise...
-
@dc42 said in Status-based fan mode:
This one could maybe be simplified by using the already existing virtual heater channel for the drivers that currently reports 0°C in case of no warning and 100/150°C in case of warning or overheating. I have not checked the code base in this regard but I have the feeling this could maybe extended in a way where 0°C means drivers are off, 50°C (or any other value between 0 and 100) means drivers are on but everything OK and 100/150°C keep their current meaning.
That's an interesting idea, I'll give it some thought.
I created https://github.com/dc42/RepRapFirmware/pull/180 for this.