Mikrocontroller/ Aufgaben und Übungen

Aus Wikibooks

Mess-, Steuerungs- und Regelungstechnik[Bearbeiten]

Darstellung des zeitlichen Verlaufes der Heizkörpertemperatur und der Raumtemperatur für einen Sollwertsprung ohne Wärmeenergiespeicherung der Raumwände.
Mechanische Regelung: Fliehkraftregler zur Regelung der Drehzahl einer Dampfmaschine (nicht dargestellt).
Rechts: Stellglied (Drosselklappe in der Dampfzuleitung).
Links: Messglied und Regler als Einheit (Fliehkraftpendel auf einer Drehzahl-Messwelle).
Mitte: Gegenkopplung (horizontaler Hebel und vertikale Stange), kleinere Drehzahl vergrößert die Drosselöffnung.
Der Sollwert kann durch Längenänderung der vertikalen Stange (rechts, zur Drosselklappe) verändert werden.
Prinzipskizze Bimetall: Metall 1 hat in diesem Fall den größeren Längenausdehnungskoeffizienten.
  • Finde Beispiele für Steuerungen und Regelungen und arbeite den Unterschied heraus.
  • Balanciere einen Tischtennisball auf einer Ebene. Worin liegen bei dieser „Regelung“ die Ursachen dafür, dass man die Kugel nicht in Ruhe an vorgegebener Stelle halten kann? Was müsste man an der Regelung verbessern, damit die Abweichung von der Soll-Position kleiner wird?
  • Betrachte die im Bild dargestellte mechanische Drehzahlregelung einer Dampfmaschine.
  1. Erläutere die Funktionsweise.
  2. Warum eignet sich die Regelung nicht, um die Drehzahl lastunabhängig auf eine feste Drehzahl zu stabilisieren?
  • Betrachte das Schaubild ‚Sprungantwort Heizkörpertemp./Raumtemperatur‘ und erkläre die im Diagramm dargestellten Vorgänge.
  • Ein Bügeleisen wird über einen Bimetall-Schalter geregelt.
  1. Erkläre das Funktionsprinzip.
  2. Zeichne die Zeit-Temperatur-Kurve und die Zeit-Strom-Kurve des Systems direkt nach dem Einschalten sowie wenn nach hinreichend langer Zeit die Temperatur deutlich reduziert wird.
  • Konstruiere eine Blumengießanlage sowohl mit elektronischer Regelung als auch rein mechanisch.

← Mess-, Steuerungs- und Regelungstechnik

Grundwissen Elektronik[Bearbeiten]

Verschiedene Schaltungen von Widerständen.

Schaltungen von Widerständen[Bearbeiten]

Betrachte die abgebildeten Schaltungen von Widerständen. Bearbeite für jede der Schaltungen die folgenden Aufgaben:

  • Zeichne die Schaltung ab.
  • Berechne den resultierenden Widerstand der Schaltung.
  • Wo überall in der Schaltung fließt der maximale Strom?
  • Zeichne Messgeräte ein:
  1. Spannungsmessung am großen Widerstand,
  2. Messung des Stroms, der durch den großen Widerstand fließt.
  • Berechne die Spannung am und den Strom durch den großen Widerstand.
  • Welche Widerstände darf man jeweils vertauschen, ohne dass sich eines der Ergebnisse ändert?

Falls Labor vorhanden:

  • Baue die Schaltung auf und vergleiche Messung und Rechnung. Trage dazu die Werte in eine Tabelle ein.
  • Berechne die prozentuale Abweichung von Rechnung und Messung.
Lösung

Teilergebnisse resultierende Widerstände: 143 Ω, 2150 Ω, 363 Ω und 831 Ω.

← Grundschaltungen von Widerständen

Widerstände kombinieren[Bearbeiten]

Zur Verfügung stehen fünf Widerstände. Wie muss man diese kombinieren, um möglichst genau einen resultierenden Widerstand von zu erhalten? Begründe, warum deine Lösung die beste Möglichkeit ist und es nicht noch eine bessere Kombination gibt.

← Grundschaltungen von Widerständen

Parallelschaltung[Bearbeiten]

Für die parallele Schaltung von zwei Widerständen gilt:

.

Stelle eine entsprechende Formel für drei parallel geschaltete Widerstände auf.

Lösung

Für die parallele Schaltung von drei Widerständen gilt:

.

← Grundschaltungen von Widerständen

Spannungsteiler[Bearbeiten]

Entwerfe einen Spannungsteiler so, dass an einer Spannungsquelle von eine Spannung von einem Volt abgegriffen werden kann. Die Spannungsquelle soll (bei unbelastetem Spannungsteiler) mit einem Strom von belastet werden.

← Spannungsteiler

Digitale und analoge Signale[Bearbeiten]

  1. Finde genaueres über analoge und digitale Signale heraus und erläutere die Unterschiede. Worin liegen Vor– und Nachteile?
  2. Warum ist bei der Erzeugung eines digitalen Signals mit einem einfachen Schalter ein Pull–Up bzw. Pull–Down Widerstand nötig?
  3. Was haben Pull–Up und Pull–Down Schaltung mit einem Spannungsteiler zu tun? Zeichne das Schaltbild der Pull–Up und Pull–Down Schaltung als Spannungsteiler mit jeweils zwei Widerständen und gib die Werte dieser Widerstände für beide Schalterpositionen an.
  4. Wie wird ein analoges Signal vom Arduino–Board intern weiterverarbeitet?
  5. Erkläre wie ein Potentiometer als verstellbarer Spannungsteiler funktioniert.

← Digitale und analoge Signale

Programmierung[Bearbeiten]

Diagramme aus Programm[Bearbeiten]

Erstelle

  • einen Programmablaufplan,
  • ein Nassi-Shneiderman-Diagramm,

für das folgende Programm:

// constants:
#define BUTTONPIN 2     // the number of the pushbutton pin
#define LEDPIN    10    // the number of the LED pin

// variables:
int buttonState = 0;    // variable for reading the pushbutton status
int LEDstate = 0;       // variable for keeping the LED state

void setup() {
  pinMode(LEDPIN, OUTPUT);        // initialize the LED pin as an output
  pinMode(BUTTONPIN, INPUT);      // initialize the pushbutton pin as an input
  digitalWrite(LEDPIN, LOW);
}

void loop() {
  buttonState = digitalRead(BUTTONPIN);   // read the state of the pushbutton
  if (buttonState == HIGH){               // pushbutton is pressed
    if (LEDstate == LOW) {                // switch LEDstate
      LEDstate = HIGH;
    } else {
      LEDstate = LOW;
    }
    digitalWrite(LEDPIN, LEDstate);       // switch LED on/off
    delay(500);
  }
}
  •  Erkläre seine Funktion und beschreibe, was bei dauerhaftem betätigen des Tasters passiert.
  • Verändere/erweitere das Struktogramm und anschließend das Programm so, dass dauerhaftes Betätigen des Tasters nicht zum periodischen An- und Ausschalten der LED führt, sondern ein erneutes Umschalten erst nach Loslassen des Tasters und darauf folgendem Drücken erfolgt.
Lösung
// constants:
#define BUTTONPIN 2     // the number of the pushbutton pin
#define LEDPIN    10    // the number of the LED pin

// variables:
int buttonState = 0;    // variable for reading the pushbutton status
int LEDstate = 0;       // variable for keeping the LED state
int active = 1;         // variable for keeping the activity status

void setup() {
  pinMode(LEDPIN, OUTPUT);        // initialize the LED pin as an output
  pinMode(BUTTONPIN, INPUT);      // initialize the pushbutton pin as an input
  digitalWrite(LEDPIN, LOW);
}

void loop() {
  buttonState = digitalRead(BUTTONPIN);      // read the state of the pushbutton
  if (buttonState == HIGH && active == 1) {  // pushbutton is pressed and active
    active = 0;                              // deactivate
    if (LEDstate == LOW) {                   // switch LEDstate
      LEDstate = HIGH;
    } else {
      LEDstate = LOW;
    }
    digitalWrite(LEDPIN, LEDstate);          // switch LED on/off
  } 
  if (buttonState == LOW) {
    active = 1;                              // button released, activate again
  }
}

← Programmplanung und Dokumentation

Programm aus Diagramm[Bearbeiten]

Beispiel eines Programmablaufplans.
Der euklidische Algorithmus zur Berechnung des größten gemeinsamen Teilers zweier Zahlen als Nassi-Shneiderman Diagramm.

Übersetze den abgebildeten

  • Programmablaufplan,
  • das Nassi-Shneiderman Diagramm,

in ein Arduino-Programm. Die Ein- und Ausgabe soll jeweils über den seriellen Monitor erfolgen.

← Programmplanung und Dokumentation