How did this start?
I have 7x Corsair SP120 and a pump on my mini-itx rig which are all controlled through the swiftech 8-way PWM splitter which I got with the cooler. While splitting PWM sounds great in theory, I found out that the splitter does not work well with Corsair SP120 fans which are 'sensitive'.
I did a bit of reading, and built a simple diy PWM amplifier using a 555 timer.
That was great! However, while I could now effectively control fan speeds, if I wanted everything quiet, the pump would almost not run at all! >_< Bugger! So I needed an alternative option where I could control each group of fans separately, and this is when I decided to build my own Fan Controller.
What I want to do/achieve
Build a PWM Fan Controller with a USB and software interface that has lots of features:
1) individually control speed of up to 10 devices
2) linked fan control
3) temperature sensor (modular/wired and can be put against cpu/gpu/hdd/mobo/etc)
4) adjust temp based on temperature
5) individual/linked speed scheduler
6) LCD output (more of a gimmick, but why not!)
7) etc/as other features/thoughts come to mind
How can you help?
Offer ideas/feedback/criticism, or other suggestions
Complete Log (Brief)
0) Put together rough designs (drawn poorly, not CAD), and put together a simple prototyping board for a PIC18F2455 and some breadboards + basic firmware
1) Reading the fan speed/RPM. I got the microcontroller to output fan speed every second and that seemed to work fine
2) Implement PWM through the firmware. That was equally simple to implement.
3) Implemented a basic USB interface (and moved away from Serial). This allowed me to initially just read the RPM.
4) Improved the software interface to allow me to read and set PWM cycles.
5) re-wrote software interface ground up with improved features (slider to control PWM, PWM calibration. (week 16/06)
6) Implemented temperature sensor, on design, prototyping board, firmware and software interface
7) Learn to use Eagle (weekend 21/06)
8) Redesigned schematic to use a PIC18F4550 to support LCD, temp sensor and 2 LEDs (for status or whatever end user wants to do) (and ordered some parts, which I've been waiting on for a while)
9) Built circuit on a prototyping board for new schematic, except for the IC and Fan headers (waiting on those from UK)
10) Not happy with size, and decided to etch my own board.
11) Learn to etch boards, acquired material, and trialled couple of small designs
12) Redesign schematic for bottom layer only (24/06)
13) Etch final schematic (25/06)
What's Next as at 25/06
1) Drill PCB and solder parts
2) Firmware implementation:
a) LCD implementation
3) Software implementations:
a) LCD control
b) Calibrating Fans
c) Linked fan
d) individual Fan Scheduler (software-based for now)
e) Switching between PWM Control and % speed control
f) Fan profiles
g) Linked fan profiles
h) Fan names + mapper
i) Profiles based on temp with overriding rules
Detailed Progress log as at 25/06
By way of update, I got some parts and waiting for some more.
Meanwhile, I redesigned my 9-Channel USB PWM Fan Controller to a 10 Channel USB PWM Fan controller with these extras:
1) 2x16 monochrome LCD support (software is WIP)
2) 2xstatus LEDS (for debugging. software is WIP, but i'll probably allow user-control)
3) Temp sensor (this modular/wired. so it can be put against motherboard/cpu/gpu/hdd/whatever)
I've also had some time to work on the firmware and software. I've basically re-written the app ground up in WPF (so I can make it look nicer later on)
Software now implements:
1) slider for fans
2) temperature readings
3) Fan calibration (i.e. tries duty cycles 0 -100 to see what duty cycles give what RPM/% fan speed)\
Software update:
While still waiting for the parts, I started preparing a breadboard. It resulted in a 150x100mm config for the 10 fans and other output/input (LED, LCD, Thermistor, ICSP).
(Pin headers for Fans missing, and the PIC18F4550 Those are the only parts I've been waiting on.
I went nuts here and decided to solder bridge everything. Was first time experimenting with this particular board. The pads make it fairly easy to solder bridge.
Although I liked the design and soldering outcome, I didn't like the size and decided to etch my own board. Having some extra spare time, I learnt how to use Eagle, re-designed the board, learnt (thanks internet!) how to etch boards, printed, got some copper clad and experimented a bit. For those who use Eagle, I've only used it 2 days now and REALLY hate the autorouter. It probably uses the worst algorithms there are. I tried a lot of times with different parameters but eventually just gave up. What you see on the board below is what I fully manually routed (yes, can probably improve).
I just now finally etched the board and cleaned it, and guess what... I got my parts earlier today! The only thing to progress this project further is to drill the newly baked pcb tomorrow, solder the parts. After that's done I'll have a complete prototyping board to fully work on the firmware and software.
(you will notice I forgot it's now a 10 channel fan controller, but still etched '9 channel' on it, it's just a typo )
Photo of PCB, iphone 4s and 250mL up&go for size comparison
Btw this is what I would call my "proper prototyping board". It wouldn't necessarily be what the end user would have/use. For example I've provided pin-outs for all the pins of the IC and also ICSP, which would normally not be included in a final product
Also, I realise I will need thicker traces to power 12v fans and for ground. I'll look into wider traces that in an updated version later on, or just stick to thicker trace (applying some solder on the power and ground traces). I'll be focusing on firmware/software for now
I have 7x Corsair SP120 and a pump on my mini-itx rig which are all controlled through the swiftech 8-way PWM splitter which I got with the cooler. While splitting PWM sounds great in theory, I found out that the splitter does not work well with Corsair SP120 fans which are 'sensitive'.
I did a bit of reading, and built a simple diy PWM amplifier using a 555 timer.
That was great! However, while I could now effectively control fan speeds, if I wanted everything quiet, the pump would almost not run at all! >_< Bugger! So I needed an alternative option where I could control each group of fans separately, and this is when I decided to build my own Fan Controller.
What I want to do/achieve
Build a PWM Fan Controller with a USB and software interface that has lots of features:
1) individually control speed of up to 10 devices
2) linked fan control
3) temperature sensor (modular/wired and can be put against cpu/gpu/hdd/mobo/etc)
4) adjust temp based on temperature
5) individual/linked speed scheduler
6) LCD output (more of a gimmick, but why not!)
7) etc/as other features/thoughts come to mind
How can you help?
Offer ideas/feedback/criticism, or other suggestions
Complete Log (Brief)
0) Put together rough designs (drawn poorly, not CAD), and put together a simple prototyping board for a PIC18F2455 and some breadboards + basic firmware
1) Reading the fan speed/RPM. I got the microcontroller to output fan speed every second and that seemed to work fine
2) Implement PWM through the firmware. That was equally simple to implement.
3) Implemented a basic USB interface (and moved away from Serial). This allowed me to initially just read the RPM.
4) Improved the software interface to allow me to read and set PWM cycles.
5) re-wrote software interface ground up with improved features (slider to control PWM, PWM calibration. (week 16/06)
6) Implemented temperature sensor, on design, prototyping board, firmware and software interface
7) Learn to use Eagle (weekend 21/06)
8) Redesigned schematic to use a PIC18F4550 to support LCD, temp sensor and 2 LEDs (for status or whatever end user wants to do) (and ordered some parts, which I've been waiting on for a while)
9) Built circuit on a prototyping board for new schematic, except for the IC and Fan headers (waiting on those from UK)
10) Not happy with size, and decided to etch my own board.
11) Learn to etch boards, acquired material, and trialled couple of small designs
12) Redesign schematic for bottom layer only (24/06)
13) Etch final schematic (25/06)
What's Next as at 25/06
1) Drill PCB and solder parts
2) Firmware implementation:
a) LCD implementation
3) Software implementations:
a) LCD control
b) Calibrating Fans
c) Linked fan
d) individual Fan Scheduler (software-based for now)
e) Switching between PWM Control and % speed control
f) Fan profiles
g) Linked fan profiles
h) Fan names + mapper
i) Profiles based on temp with overriding rules
Detailed Progress log as at 25/06
By way of update, I got some parts and waiting for some more.
Meanwhile, I redesigned my 9-Channel USB PWM Fan Controller to a 10 Channel USB PWM Fan controller with these extras:
1) 2x16 monochrome LCD support (software is WIP)
2) 2xstatus LEDS (for debugging. software is WIP, but i'll probably allow user-control)
3) Temp sensor (this modular/wired. so it can be put against motherboard/cpu/gpu/hdd/whatever)
I've also had some time to work on the firmware and software. I've basically re-written the app ground up in WPF (so I can make it look nicer later on)
Software now implements:
1) slider for fans
2) temperature readings
3) Fan calibration (i.e. tries duty cycles 0 -100 to see what duty cycles give what RPM/% fan speed)\
Software update:
While still waiting for the parts, I started preparing a breadboard. It resulted in a 150x100mm config for the 10 fans and other output/input (LED, LCD, Thermistor, ICSP).
(Pin headers for Fans missing, and the PIC18F4550 Those are the only parts I've been waiting on.
I went nuts here and decided to solder bridge everything. Was first time experimenting with this particular board. The pads make it fairly easy to solder bridge.
Although I liked the design and soldering outcome, I didn't like the size and decided to etch my own board. Having some extra spare time, I learnt how to use Eagle, re-designed the board, learnt (thanks internet!) how to etch boards, printed, got some copper clad and experimented a bit. For those who use Eagle, I've only used it 2 days now and REALLY hate the autorouter. It probably uses the worst algorithms there are. I tried a lot of times with different parameters but eventually just gave up. What you see on the board below is what I fully manually routed (yes, can probably improve).
I just now finally etched the board and cleaned it, and guess what... I got my parts earlier today! The only thing to progress this project further is to drill the newly baked pcb tomorrow, solder the parts. After that's done I'll have a complete prototyping board to fully work on the firmware and software.
(you will notice I forgot it's now a 10 channel fan controller, but still etched '9 channel' on it, it's just a typo )
Photo of PCB, iphone 4s and 250mL up&go for size comparison
Btw this is what I would call my "proper prototyping board". It wouldn't necessarily be what the end user would have/use. For example I've provided pin-outs for all the pins of the IC and also ICSP, which would normally not be included in a final product
Also, I realise I will need thicker traces to power 12v fans and for ground. I'll look into wider traces that in an updated version later on, or just stick to thicker trace (applying some solder on the power and ground traces). I'll be focusing on firmware/software for now