Ich habe meinen PWM-Pin wie in diesem Tutorial mit meinem Arduino verbunden
http://fritzing.org/projects/reading-pc-fan-rpm-with-an-arduino/
Es funktioniert einwandfrei. Ich kann die Geschwindigkeit anhand einer Skizze von dieser Website ablesen und einstellen:
http://www.beefrankly.org/blog/2011/12/21/read-out-4-pin-cpu-fan-speed/
int fanPulse = 0;
unsigned long pulseDuration;
void setup()
{
Serial.begin(9600);
pinMode(fanPulse, INPUT);
digitalWrite(fanPulse,HIGH);
}
void readPulse() {
pulseDuration = pulseIn(fanPulse, LOW);
double frequency = 1000000/pulseDuration;
Serial.print("pulse duration:");
Serial.println(pulseDuration);
Serial.print("time for full rev. (microsec.):");
Serial.println(pulseDuration*2);
Serial.print("freq. (Hz):");
Serial.println(frequency/2);
Serial.print("RPM:");
Serial.println(frequency/2*60);
}
void loop()
{
analogWrite(3,20);
delay(5000);
readPulse();
analogWrite(3,50);
delay(5000);
readPulse();
analogWrite(3,100);
delay(5000);
readPulse();
analogWrite(3,200);
delay(5000);
readPulse();
analogWrite(3,255);
delay(5000);
readPulse();
}
Es scheint mir, als ob ich nur Werte größer als 127 und Werte kleiner als 127 eingeben kann. Dazwischen gibt es keine Schritte. Der Lüfter wird nicht langsamer, wenn ich von 126 auf 0 oder von 128 auf 255 gehe.
Einige Ergebnisse, die ich bekomme:
100:
pulse duration:19058
time for full rev. (microsec.):38116
freq. (Hz):26.00
RPM:1560.00
0:
pulse duration:19160
time for full rev. (microsec.):38320
freq. (Hz):26.00
RPM:1560.00
127:
pulse duration:9032
time for full rev. (microsec.):18064
freq. (Hz):55.00
RPM:3300.00
255:
pulse duration:9151
time for full rev. (microsec.):18302
freq. (Hz):54.50
RPM:3270.00
Habe ich einen Fehler gemacht oder ist es möglich, dass mein Lüfter keine genauen Werte akzeptiert? Können Sie 4 kabelgebundene Lüfter empfehlen, die ich für diesen oder einen anderen Weg verwenden könnte? Ich dachte darüber nach, einen SG2524N zu verwenden, um einen zweiadrigen Motor zu steuern, aber ich habe keine Erfahrung damit. Danke für deinen Rat.
Lüfter verwenden keine Standard-PWM-Frequenzen. Die PWM-Steuerfrequenz muss 25 kHz betragen. Ein 16-MHz-Arduino kann dies relativ einfach per Software tun. Suchen Sie einfach nach "4-Draht-Lüfter Arduino" und es gibt einige Beiträge dazu, einschließlich Beispielcode zum Einstellen der Prescaler-Frequenz, sodass die Ausgangs-PWM bei 25 kHz liegt.
Ignacio Vazquez-Abrams
Wolfen