AlphaBot: Linienverfolger PD-Regler
Autor: Prof. Dr.-Ing. Schneider
Inhalt des 9. 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!
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