Hi all,
I'm working on a pc fan controller to replace my manual controlled laptron fc-5.
I'm a professional programmer so fortunately I'm strong on programming side but I'm kinda new in electronics and microcontrollers, so I really need your help.
After some weeks on google, and many many tests combining all that I red and the circuits of this two guides:
this one also was interesting:
https://www.maximintegrated.com/en/app-notes/index.mvp/id/1784
I managed to control the speed of 3wire pc fan (actually 3x0.62A connected in parallel or just one 1000rpm fan) and correctly reading rpm speed!
The easy part was control the speed, the real trouble was filter out the pwm generated EMI in the tacho.
You can see the working schematic in the attached picture (qfet-schema.png).
5v from the schema is arduino +5v out, ground is common between pc power supply and arduino.
After that I made another circuit to control 4wire pwm fans, really easy this time, rpm red with no problem. Schema attached (picture pwm-schema.png)
For both the circuit I needed also to change, on the Arduino Mega that I'm using, the pwm frequency to 31Khz to moving the electrical noise in the not audible range.
The problem in which I'm stuck right now, is when I connect the two fans together I get wrong rpm, but right real speed control in every situation.
Detail of the problem:
- both PWM at 100% duty cycle, rpm red correctly
- pwm of PWM fan at 0%, rpm of 3wire fan at any pwm duty cycle
- both PWM at about 50% duty cycle, rpm of PWM fan is correct, rpm of 3wire fan alligned or over the pwm fan
- same circuit, but pwm fan with just ground disconnected, 3 wire fan rpm red correctly at any pwm duty cycle
- same circuit, but pwm fan with just tacho disconnected, 3 wire fan rpm red alligned or over the pwm fan
Code that I use to red fan rpm is also attached, I instantiate two object of my FanTachometer class with the two input pins and two different interrupt index (0 and 1). My guess is that EMI from PWM fan arrives to 3wire fan tacho from the common ground. But I have no idea how to fix this.
Any suggestion or help is really appreciated! I hope that things is clear and if anyone need more details or other stuff to understand my work I'm ready to explain all that is not clear.
Thanks
FanTachometer.cpp (3.01 KB)
FanTachometer.h (2.08 KB)