BTT SKR Mini E3 V2 cooling fan doesn't run

Since my mini e3 v1.2 died and I replaced it with a v2.0, I had to build new firmware. I tried to port the old settings as well as I could. But the cooling fan doesn’t run, either on fan0 or fan1, even when I manually set the cooling fan speed to 100%. I have the hotend cooling fan running directly off Vin, I’m not using the “CNC fan” feature and didn’t enable it in the firmware.

The firmware I’m running is pushed to https://github.com/johnsonm/Marlin/tree/mkj-2.0.7.2.x-corexy

Does anyone see what I missed? I’m sure I did something wrong trying to pull the configuration over from the upstream version from btt…

Double check the pins file to make sure your old config is properly addressing the output you are on. Also double check the autofan isn’t overriding the fan pin.

1 Like

I wasn’t trying to print with the fan on. I just tested setting fan to 100% in the menu while not printing. So autofan can’t be the problem.

I definitely have #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 While lots of things depend on that, an example would be that the LCD wouldn’t work if that were wrong, because the pins for the EXT connector are different:

/**
 *        SKR Mini E3 V1.0, V1.2                      SKR Mini E3 V2.0
 *                _____                                     _____
 *            5V | 1 2 | GND                            5V | 1 2 | GND
 *  (LCD_EN) PB7 | 3 4 | PB8  (LCD_RS)       (LCD_EN) PB15 | 3 4 | PB8  (LCD_RS)
 *  (LCD_D4) PB9 | 5 6   PA10 (BTN_EN2)      (LCD_D4) PB9  | 5 6   PA10 (BTN_EN2)
 *         RESET | 7 8 | PA9  (BTN_EN1)              RESET | 7 8 | PA9  (BTN_EN1)
 * (BTN_ENC) PB6 | 9 10| PB5  (BEEPER)      (BTN_ENC) PA15 | 9 10| PB5  (BEEPER)
 *                -----                                     -----
 *                EXP1                                      EXP1
 */
#ifdef SKR_MINI_E3_V2
  #define EXP1_9                            PA15
  #define EXP1_3                            PB15
#else
  #define EXP1_9                            PB6
  #define EXP1_3                            PB7
#endif

The pins files are the same between what was shipped and the Marlin tree I built in:

$ diff -uNr ~/d/Marlin/Marlin/src/pins V2.0/Marlin-2.0.7.2-SKR-mini-E3-V2.0/Marlin/src/pins 
$

I did disable USE_CONTROLLER_FAN but can try changing that to see if it helps. (There just isn’t a fan pointed at the control board so it seemed pointless but would not be harmful.)

I’ll carry the VMM downstairs and actually test voltage on the FAN0 and FAN1 headers. :slight_smile:

just to confirm the hotend fan, or the part cooling fan is the one that does not come on?

There are a few areas that even though you define it in one file, it can be overwritten by another file further up the chain. For example in Configuration_adv.h, these will overwrite your pins file definitions.

// @section extruder

/**

  • Extruder cooling fans
  • Extruder auto fans automatically turn on when their extruders’
  • temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
  • Your board’s pins file specifies the recommended pins. Override those here
  • or set to -1 to disable completely.
  • Multiple extruders can be assigned to the same pin in which case
  • the fan will turn on when any selected extruder is above the threshold.
    */
    #define E0_AUTO_FAN_PIN -1
    #define E1_AUTO_FAN_PIN -1
    #define E2_AUTO_FAN_PIN -1
    #define E3_AUTO_FAN_PIN -1
    #define E4_AUTO_FAN_PIN -1
    #define E5_AUTO_FAN_PIN -1
    #define E6_AUTO_FAN_PIN -1
    #define E7_AUTO_FAN_PIN -1
    #define CHAMBER_AUTO_FAN_PIN -1

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255

Then you have the common pins file for all the SKR Mini “pins_BTT_SKR_MINI_E3_common.h” which yours shows:

// Heaters / Fans
//
#define HEATER_0_PIN PC8 // “HE”
#define HEATER_BED_PIN PC9 // “HB”

#ifdef SKR_MINI_E3_V2
#define FAN_PIN PC6
#else
#define FAN_PIN PA8 // “FAN0”
#endif

Then the pins_BTT_SKR_MINI_E3_V2_0.h:

#includepins_BTT_SKR_MINI_E3_common.h

#define BOARD_INFO_NAME “BTT SKR Mini E3 V2.0”

// Release PA13/PA14 (led, usb control) from SWD pins
#define DISABLE_DEBUG

#define NEOPIXEL_PIN PA8 // LED driving pin

#define PS_ON_PIN PC13 // Power Supply Control

#define FAN1_PIN PC7

#ifndef CONTROLLER_FAN_PIN
#define CONTROLLER_FAN_PIN FAN1_PIN
#endif

All of this file stacking and superseding can make tracking down the issues tricky.

1 Like

TL;DR It just so happens that this part cooling fan is only mostly dead.

My hotend fan is on unswitched Vin through a buck converter to take 24V down to 12V. It’s a very quiet noctua.

I moved the header from FAN0 to Vin and it started right up. Moved it back to FAN0 (I now noticed that there’s an LED indicator to let me know when it is powered) and the fan didn’t work, even though the LED showed power and I measured 24V on the pins. Thought that maybe the dupont connector was not seated right (the pins for Vin are longer because they aren’t in a JST-style block), but then measured 24V at the other end of the cable.

Then I spun the fan again with my fingers (I had tried this earlier) and this time it started running.

So, just bad bearings, and time for me to try to find a higher quality part cooling fan.

The timing with swapping out the control board? Coincidence? I think so!

1 Like

The bearings quit making noises after running for a while, so maybe it just needed to re-seat some grease. It’s running OK now. But a quality fan should just work. This one hasn’t gotten that much use because shortly after installing it I switched to printing mostly PETG with no part cooling fan.

1 Like

Yeah, getting quality 24v fans is tricky. Lots of junk out there (likely just 12v fans they do some hackery to). I have not found good 40x40x10 axial fans, and 40x40x20 radial 24V fans that are reasonable in price, 24V, move lots of air, and don’t sound like a jet engine. I guess this is one of those “you can only pick two” problems :slight_smile:

2 Likes

I tend to pull the sticker off the back, put some light sewing machine oil on the bearing at the back of the fan, then put the sticker back down. Tends to give a little more life to an ageing fan while a replacement is in route.

2 Likes

I had thought that sunon had a 24V 40x40x10 radial fan, but I can’t find one now. I must have been mistaken.

I guess I could use the 12V supply, and use a voltage divider to put the 24V fan output within range for Vgs for an external MOSFET to drive a 12V 40x40x10 radial fan. Good thing I haven’t yet designed a case for the electronics for this printer; that will take me up to four separate boards… :slight_smile:

But even at 12V, it is not obviously easy to find high quality 40x40x10 or even 40x40x20 radial fans.

I’m happy to run my hotend-cooling noctua whenever the printer is on; lifetime of the noctua might be longer than the current iteration of the printer it is on. But part cooling fan is a lot trickier. And just switching to axial fan doesn’t solve the problem. (Mark Rehorst apparently deleted his reddit account due to all the abuse he got when he pointed out that you should test whether air actually flows through your part cooling shroud; that fluid dynamics is actually hard.)

2 Likes

OK. Now after running it for a while it’s running better than ever. When it was new, it wouldn’t keep running at below about 28% duty cycle. Now it keeps turning down to 15% duty cycle. And it’s smooth now. I really don’t understand how this works, but I guess I won’t complain until it quits working again right in the middle of trying to print a PLA part.

3 Likes

If it’s a bushing fan then chances are it’ll run good up until the moment it won’t turn into more. Then the oil trick can help for a while, but it’s a just a mater of time at that point.

1 Like

I don’t run it very much, honestly, since I mostly print PETG without a fan at all.

Supposed to be hydraulic bearings:

I wonder if I just needed to distribute some oil because I hadn’t used it for so long?

1 Like