← Kapitel 11: Hysterese | ↑ Übersicht | Kapitel 13: Übungsaufgabe einstellbarer Dämmerungsschalter →

Kapitel 12: Dämmerungsschalter

Früher waren Dämmerungsschalter sehr beliebt. Sei es für die Straßenbeleuchtung oder für die weihnachtlichen Lichterketten auf dem Balkon.

So ein Dämmerungsschalter kann sehr einfach selber realisiert werden. Wir brauchen dazu lediglich zwei Widerstände, einer davon muss lichtabhängig sein. Wer dazu mehr wissen will kann alles über lichtabhängige Widerstände in diesem Wikieintrag nachlesen.

Nun wird auch klar, warum wir im vorigen Kapitel gelernt haben, was eine Hysterese ist. Angenommen, wir verwenden diesen Dämmerungsschalter, um abends das Licht einzuschalten:

  • Es wird langsam dunkler
  • Es ist so dunkel, dass unser Dämmerungsschalter das Licht einschaltet
  • Nun sieht der Fotowiderstand das gerade eingeschaltete Licht und schaltet es wieder aus
  • Es ist wieder dunkel und das Licht wird wieder eingeschaltet

Dies würde sich beliebig oft und sehr schnell wiederholen und somit zu einem ungewollten Blitzlicht führen. Durch eine ausreichende Hysterese zwischen den Umschaltpunkten kann das vermieden werden.

Der Aufbau für unseren Dämmerungsschalter sieht so aus:

Aufbau Dämmerungsschalter

  • 10kOhm zwischen D28 und G28
  • LDR zwischen J28 und J30
  • rotes Kabel von der linken Spannungsschiene nach A28
  • blaues Kabel von der rechten Masseschiene nach H30
  • graues Kabel von A0 nach H28

Das Licht, das wir bei Dunkelheit einschalten wollen, ist die grüne LED.

Wir wollen, dass das Licht irgendwann zwischen den Helligkeitsstufen „Wohnzimmer“ und „Straßenbeleuchtung“ einschaltet. Die Spannungen sind (wie hier zu sehen) zwischen 2,5 und 4,16V. Wir nehmen jetzt einfach mal den Wert 3,5V. Die Hysterese soll nun ±0,3V betragen. Wie wir hier gelernt haben sind die Analogwandlerwerte also:

SpannungWandlerwert
3,5V 715
0,3V 60

Wir können den Code vom letzten Beispiel fast 1:1 verwenden:

kapitel12_daemmerungsschalter.ino
#define LED_GRUEN 11
#define ANALOGPIN A0
#define HYSTERESE 60
#define SCHWELLWERT 715
 
int hell = 1;
int messwert = 0;
 
void setup()
{
  pinMode(LED_GRUEN, OUTPUT); // Pin auf Ausgang
  pinMode(ANALOGPIN, INPUT);  // Pin auf Eingang
  if(analogRead(ANALOGPIN)<SCHWELLWERT)
  {  // Es ist hell
    hell = 1;
    digitalWrite(LED_GRUEN, LOW); // gruene LED aus
  }
  else
  {  // Der Wert ist im roten Bereich, kann also fallen
    hell= 0;
    digitalWrite(LED_GRUEN, HIGH); // gruene LED an
  }
}
 
void loop()
{
  messwert = analogRead(ANALOGPIN);
  // Lieber mehr Klammern setzen als zu wenig, so ist die Reihenfolge sicher definiert:
  if((hell == 1) && (messwert > (SCHWELLWERT + HYSTERESE)))
  { // Es wird dunkel:
    digitalWrite(LED_GRUEN, HIGH); // gruene LED an
    hell = 0;
  }
  else if((hell == 0) && (messwert < (SCHWELLWERT - HYSTERESE))) 
  { // Es wird wieder hell:
    digitalWrite(LED_GRUEN, LOW); // gruene LED aus
    hell = 1;
  }
  else
  { // nichts tun
  }
}

Die Werte SCHWELLWERT und HYSTERESE können natürlich noch angepasst werden um ein gutes Ergebnis zu erzielen. Hier im Büro von eHaJo funktionieren folgende Werte am Besten:

  • SCHWELLWERT 500
  • HYSTERESE 200

Nun bietet sich eine Übungsaufgabe an: Da der Schwellwert abhängig vom Widerstand und von der gewünschten Helligkeit ist, wäre es sehr sinnvoll, wenn man den nachträglich, ohne Programmierung, ändern könnte.

Besteht eine Möglichkeit, dies zu tun?

Ja. Wir können einen weiteren Analogeingang verwenden um mit Hilfe eines Potis den Schwellwert einzustellen.

Wir kommen also zu Kapitel 13: Übungsaufgabe einstellbarer Dämmerungsschalter