AlphaBot: Linienverfolger PD-Regler: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „'''Autor:''' Prof. Dr.-Ing. Schneider right|550px == Inhalt des 9. Termins == * Wir wiederholen di…“ |
Keine Bearbeitungszusammenfassung |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
[[Datei:AlphaBot 550px.gif|right|550px]] | [[Datei:AlphaBot 550px.gif|right|550px]] | ||
== Inhalt des | == Inhalt des 11. Termins == | ||
* Wir wiederholen die Struktur des 2-Punkt-Reglers. | * Wir wiederholen die Struktur des 2-Punkt-Reglers. | ||
* Wir messen und visualisieren die Laufzeit und die Zykluszeit. | * Wir messen und visualisieren die Laufzeit und die Zykluszeit. | ||
* Wir programmieren einen P-Regler. | * Wir programmieren einen P-Regler. | ||
* Anschließend erweitern wird den P-Regler zum PD-Regler für eine sanfte Spurverfolgung. | * Anschließend erweitern wird den P-Regler zum PD-Regler für eine sanfte Spurverfolgung. | ||
* Wir legen die Reglerparameter systematisch aus und erfreuen uns am Ergebnis! | * Wir legen die Reglerparameter systematisch aus und erfreuen uns am Ergebnis (s. Video rechts)! | ||
== Quelltext == | == Quelltext == | ||
Aktuelle Version vom 2. Juni 2022, 19:12 Uhr
Autor: Prof. Dr.-Ing. Schneider

Inhalt des 11. Termins
- Wir wiederholen die Struktur des 2-Punkt-Reglers.
- Wir messen und visualisieren die Laufzeit und die Zykluszeit.
- Wir programmieren einen P-Regler.
- Anschließend erweitern wird den P-Regler zum PD-Regler für eine sanfte Spurverfolgung.
- Wir legen die Reglerparameter systematisch aus und erfreuen uns am Ergebnis (s. Video rechts)!
Quelltext
/* Bibliotheken hinzufügen */
#include "AlphaBot.h" // Arduino Bibliothek für die Motoren einbinden
#include "TRSensors.h" // Tracker Sensor Bibliothek
AlphaBot Alf = AlphaBot(); // Instanz des AlphaBot wird erzeugt
TRSensors trs = TRSensors(); // Instanz des Sensors wird erzeugt
#define NUM_SENSORS 5 // 5 Tracker Sensoren, Daten via I2C
unsigned int Messwerte[NUM_SENSORS]; // Meswert Array wird angelegt
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // Achtung hohe Geschwindigkeit für den seriellen Monitor
KalibriereLinienVerfolger(); // kalibrierung des Linienverfolgers
Serial.println("SETUP beendet");
}
void loop() {
unsigned int position = trs.readLine(Messwerte);
Serial.println(position); // Istwert ausgeben
/* Hier entsteht der PD-Regler */
}
void KalibriereLinienVerfolger() {
Serial.println("Kalibrierung startet für 10s...");
for (int i = 0; i < 400; i++) // make the calibration take about 10 seconds
{
trs.calibrate(); // reads all sensors 10 times
}
Serial.println("Kalibrierung beendet");
// Ausgabe der Minimalwerte während der Kalibrierung
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(trs.calibratedMin[i]);
Serial.print(' ');
}
Serial.println();
// Ausgabe der Maximalwerte während der Kalibrierung
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(trs.calibratedMax[i]);
Serial.print(' ');
}
Serial.println();
delay(1000);
}

Hausaufgaben bis zum 12. Termin
- Stimmt Euren Regler so ab, dass die Fahrt geschmeidig ist.
- Was sind die besten Parameter?
- Ist eine Fahrt in beide Richtungen möglich?
Hinweise:
- Einen Artikel zum Linienverfolger findet Ihr hier.
- Die Jumper von Block F müssen alle links gesetzt sein.
→ zurück zum Hauptartikel: Projekt Alf