• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

[BUILD] 10 Channel USB PWM Fan Controller

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.
I have a question: Did you draw the tracks by hand? I say this because the edges are not clean and sharp (sorry, I always look for that kind of thing), also the tracks for power are the only ones that need to be wide,like .050 inch, all others can be .0015 inch wide for signals.

Toner transfer and permanent marker. It's good enough to prototype with :)
 
True, as long as it works and does the job :):thup: BTW, my router died last night right after I hit save, got new 1 today.

Oh that sucks. What do you mean by "hit save"?
Detailed Progress 04/07
Various Software/Firmware updates:
1. Calibration now fully working and recorded
2. Renaming Fan
3. Displaying all values in EEPROM
4. Changing Refresh Rate(Resolution in ms) on the fly through software and saved on EEPROM --> The higher the refresh rate, the longer it takes to show RPM, but the more accurate the reading.
5. Assimilated functions into tabcontrol for easier management/debug
6. Read Set Custom Message when LCD is cycling info
7. Added Refresh Rate resolution info on LCD cycle

What's Next?
1. Will implement other features previously described. I might take a couple days off this project as we approach the weekend. Got a fairly busy schedule starting Friday to Monday.

Calibrating fan0 from 0 to 100 steps
2h5tde9.jpg


Calibrating fan0, fan1, fan6, fan from 0 to 4 steps
8wz1oz.jpg


Changing Fan Names:
(Dialog Popups on doubleclick)
2pqkkgi.jpg
op44f6.jpg


Populating EEPROM data:
op44f6.jpg


Fan Output Tab:
33di29s.jpg


LCD Tab:
95tnxe.jpg


Other Functions Tab (Change RPM Refresh Rate)
2wcgtw4.jpg
 
Hello man! Great work. I'm starting with a similar project. I'm morein pre alpha stage. May ask you why you decide not to use somesthing like "Arduino" it has an integrate support for LCD, an integrate support For PWM controller.
It's not cheap like your solution but it can be implemented by a noob.
My other purpose is to give a feedback to the mainbord and use the mainbord to control the fan. The purpose of arduino is to manage the real rotation of each fan and return a single value to motherboard, manage input of motherboard and keep fan rotating at correct speed and plus use a moltiplier factor
 
You should start a thread on your project and lay it all out for us! I'd like to see it and hear about it.
 
Hello man! Great work. I'm starting with a similar project. I'm morein pre alpha stage. May ask you why you decide not to use somesthing like "Arduino" it has an integrate support for LCD, an integrate support For PWM controller.
It's not cheap like your solution but it can be implemented by a noob.
My other purpose is to give a feedback to the mainbord and use the mainbord to control the fan. The purpose of arduino is to manage the real rotation of each fan and return a single value to motherboard, manage input of motherboard and keep fan rotating at correct speed and plus use a moltiplier factor

Thanks!

Your project sounds like it has its merits.

I haven't used arduino before, and I wanted to learn pretty much from scratch. PIC controllers seemed nice and easy enough to get started.

that said, I'm putting my project on hold for now, as I am quite satisfied with my current hardware/firmware/software combo.

I will restart a new project from scratch, with more optimisation, heaps (talking HEAPS HEAPS) of features.

will post more details later on, but probably not until another month or 2 as i'm currently moving houses/etc
 
Thanks!

Your project sounds like it has its merits.

I haven't used arduino before, and I wanted to learn pretty much from scratch. PIC controllers seemed nice and easy enough to get started.

that said, I'm putting my project on hold for now, as I am quite satisfied with my current hardware/firmware/software combo.

I will restart a new project from scratch, with more optimisation, heaps (talking HEAPS HEAPS) of features.

will post more details later on, but probably not until another month or 2 as i'm currently moving houses/etc

Hey ameel I would like to get in touch with you in order to get your source code and hex code for the PIC. Please PM me on here or post a reply here letting me know how I can get in touch with you please.
 
You have others here that can help (like Bob!!) and are interested. I think it would be worth it to start one. :)

You have a reply in the mod thread too. :)
 
Hi guys,
I'm new here, just registered inspired by this thread. Too bad I did not stumble upon this thread earlier, as I was "working" on similar project, a couple of ago. I haven’t been very active with it lately, but I’ve given this subject a considerable amount of thought. What’s holding me back now is that though I’ve been working with Microchip PIC for years now, we are moving to 32-bit ARM at my workplace. It has so much more, and at the same time is cheaper, so I would love to utilize it.

So I'm an embedded Firmware engineer but I also do hardware. What I do is hardware desing, schematics, layout and firmware in C language. I’m not experienced in writing PC software and GUI, and this is where I would prefer help. Who's in?

I've been running water cooled loops for some years now and have been wanting a fully automated cooling system, independent of PC operation. I was surprised how poor selection of such commercial fan controllers there is. Or is there? Aquaero 5 LT was and is out there, but it is not enough! Aquaero LT does not have too many outputs. I want all calculation to happen inside that MCU. Yet I want to be able to monitor and configure it with PC! I want decent form factor, quality PCB and surface mount components. I don't want LCD or other sugar coating.

So at the time I started, I didn't have PWM fans. So I made a 10 channel analogue fan controller. It has 10 output channels, 10 RPM inputs, five NTC (thermistor) temperature sensors, serial I/O and a few unused digital inputs. It has a PIC18F67K22. It’s got 10 CCP’s, so it can do 10 independent PWM channels with 1000-step resolution without having to calculate timings at all. One thing it lacked, and that is interrupts for RPM-inputs. RPM had to be measured by polling the input pin. It works, but it demands time from the MCU. Polling 10x slow spinning fans would hold back other operations. ARM <3 has this and so much more.

With my prototype I used a cheap cheap design for the analogue control. It’s my own design, it occurred to me one morning while I was lying in bed with my eyes closed. I thought of an opamp pulling a PNP transistor. This opamp takes command from MCU PWM (filtered to analogue) and compares it to fan output voltage... simulations were so good, I decided to build the prototype and it worked like a charm :D
It is linear design, but I get good 12 volts with it. It’d say the voltage lost over the transistor is about 100mV.
I calculated that I could connect up to 4 fans per channel using the SOT-223 BCP53 transistor (calculation based on Noctua NF-P12). The most power loss for the PNP happens at 50% power.
Here’s the opamp schematic and simulation (L1+R9 symbols the fan): https://www.dropbox.com/s/twx0vg4g1rfav4b/single_opamp_sim1.png?dl=0

So I made a prototype with this analogue design and played with features, but did not go all the way. I had terminal connection (putty) through TTL232 (separate module) and a set of commands I made. I even made an excel sheet where I entered configurations and which generatet a .bat file. The .bat would send the configurations via the virtual COM-port. It works, but I’m not really proud of it :D So I had no real GUI, as I hadn’t the necessary experience.

Couple of pics of prototype's PCB..sry, there’s no pics with all the components :/
I still have the prototype somewhere...
https://www.dropbox.com/s/v3fi2wm4v3xayyy/2013-10-30 18.00.10.jpg?dl=0
https://www.dropbox.com/s/w5x490qui2lw9i9/2013-10-30 18.00.44.jpg?dl=0
https://www.dropbox.com/s/i7cfwq2au7lc4s2/2013-10-30 18.01.28.jpg?dl=0
https://www.dropbox.com/s/fxt3fsbp4fz4hqv/2013-11-03.jpg?dl=0
PCB is from Itead Studios. Note how the MCU is on a separate PCB. It was for prototype modularity.. It didn’t do me any good, so I won’t do it again.

But then I gave my PC away and went traveling to Australia for a year. That was February 2014. I’m back now and built a new PC, but haven’t really worked on this project since I left :/

My new plan is to go all PWM. I would use a FTDI chip to have MCU UART to Virtual COM port and use this to send packages back and forth. With this chip there would also be the option to use D2XX interface, but I haven’t got the skills for that yet… I’m going to connect this to motherboard by USB pins (not connector).
I could maybe make a separate module with the linear schematic, to turn a PWM output into a linear 3-pin fan controller.
What I would like though, as a fine sugar coating, is an RGB led in place of my case's power led. My Case is Fractal Design Define XL. It’s got a blue led in a visible spot. I would love to put an RGB there and use it to give visual information about water temperature. When I would turn the PC on, water would be ~23C and the led would signal blue. Then as it warms up to where I want it to be, maybe 30, it would gradually turn into green. From there through orange to red.. you get it
 
Back