pwm controller, controllable via windows

floodo1

Weaksauce
Joined
Dec 21, 2004
Messages
112
so what are any suggestions for pwm control via windows?
either commercial or diy?

thanks
 
2 or 3 or 4 channel, only
12v down to idk 5v or so.
single fans per channel, so no huge fan load (COULD have high speed fans (120mm) but not sure)
 
To go the DIY route...

There's plenty of microcontrollers nowadays for motor control, etc.. which offer several channels of PWM. You'll mount this on a board with a few discrete parts, write the software for it, etc. You'll have to snake a line out of your computer and plug it into a serial port, or plug it into a SMBus header on your motherboard if it has one. And then you'll be writing software for windows to talk to the microcontroller via serial or SMBus.

It won't be fun.
 
fat-tony said:
:D All depends on how you define fun I suppose...
For the amount of effort required, the ability to put my mouse on a slider in a windows application and hear fans speed up or slow down... well, ain't much of a reward :D
 
gee said:
For the amount of effort required, the ability to put my mouse on a slider in a windows application and hear fans speed up or slow down... well, ain't much of a reward :D

That's fair :D. I wonder if there's anything like that available commercially for a decent price.
 
fat-tony said:
That's fair :D. I wonder if there's anything like that available commercially for a decent price.
And if there's not, wanna write the windows software for it? I'll do the hardware. :D
 
gee said:
And if there's not, wanna write the windows software for it? I'll do the hardware. :D

Doesn't sound like too bad of a project :). I've been doing cross-platform software in Python using the wxPython toolkit all summer. I think that a few sliders and some serial/parallel/USB interfacing shouldn't be too bad to do.

This isn't the first time I've heard of someone looking for this. I think I could probably find a use for something like this around the house even... :)

Edit: using py2exe, the python application will compile down to a .exe that doesn't require a python environment, so there isn't nearly as much associated baggage as I had originally thought with respect to developing .py on windows.
 
Well I don't have a bloody clue how to do windows programming, so this is good.

Step #1: the spec...

Fans: Four fan headers, each supporting RPM monitoring and fan speed control.
Power: 3.5" floppy drive connector? (+5V, +12V required)
Connectivity: SMBus, USB, serial?
Extra capabilities?
 
Did a quick google search for pwm+usb and found these guys. Looks like you could take this and build an amp ckt to go from 0...3.3V to 0...12V fairly easily. It is rather pricey, though. :(
 
gee said:
Well I don't have a bloody clue how to do windows programming, so this is good.

Step #1: the spec...

Fans: Four fan headers, each supporting RPM monitoring and fan speed control.
Power: 3.5" floppy drive connector? (+5V, +12V required)
Connectivity: SMBus, USB, serial?
Extra capabilities?

From what I understand, RPM monitoring could be difficult. PWM tends to screw up the tach. If we could do the RPM monitoring though, it should be pretty easy to frequency match the fans to reduce noise. I'm not sure how effective that would be, but it would probably be pretty easy to code :).

For connectivity, I'd guess USB or SMBus. I think SMBus is pretty easy to talk to, and with one of the FTDI chips USB is pretty easy too. Serial is also easy, but it seems that more and more computers are coming with 0 or 1 serial port.
 
what about a PIC? They are programmable via the serial port.

Or maybe just send pulses over the serial port, have it run to a mosfet or two, and speed up or slow down the pulses to change the fan speed. serial ports can communicate up to 56k, right?
 
bob said:
what about a PIC? They are programmable via the serial port.

Or maybe just send pulses over the serial port, have it run to a mosfet or two, and speed up or slow down the pulses to change the fan speed. serial ports can communicate up to 56k, right?

I'm thinking something like a PIC is probably a good plan. Maybe an Atmel (only because I have an atmel dev board and experience with it). That'd be better that just straight serial port control with a mosfet, because you can predict what will happen when the power first comes on before windows loads up. Who knows what crazy signals windows will send out on the serial port when it's trying to autodetect hardware you might have.
 
fat-tony said:
From what I understand, RPM monitoring could be difficult. PWM tends to screw up the tach. If we could do the RPM monitoring though, it should be pretty easy to frequency match the fans to reduce noise. I'm not sure how effective that would be, but it would probably be pretty easy to code :).

For connectivity, I'd guess USB or SMBus. I think SMBus is pretty easy to talk to, and with one of the FTDI chips USB is pretty easy too. Serial is also easy, but it seems that more and more computers are coming with 0 or 1 serial port.
I'm all for having programmable fan speeds. And the ability to do "digital PLL' control to sync fans together would be sweet - this is from a former BP6/2xGolden Orb owner.

Indeed, PWM will screw up the tach signal. To save some heat I could use an array of TPS54350 chips or something, but that's an expensive solution. I was thinking of just using linear regulation - use a 4 channel I2C/SPI DAC, 4-channel op-amp and four heatsunk P-channel MOSFETs to make a source follower with feedback. This way the tach stays intact. And the heat won't be bad, it's the same as any 4-way, 5.25" bay fan controller.

Microchip has a good selection of microcontrollers with both USB and I2C, which will elegantly handle both USB and SMBus operation. Atmel has a few C51's that can do the same; unfortunately their AVR-USB parts are only available in SRAM or mask ROM.
 
Alrighty! I did some searching on analog.com and it seems that there are definitely some cheap 2-channel 8-bit SPI/I2C DAC chips available (under $2USD each). An 8-bit DAC should give us... 0.0468V resolution, which I figure is probably sufficient. Moving to a 10-bit DAC doesn't make too much of a cost difference and would drop that down to ~0.01V.

Now, to pick a processor. I'm fine with PIC if you're comfortable with it. C51 works for me too (I've actually used C51 a little bit, but most experience is with AVR). Basically as long as I can write a few bytes to whatever bus to talk to it, I'm fine :D
 
I vote USB or Serial :) smbus means jury riggin something off the memory slots for us unfortunates without an SMbus header.
 
Autochthon said:
I vote USB or Serial :) smbus means jury riggin something off the memory slots for us unfortunates without an SMbus header.

Hmmm that's true... Really... I think I fall under that category too... Hmmm...

I also vote USB.
 
I found a 4-ch/8-bit TI DAC a while ago, SPI, that was perfect for this... cheap too. Combine it with a $1 quad rail-rail op-amp and four IRF9Z24N MOSFETs and you have 4 channels of fan control, adjustable from 0 to 12 volts.

I've got my eyes on the PIC18F2455. Built in USB and the timer capabilities of the chip make it perfect for what we want to do. The CCP units can do very accurate measurement of two fan speeds, and two fans connected to the CCP's can be very easily synchronized because you can basically use the thing as a PLL phase detector. Also, the Port B interrupt capability allows at least two more fans to be monitored.

I've got an ICD2 which works with this chip. Only thing is, I lack a C compiler for the 18x parts - and I don't have a clue how USB works.

So total parts count... PCB, discrete R/C's, 18F2455, ADM101 RS232 IC, quad DAC, quad op-amp, four mosfets... four fan headers and a floppy power connector. It'll be cheap.

I'm on vacation right now and I'm trying to escape this electronics stuff. I'll work on it next week.
 
Awesome! Enjoy the vacation! I'm gonna be running around and then going on a quick holiday too.
 
I believe there are digital potentiometers that can take a serial input. One of those could drive either a very simple PWM or voltage control circuit.

As far as usb, I think it uses a protocol that tells the os various things like what it is and how much power it uses.
 
hey! forgot about this project.

I'm finishing a nixie clock right now, i'll be another week or so before i can get into this.
 
no problem :). I've been super busy with school too. Nixie clock sounds awesome :D
 
fat-tony said:
no problem :). I've been super busy with school too. Nixie clock sounds awesome :D
I'll make a thread on it when it's done. I'm using four Russian IN14 nixies and every available pin on a surface mount ATMega8. :D
 
Back
Top