Ich bin auf der Suche nach 2 Evercool EC8015HH12BP 80x10mm (4-Draht) PWM-Lüftern. Ich betrachte jedoch die Steuerung der Lüftergeschwindigkeit mit dem Arduino über die PWM-Pins.
Ich habe das folgende Diagramm gefunden, das anscheinend das ist, wonach ich suche, um den Lüfter an den Arduino anzuschließen:
Der Code, den ich denke, dass ich verwenden kann, ist dieser:
int pwmPin = 9; // digital pin 9
int pwmVal = 10;
void setup()
{
pinMode(pwmPin, OUTPUT); // sets the pin as output
Serial.begin(9600);
}
void loop()
{
if (pwmVal != 255) {
analogWrite(pwmPin, pwmVal);
//pwmVal += 10;
Serial.print(pwmVal); // Print red value
Serial.print("\n"); // Print a tab
} else {
Serial.print('at max high'); // Print red value
Serial.print("\n"); // Print a tab
}
delay(1000);
}
Ich nehme an, dass die PWM im Bereich von 0-255 liegen würde, wenn ich sie vom Arduino aus schreibe? Ich werde den DS18B20 Thermometer-Temperatursensor verwenden, um zu sehen, wie schnell ich den Lüfter drehen muss.
Die Lüftergeschwindigkeit (momentan maximal 12 V) wird jedoch nie ein bisschen langsamer.
Ich verwende D9 auf dem Arduino Nano ATmega 328.
Die Referenz ist hier für das Board (falls ich den Board-Pin falsch habe): Geben Sie hier die Linkbeschreibung ein
Jedes hilfreiche Feedback wäre großartig!
Eine Sache ist das zu beachten
if (pwmVal != 255) {
pwmVal += 10;
...
wird nicht bei 255 aufhören, da pwmVal 250, dann 260 usw. sein wird. Eine Möglichkeit, dies zu beheben, wäre Schreiben
if(pwmVal < 255)
{
pwmVal += 10;
}
else
{
pwmVal = 255;
}
Übrigens, Ihr Code ist geschrieben, wenn DEBUG auf 0 gesetzt ist, wird nichts passieren (pwmVal wird auf 0 gesetzt). Wenn DEBUG auf 1 gesetzt ist, erhöht sich die Lüftergeschwindigkeit mit einer Rate, die durch "Warten" festgelegt wird (was in diesem Code nicht definiert ist), bis sie ihr Maximum erreicht. Der Wert wird auch an die serielle Schnittstelle ausgegeben.
Die PWM-Frequenz muss laut formfactors.org/developer/specs/4_Wire_PWM_Spec.pdf zwischen 21 kHz und 28 kHz liegen. Ich weiß nicht, wie man die PWM-Frequenz auf einem Arduino einstellt, aber ich vermute, dass sie eingestellt werden muss.
Das gleiche Dokument schlägt vor, dass Sie möglicherweise Ihre Sense- und PWM-Pins umgekehrt haben (obwohl Ihr Diagramm und Ihr Foto zwei verschiedene Dinge zeigen!). Ich kann dies nicht überprüfen oder die Verantwortung für Ihren Lüfter übernehmen, wenn es falsch ist.
Entschuldigung, dass ich dies als weitere Antwort hinzugefügt habe, aber ich durfte Scott Seidmans Antwort keinen Kommentar hinzufügen und dem Kommentar von gbmhunters keine weiteren Informationen hinzufügen.
Die PWN-Frequenz kann über die PWM-Register gesteuert werden, was auch erforderlich ist, wenn Sie den Arduino als IR-Sender, wie eine programmierbare Fernbedienung, verwenden möchten.
Weitere Informationen zu den PWN-Registern finden Sie in diesem Beitrag, ursprünglich geschrieben von Ken Shirriff: https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
Scott Seidmann
StealthRT
Scott Seidmann
StealthRT
Scott Seidmann
Scott Seidmann