Drehzahl Steuern mit Arduino PWM – Papbst ebm G1G133-DE19-15* Lüfter

Versuch die Drehzahl eines Papbst ebm G1G133-DE19-15* Lüfters mit einer Arduino über Pulsweitenmodulation PWM zu steuern. Inklusive Schaltpläne, C Code.

Drehzahl Steuern mit Arduino

Zum Glück hatte ich noch etwas ‘Leistungselektronik’ von meinen Experimenten mit einer Lichtmaschine im Werkzeugkasten.
Mit dem enthaltenen MOSFET Transistor ist es definitiv kein Problem 24V / 2A zu schalten.
Pulsweitenmodulation mit Arduino ist ‘normalerweise’ mit einem Befehl umgesetzt.

Video vom Testlauf

Code Arduino Sketch

Ein Befehl und Arduino gibt ein PWM Signal aus.
Um den Lüfter in seinem Lauf zu bremsen eignete sich die Standard PWM Frequenz von 62500 HZ nicht.
Das führte bei mir dazu, dass der Motor je nach Pulsweite entweder An oder Aus war.
Ich denke mal das liegt am Lüfter-Motor selbst, der ja in sich mit einer Menge an Steuer Elektronik ausgestattet ist.
Mit dem Befehl TCCR1B = TCCR1B & 0b11111000 | 0x03; setze ich die PWM Frequenz auf knapp 500 HZ herunter. Siehe: http://forum.arduino.cc/index.php?topic=16612#msg121031

int Luefter = 10;          // the PWM pin the Luefter is attached to
int sensorValue = 250;
int oldsensorValue = 0;
volatile unsigned long count;
 
 
// the setup routine runs once when you press reset:
void setup() {
    //PWM Frequenz runter regeln
    //http://forum.arduino.cc/index.php?topic=16612#msg121031
    TCCR1B = TCCR1B & 0b11111000 | 0x03; //PWM Frequenz Pin10 - 488.28125 Hz Standard 31250 / 64
 
    Serial.begin(9600);
 
    // declare pin 'Luefter' to be an output:
    pinMode(Luefter, OUTPUT);
 
    setPwmFrequency(Luefter,32);
    analogWrite(Luefter, sensorValue);
}
// the loop routine runs over and over again forever:
void loop() {
 
 
  sensorValue = analogRead(A0)/4;
  if ( sensorValue > oldsensorValue + 1 || sensorValue < oldsensorValue - 1 ) {
    //print out the value you read:
    Serial.print("PWM------");
    Serial.println(sensorValue);
    analogWrite(Luefter, sensorValue);
 
    oldsensorValue = sensorValue;
  }
  count=0;
  delay(2000);
  Serial.print("gemessen-u/min--");
  Serial.println(count*15);
  delay(1);
}

Unruhiger Lauf

Wie im Video zu erkennen, läuft der Motor bei geringen Drehzahlen (bis 300 U/min) und bei höheren Drehzahlen (ab 1500) ganz normal.
Im Bereich dazwischen läuft der Motor nicht sauber.  Auf der folgenden Seite teste ich die Spannung mit einem Elko zu stabilisieren.
Die viele Technik im Motor selbst macht dieser relativ simplen Lösung der Ansteuerung mit einem PWM Signal einen Strich durch die Rechnung.