Arbeitsblatt 2

Aufgabe 1 - NTC Thermistor

Bestimmte Messpunkte

Mit einem einfachen Programm können wir uns nun immer den aktuellen Rohwert des Sensors ausgeben lassen:

int temperaturPin = A0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
 
void loop() {
 
  Serial.println(analogRead(temperaturPin));
 
}
MesspunktErgebnis
20 Grad Celsius500
30 Grad Celsius600

Aus diesen Werten lassen sich mit der map-Funktion beliebige Werte berechnen. In diesem Fall:
Serial.println(map(0, 20, 30, 500, 600)); ⇒ 300
Serial.println(map(50, 20, 30, 500, 600)); ⇒ 730

Wir können den Code nun so erweitern, dass wir im Serialmonitor immer die aktuelle Temperatur in Grad Celsius zurückerhalten:

int tempPin = A0;
int tempraw = 0;
int temphuman = 0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
 
void loop() {
 
  //Fixe Werte: 20 Grad: ca. 500, 30 Grad: 600. Diese können nun mithilfe von map zu Gradzahlen konvertiert werden
  //map(value, fromLow, fromHigh, toLow, toHigh)
  tempraw = analogRead(tempPin)
  temphuman = map(tempraw, 500, 600, 20, 30)
  Serial.println(temphuman);
 
 
}

Die minimale und maximale Temperatur des NTC MF58 1k Ohm sind -55°C ~ 200°C.

Aufgabe 2 - Schaltung mit Relais

Versuchsaufbau


Bild oben: Relais aus (Temperatur unter 25 Grad Celsius) Bild unten: Relais an (Temperatur bei Berührung über 25 Grad Celsius)

Code

relais.ino
int tempPin = A0;
int relaisPin = 2;
int tempraw = 0;
int temphuman = 0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(relaisPin, OUTPUT);
}
 
void loop() {
  // Auslesen des Sensorwerts
  tempraw = analogRead(tempPin);
  // Fixe Werte: 20 Grad: ca. 520, 33 Grad: 600. Diese können nun mithilfe von map zu Gradzahlen konvertiert werden
  // map(value, fromLow, fromHigh, toLow, toHigh)
  temphuman = map(tempraw, 500, 600, 20, 30);
 
  // Wenn die Temperatur höher oder gleich 25 ist...
  if (temphuman >= 25) {
    // Wird die LED eingeschaltet.
    digitalWrite(relaisPin, HIGH);
    }
  else if (temphuman <= 23){
    // Ist die Temperatur geringer oder gleich 23 Grad,
    //  wird die LED wieder ausgeschaltet.
    digitalWrite(relaisPin, LOW);
    }
 
}

Aufgabe 3: Beispiele regeln vs. steuern

Regeln vs Steuern

Steuern bedeutet, ein System von extern zu beeinflussen. (z.B. Fernbedienung bei einem Modellflugzeug.) Regeln bedeutet, dass sich ein System selbst, also durch interne Faktoren wie zum Beispiel der Ausgabe eines Sensors beeinflusst.

Regelkreis und Hysterese

In einem Regelkreis wird die Stellgrösse von einer Störgrösse beeinflusst. Beispielsweise bei einem Boiler: Als Steuergrösse wird eine Soll-Temperatur definiert. Um diese zu erreichen, wird ein Heizsystem aktiviert. Ist diese erreicht, wird das Heizsystem ausgeschaltet. Um ein „flippern“ zu vermeiden, wird das Heizsystem allerdings nicht sofort aktiviert, sondern erst nach dem Unterschreiten einer Mindesttemperatur. Alternativ kann ein Zustandswechsel auch durch eine Zeitverzögerung verzögert werden um ein „flippern“ der Zustände zu verhindern. Ersetzen wir die in der Aufgabe 2 gesteuerte LED durch ein Heizsystem, würde die Temperatur im Raum immer zwischen 23 und 25 Grad betragen.

Lessons learned

Im Gibb-Arduino Modul haben wir uns vereits mit Finite State Machines beschäftigt. Der Begriff Hysterese war mir allerdings neu.