DIY U1 Top Cover Fan Controller

So in this other thread ( 我想知道顶盖的接口定义,自行添加风扇 ) regarding running the top cover fans I have been working on a circuit for controlling two fans using the top cover controls. That thread is marked as Solved though so I figured I should create my own. I also plan to design a exhaust filter housing and a circulation fan duct that can be bolted to a DIY top cover.

Here are a few things I have learned so far that I could not find specifically mentioned elsewhere (they probably are but search on the internet in general has gone to crap):

  1. The Snapmaker U1 Firmware is looking for a 10k resistor bridging from PA6 to GND in order to activate the top cover controls
  2. The Snapmaker U1 Firmware only activates the 24V pin when either of the fans has it’s duty cycle set higher than 0%
  3. PA9 is outputting an inverted PWM signal this means you cannot connect it directly to a 4wire PWM fan
  4. Most 4pin PWM fans will run at their minimum RPM specification when 0% duty cycle is applied.
  5. A 4pin PWM fan’s minimum RPM specification does NOT tell you if it will run at 0 RPM at 0% duty cycle or not. This makes finding 4pin fans that completely stop at 0% duty cycle difficult

The RPM issues above mean that many 4pin fans will start running as soon as 24V power is applied and 24V is activated as soon as either of the fans are turned on. So unless you find these very special 0 RPM 4pin fans you will not be able to run one fan without the other coming on when directly running the PWM signal to the fans.

Instead I am switching to 3pin 12V fans and building in a PWM controlled drive circuit. This will ensure that the fans can always be turned completely off individually. I chose these because I have several on hand already as well as 24v-12v buck converters. Making a 24V version is just a matter or changing 2 resisters and removing the buck converter.

Here is the circuit so far:

Parts List:

10kOhm Resister x2
1kOhm Resister x1
1.5kOhm Resister x1
2.2kOhm Resister x1
2N3904 Transister x1
1N4007 Diode x3
100uF Electrolitic Cap. x2
IRLZ44N Mosfet x2
24V to 12V Buck Converter x1

+------[ MISC Circuits ]------------------+
|                                         |
| [SM 24V]◄────────────►[Buck Conv. VIN+] |
| [SM GND]◄─────┬──────►[Buck Conv. VIN-] |
|               ├──────►[GND]             |
|            [10kOhm]                     |
|               ├──────►[SM PA6]          |
|               │                         |
|               ▼ [1N4007]                |
|               ┬                         |
|               └──────►[InFan Tach]      |
|                                         |
| [Buck Conv. VOUT+]◄──►[12V]             |
| [Buck Conv. VOUT-]◄──►[GND]             |
|                                         |
| [SM PA9]◄────────────►[INVERT_PWM]      |
| [SM PA8]◄────────────►[EXHAUST_PWM]     |
|                                         |
+-----------------------------------------+

+------[ 3.3V PWM Inversion Circuit ]----------+
|                                              |
|       [12V]◄───────┐           [INNER_PWM]   |
|                [2.2kOhm]           ▲         |
|                    ├────────────┬──┘         |
│ [INVERT_PWM]      C│        [1.5kOhm]        |
|     ▲            │/             │            |
|     └─[1kOhm]───B│ [2N3904]     │            |
|                  │\►            │            |
|                   E│            │            |
|                    ├────────────┘            |
|                    ▼                         |
|                  [GND]                       |
|                                              |
+----------------------------------------------+

+------[ Inner Fan Drive Circuit ]-------------+
|                                              |
|                  [12V]                       |
|                    ▲                         |
|   [InFan POS]◄─────┼─────────────┐           |
|                    ┴ [1N4007]    ┴+ [100uF]  |
|                    ▲             ┬           |
|   [InFan Neg]◄─────┼─────────────┘           |
|                    │D                        |
|                │├──┴┐                        |
|      [IRLZ44N] │|◄─┐▼                        |
|                │├──┤┬                        |
| [INNER_PWM]◄───┘G  ├┘S                       |
|                    │                         |
|                    │                         |
|                    │                         |
|                    ▼                         |
|                  [GND]                       |
|                                              |
+----------------------------------------------+

+------[ Exhaust Fan Drive Circuit ]-----------+
|                                              |
|                  [12V]                       |
|                    ▲                         |
|   [ExFan POS]◄─────┼─────────────┐           |
|                    ┴ [1N4007]    ┴+ [100uF]  |
|                    ▲             ┬           |
|   [ExFan Neg]◄─────┼─────────────┘           |
|                    │D                        |
|                │├──┴┐                        |
|      [IRLZ44N] │|◄─┐▼                        |
|                │├──┤┬                        |
| [EXHAUST_PWM]◄─┤G  ├┘S                       |
|                │   └─┐                       |
|             [10kOhm] │                       |
|                ├─────┘                       |
|                ▼                             |
|              [GND]                           |
|                                              |
+----------------------------------------------+

Please note I have not tested this yet, so unless you trust my electronics knowledge that I got 30 years ago and have used maybe once or twice a year since (I don’t lol) then I recommend holding off till I have verified it works.

UPDATE 1: Circuit diagram was wrong. 10kOhm resisters were on the wrong leg of the MOSFETS.

UPDATE 2: One of the 10k Ohm resisters was not needed because of the 1.5k Ohm in the inversion circuit.

UPDATE 3: Added another diode to keep the tach signal from causing issues with the 10k resister telling the U1 the top is on.

1 Like

Updated circuit works great. Now onto the duct and filter designs.

Found another issue. With two fans plugged in and trying to run just the exhaust fan the U1 would complain about the top cover coming off. This was because the Inner Fan’s internal circuits were causing it’s tach output pin to do weird things. This would in turn cause the 10k resister to not stay tied properly to ground. Adding another diode between the tach signal and the 10k resister fixed this.

Rough draft version of the parts are done. Was able to print several small Nylon pieces without issue. I am going to try a nylon 3D Benchy soon. Here are some “beauty” shots. lol. Please ignore the massive number of finger prints on my storage tube. Superglue vapor highlights finger prints come to find out.

General layout:

Front view:

Inside layout:

Circulation fan and ducts:

Exhaust filter (fan is outside the tote) and electronics enclosure:

Electronics:

Fans:

For fans I am currently using: Amazon.com: Noctua NF-R8 redux-1800, Quiet Fan 80mm | High Airflow, Low Noise, 25mm Thick Fan for PC and Electronics Cooling Streamlined Package 1800rpm 3-Pin : Electronics

They are a very quiet, but I am not sure if they are really moving enough air. I tried another one I had laying around but it was really loud.

Circulation System:

The vents on the circulation fan system exhaust at an 80 degree angle. The idea is that on my Target brand totes the air is aimed at just inside the printing area of the U1. This way the air should not be hitting the active print. I do need to adjust the circulation fan grills so that they are a friction fit. Right now they were too loose and I had to superglue them. That is why there is all that glue residue on the ducts. It is also why you can see every damn finger print in the storage tote.

I am thinking that for versions two I might add a second fan header on the circuit board for a second circulation fan. The primary circulation fan would have the tach wired up to it and would have to be populated first. I would then make a ducts that you mount to the two side walls of the storage tote. The two circulation fans would mount to those. The ducts go all the way to down to where the tote meets the printer. I would try to make the exit be as wide as the print area and aim down the inner walls while also not getting in the way of the print head. This should circulate the air better while also blowing on the print area less.

Exhaust System:

The exhaust fan uses these filters: Amazon.com: 3PC HEPA 13 Layer & Activated Carbon air Filter for Elegoo Centauri Carbon 3D Printer Accessories, ABS, PLA, PETG, PC, and PV filaments VOC Particle Absorption Odor Filter for Elegoo cc 3D Printer : Industrial & Scientific

The filter holder is a little tight which is making getting the filter in and out difficult. I am also not sure it is making a great seal. I am going to loosen the fit and possibly add a retaining cover.

Cabling:

I plan on making a proper cable to go from the U1 to my circuit board. The one I made is too long and looks janky. It would also be nice with this style of top cover if that cable had a quick release mechanism. When lifting the tote off it is a pain in the ass to undo the cable without breaking it.

I am also planning on adding a way to retain the fan cables in the circuit board housing. The Noctua fan cables have a lot of memory to them and have a tendency to come undone when I lift the top off.