Code für temp.abhängige Lüfteransteuerung

Hallo
wär jemand so nett mal über den Code für die Ansteuerung von einem Lüfter drüber zugucken?
Der Lüfter soll abhängig von einer bestimmten Temperatur angehen, ansonsten einfach ausbleiben. Wusste nicht genau wie ichs umsetzen sollte, daher dachte ich mir am besten einfach eine if else Anweisung.
Die Temperatur wird von einem Thermoelement erfasst. Das habe ich aus dem Code hier mal rausgelassen.

const int pinPWM = 9;

double temp;

void setup()
{
  pinMode(pinPWM, OUTPUT);
  
  TCCR2B |= (1<<CS21); //Prescaler auf 8
  TCCR2A |= (1<<WGM20 | (1<<WGM21); // Fast PWM Mode
  
  TCCR2A |=(1<<COM2A1); //nicht invertierte PWM
  
  OCR2A = 79; // Compare Match Wert für 25kHz
 
}

void loop()
{
  if (temp < 210)
  {
  OCR2A = 0;
  }
  else
  {
  OCR2A =79;
  }
}

PWM brauchst du nicht per Hand zu machen. Die Arduino IDE erledigt das für dich:

Das läuft standardmäßig mit nur 490Hz, aber den Prescaler kannst du auch überschreiben:
http://playground.arduino.cc/Main/TimerPWMCheatsheet

Eventuell solltest du vielleicht eine Hysterese von 1-2 Grad einbauen, damit der Lüfter am Schaltpunkt nicht immer ein und aus geht

Das ist praktisch, wenn man sich die Mühe mit den Timern sparen kann.

Bzgl der Temperatur würde ich es dann so versuchen, wenn ich das richtig verstanden habe, unabhängig von der PWM.

void loop()
{
  if (temp < 210)
  {
  OCR2A = 0;
  }
  else if (temp > 210)
  {
  OCR2A =79;
  }
}

Nein

if (temp > 210) PWM ON
if (temp < 205) PWM OFF

Grüße UWe

So kann man die Hysterese mit einer Konstante einstellen und bei Bedarf anpassen:

const int HYSTERESE = 2;

void loop()
{
  if (temp <= 210 - HYSTERESE)
  {
      analogWrite(...)
  }
  else if (temp >= 210 + HYSTERESE)
  {
     analogWrite(...)
  }
}

Muss man ausprobieren. Das hängt auch davon ab wie schnell sich die Temperatur ändert.

Außerdem musst du die Temperatur auch nicht ständig messen. Wenn das jede Sekunde oder noch langsamer geschieht, reicht das auch.

Alles klar. Danke für Eure Antworten Ich werde es mal so ausprobieren.