Friday, 27 July 2012

Sanguinololu fan hack

I needed to add a fan drive to my Sanguinololu in a hurry so I did this: -

It is just a 6 pin female connector with three of the pins bent out of the way and a protected logic drive MOSFET soldered across two pins. The fan wires are soldered to the tab of the MOSFET and the 12 V pin.

The connection details can be found here: The gate of the MOSFET is pin 1 and it connects to the pin labelled PWM B12. It is actually digital pin 4. The source of the MOSFET, pin 3 connects to ground.

I used a BTS134D but pretty much any protected logic drive MOSFET will work. 

A plain MOSFET needs a series gate resistor to not exceed the maximum output current of the logic pin (and to prevent possible HF oscillation due source pin inductance), a pull down resistor to prevent it floating before the pin is defined as an output (during the bootstrap) and a diode for back EMF protection. That requires a small circuit board as in this Thingiverse thing.

I found that adding the FAN_PIN definition to Marlin corrupted the bed temperature reading unless I commented out #define FAST_PWM_FAN.


  1. Thanx, this is on my to make list.

    Any bad side effects on disabling #define FAST_PWM_FAN

  2. The fan whines unless it is 100% on or off. As I use to cool the bed as fast as possible I don't use the PWM. If it was used to cool the object being built (as is needed for PLA or steep overhangs I think) then PWM might be needed so it could be a bit irritating.

    I reported it as a bug on the Marlin github but it doesn't seem to have much interest.

    1. Is this the reason that the cooling fan on my june 2013 Mendel90 wines while it's running at <100%?

      If so, could I remedy that by re-enabling the FAST_PWM_FAN?

    2. Yes slow PWM is why it whines. As described above FAST_PWM does not work on the version of Marlin I ship. I think it is fixed in a later version.