AM 11: PID-Regler: Unterschied zwischen den Versionen
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 78: | Zeile 78: | ||
=== Erfahrungen mit der bereitgestellten Software === | === Erfahrungen mit der bereitgestellten Software === | ||
Wird die [http://193.175.248.52/wiki/index.php/AM_13:_Ardumower_Hauptplatine_-_Software Hauptsoftware] in der Ardumowerkonfiguration kompiliert und aufgespielt, kann man mit Hilfe eines Tasters und eines Summers fünf verschiedene Modi für den Ardumower auswählen. Man hält den Taster gedrückt und die Anzahl der Piepser bis zum Loslassen des Tasters bestimmt den Modus des Ardumower. Der erste Modus ist das Mähen an sich. Dabei wird, sofern vorhanden eine zuvor eingestellte Messermodulation genutzt. Im zweiten Modus mäht der Ardumower ohne Messermodulation. Modus | Wird die [http://193.175.248.52/wiki/index.php/AM_13:_Ardumower_Hauptplatine_-_Software Hauptsoftware] in der Ardumowerkonfiguration kompiliert und aufgespielt, kann man mit Hilfe eines Tasters und eines Summers fünf verschiedene Modi für den Ardumower auswählen. Man hält den Taster gedrückt und die Anzahl der Piepser bis zum Loslassen des Tasters bestimmt den Modus des Ardumower. Der erste Modus ist das Mähen an sich. Dabei wird, sofern vorhanden eine zuvor eingestellte Messermodulation genutzt. Im zweiten Modus mäht der Ardumower ohne Messermodulation. Modus Drei ermöglicht das Fahren mit Fernsteuerung, Modus Vier lässt den Ardumower fahren ohne zu Mähen. Im fünften Modus sucht der Ardumower die Perimeterschleife und folgt dieser. In der Ardumower Mini Konfiguration gibt es nur den Fahrmodus. <br /> | ||
In beiden Konfigurationen kann man über die Serielle Schnittstelle auf ein Menü zugreifen, welches verschiedene Kalibrierungsmöglichkeiten, sowie einen Motorentest oder auch das Löschen von vorherigen Fehlermeldungen ermöglicht. Nach den allgemeinen Tests des Programms kommt es erneut zu Problemen bezüglich des PID-Reglers. Der gewählte Ansatz mit einem Gyro-Sensor zu arbeiten lässt sich mit der bestellten Hardware nicht über die OpenSource-Software realisieren. Grund dafür ist die fehlende Einbindung sowohl des GY521 als auch des ITG3200 auf der GY85-Platine. Der Code ist nur für den Gyro-Sensor L3G4200D auf der GY80 Platine erhältlich. Diese Information ist nicht im Shop ersichtlich aber wichtig um mit der OpenSource-Software und einem Gyro-Sensor arbeiten zu können.<br /><br /> | In beiden Konfigurationen kann man über die Serielle Schnittstelle auf ein Menü zugreifen, welches verschiedene Kalibrierungsmöglichkeiten, sowie einen Motorentest oder auch das Löschen von vorherigen Fehlermeldungen ermöglicht. Nach den allgemeinen Tests des Programms kommt es erneut zu Problemen bezüglich des PID-Reglers. Der gewählte Ansatz mit einem Gyro-Sensor zu arbeiten lässt sich mit der bestellten Hardware nicht über die OpenSource-Software realisieren. Grund dafür ist die fehlende Einbindung sowohl des GY521 als auch des ITG3200 auf der GY85-Platine. Der Code ist nur für den Gyro-Sensor L3G4200D auf der GY80 Platine erhältlich. Diese Information ist nicht im Shop ersichtlich aber wichtig um mit der OpenSource-Software und einem Gyro-Sensor arbeiten zu können.<br /><br /> | ||
Zeile 84: | Zeile 84: | ||
= Ergebnis = | = Ergebnis = | ||
Bei Ablauf des Projektzeitplans kann der PID-Regler auf Basis der Daten der Inertialnavigation die Geradeausfahrt des | Bei Ablauf des Projektzeitplans kann der PID-Regler auf Basis der Daten der Inertialnavigation die Geradeausfahrt des Ardumower Mini regeln. Da die Ansteuerung der Motoren des Ardumower Mini identisch zu der Ansteuerung der Motoren des Ardumower ist, wird diese geregelte Geradeausfahrt auch für den Ardumower funktionieren. Ein Test dieser Geradeausfahrt war im Rahmen des Projektes nicht mehr möglich. | ||
Insgesamt ist das Teilprojekt PID-Regler erfolgreich bearbeitet worden, da der Funktionstst des Reglers an der Testhardware erfolgreich war. Endgültig abgeschlossen werden konnte das Projekt nicht, da der Abschlusstest an der Originialhardware nicht vorgenommen wurde. | Insgesamt ist das Teilprojekt PID-Regler erfolgreich bearbeitet worden, da der Funktionstst des Reglers an der Testhardware erfolgreich war. Endgültig abgeschlossen werden konnte das Projekt nicht, da der Abschlusstest an der Originialhardware nicht vorgenommen wurde. | ||
Um das Teilprojekt PID-Regler abzuschließen,sollte die erstellte Software auf der Originalhardware zum Einsatz kommen. Außerdem bezieht der PID-Regler sich lediglich auf die Daten der Inertialnavigation, sodass zusätzlich ein Einbezug der Daten des Perimeter-Schleifen-Sensors möglich ist, um auch ein geregeltes Fahren entlang der Schleife zu ermöglichen. | Um das Teilprojekt PID-Regler abzuschließen,sollte die erstellte Software auf der Originalhardware zum Einsatz kommen. Außerdem bezieht der PID-Regler sich lediglich auf die Daten der Inertialnavigation, sodass zusätzlich ein Einbezug der Daten des Perimeter-Schleifen-Sensors möglich ist, um auch ein geregeltes Fahren entlang der Schleife zu ermöglichen. | ||
= Was es zu beachten gibt bei Fortführung des Projektes = | |||
* Um das Projekt fortzusetzten ist es unbedingt notwenig das Gyroskop GY-80 zu bestellen. Nur dieses Gyroskop kann in Verbindung mit der Open-Source Software genutzt werden. (Stand: 12.01.2017) | |||
* Die Pin-Belegung kann dem hochgeladenen Arduino-Projekt entnommen werden | |||
* Für die Benutzung der Hauptsoftware des Ardumover, werden ein Taster und ein Summer benötigt | |||
= Weiterführende Links = | = Weiterführende Links = |
Aktuelle Version vom 12. Januar 2017, 17:16 Uhr
Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom Fachpraktikum Elektrotechnik im 5. Semester Mechatronik absolviert wurde. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht.
Autoren: Simon Kohfeld, Marcel Kreuer
Betreuer: Prof. Schneider
Aufgabe
Regelung des Motors
Erwartungen an die Projektlösung
- Einarbeitung in die bestehenden Ardumowers-Unterlagen
- Implementierung des PID-Reglers zur Regelung der Antriebe.
- Reglersimulation
- Realisieren Sie eine geschmeidige Geschwindigkeitsregelung
- Realisieren Sie ein schwingungsfreies Folgen der Induktionsschleife zur Ladestation
- Mitwirkung bei der Inbetriebnahme und an der Schnittstelle Motor
- Darstellung und Bewertung der Ergebnisse im Vergleich zur Referenz und Simulation
- Erstellen Sie ein faszinierendes Video, welches die Funktion visualisiert.
- Test und wiss. Dokumentation
Schwierigkeitsgrad
- Mechanik:
- Elektrotechnik: *
- Informatik: **
Einleitung
Das Ardumowerprojekt des 5. Semesters Mechatronik in Kooperation mit dem Masterstudiengang Business and System Design Engineering an der Hochschule Hamm-Lippstadt hat zum Ziel, einen voll funktionsfähigen autonomen Rasenmähroboter in Betrieb zu nehmen. Dazu werden die notwendigen Aufgaben für die Erfüllung des Projektes auf einzelne Gruppen aufgeteilt. Der PID-Regler ist ein Bestandteil des Ardumower-Projektes und wird von einer Gruppe mit zwei Personen bearbeitet. Er soll für ein möglichst genaues Einhalten der vorgegebenen Richtung sorgen und somit Störeinflüsse auf die Fahrtrichtung herausregeln. Dazu ist es notwendig eine Hardware auszuwählen, die für den Regler relevante Messgrößen liefert. Anschließend muss der Regler mit einer Software impementiert werden und der ausgewählte Sensor dort eingebunden werden. In diesem Artikel werden begleitend zum Projekt des Ardumower der Projektverlauf und die erarbeiteten Aufgaben sowie die erreichten Ziele des Bereichs PID-Regler dokumentiert.
Projektdurchführung
In einem Kick-Off Meeting teilen die Projektleiter des BSE-Masterstudiengangs die einzelnen Themen in größere Bereiche auf, um die Projektkoordination zu vereinfachen. Der PID-Regler wird in die Gruppe Sensorik eingeordnet. Zusätzlich wird bekannt gegeben, dass im Rhytmus von zwei Wochen ein Wochenbericht jeder Gruppe im SVN hochzuladen ist, um den aktuellen Projektfortschritt überwachen zu können und um mögliche Probleme möglichst früh erkennen zu können.
Das Gesamtprojekt wird in drei Meilensteine aufgeteilt. Zunächst soll die Beschaffung stattfinden, dann schließt sich ein Funktionstest an, gefolgt von einem Integrationstest. Am 09.01.2017 soll das Gesamtprojekt im Rahmen einer öffentlichen Messe vorgestellt werden.
Benötigte Komponenten
Für den PID-Regler selbst werden keine Bauteile benötigt, da er auf die Daten der Gruppe Inertialnavigation zurückgreift und die geregelten Werte an die Motoren weitergibt, für welche es ebenfalls eine Gruppe gibt. Um in der Testphase eine zeitliche Unabhängigkeit zu gewährleisten, wird ein Ardumower Mini mit einem 3-Achsen Gyroskop bestellt. Dadurch können unabhängige Funktionstests durchgeführt werden. Die Aufgabe lautet also, den Ardumower Mini in Betrieb zu nehmen, um den Sourcecode für den PID-Regler testen zu können, damit die Läuffähigkeit für das Hauptprojekt garantiert werden kann.
Einarbeitung in bestehende Ardumower-Unterlagen
Da Ardumower ein OpenSource Projekt ist, gibt es den Sourcecode online zum Download. Dieser beinhaltet auch eine .cpp-Datei für den PID-Regler. Die notwendigen Einstellungen sind im Header dieser Datei beschrieben. Der P-Anteil soll erhöht werden, bis ein Signal vorhanden ist. Der I-Anteil kann dann auf 0,6*P und der D-Anteil kann auf 0,125*p eingestellt werden.
Laut Ardumower Wiki soll die OpenSource Software direkt auf den bestellten Arduino Mega geladen werden können und lauffähig sein.
Funktionsweise des Reglers
Das nachfolgende Simulink-Modell soll die Funktionsweise des PID-Reglers verdeutlichen. Die Eingangsgröße in den PID-Regler ist der Gierwinkel. Der Gierwinkel wird daraufhin mit dem Sollwinkel verglichen, das Ergebnis ist die Abweichung. Diese wird an den PID-Regler übergeben und in einen Korrekturfaktor umgewandelt. Beim Korrekturfaktor muss darauf geachtet werden, das dieser vom Betrag her nicht größer ist, als die Sollgeschindigkeit, da sonst negative Signale an den PWM-Ausgang zum Ansteuern der Motoren übergeben werden könnten. Die PWM-Ausgänge erwarten jedoch einen Wert zwischen 0 und 255.
Um eine Lenkregelung des Roboter durchzuführen wird der Korrekturfaktor auf der linken Antriebsseite von der Sollgeschindigkeit abgezogen und auf der Rechten hinzugerechnet. Der errechnete Wert wird an den jeweiligen PWM-Pin übergeben.
Für die Regelung des Ardumower Mini wurden folgende Parameter gewählt:
- Kp= 100
- Ki= 80
- Kd= 5
Erweiterungsmöglichkeiten
Nach momentanem Stand können die Motoren nur Vorwärts angesteuert werden. Eine sinnvolle Erweiterung wäre das Miteinbeziehen der Pins am Motortreiber zur Richtungsumkehrung. Auch sind der Sollwinkel und die Sollgeschwindigkeit feste Parameter. Schreibt man den PID-Regler als Funktion, so können diese Werte als Eingänge gewählt werden um beispielsweise eine Drehung auf der Stelle mit der Sollgewindigkeit 0 zu Realisieren.
Projektverlauf
Nach dem Kick-Off Termin wird damit begonnen eine BOM zu erstellen, welche in der nachfolgenden Abbildung zu sehen ist.
Es werden ein Ardumower Mini mit den empfohlenen Komponenten und ein 3-Achsen Gyroskop bestellt.
Nachdem die Komponenten eingetroffen sind, wird mit dem Aufbau des Ardumower Mini begonnen. Es fällt auf, dass dieser einige vorgebohrte Löcher hat, diese aber für die wenigsten Komponenten passend sind. Aus diesem Grund ragen einige Komponenten über den Ardumower Mini hinaus. Der Zusammenbau gelingt schließlich und ist in der folgenden Abbildung zu sehen.
Bei der Einarbeitung in den OpenSource Quellcode für den Ardumower fällt auf, dass dieser von schlechter Qualität ist. So fehlt eine hinreichende Kommentierung des Codes und die im Funktionsheader beschriebenen Einstellungen bezüglich der P-, I- und D-Werte sind nicht sichtbar zugänglich, was eine möglichst schnellen Inbetriebnahme unmöglich macht. Der gesamte Ardumower-Quellcode ist zusammenhängend und kann in dieser Gesamtheit nicht auf den AduinoMega gespielt werden, da es bei der Kompilierung zu Fehlern kommt, die im Umfang des Codes nicht gefunden werden können. Erst nach langer Recherche im Ardumower Forum können die Kompilierfehler behoben werden. Die Einstellung der Werte Kp, Ki und Kd findet sich schließlich in der Mini.cpp, bzw. der Mower.cpp Datei, je nach dem ob die Betriebsart für den Arduomower Mini oder den Ardumower ausgewählt wird. Diese Auswahl ist in der Datei config.h vorzunehmen.
Erfahrungen mit der bereitgestellten Software
Wird die Hauptsoftware in der Ardumowerkonfiguration kompiliert und aufgespielt, kann man mit Hilfe eines Tasters und eines Summers fünf verschiedene Modi für den Ardumower auswählen. Man hält den Taster gedrückt und die Anzahl der Piepser bis zum Loslassen des Tasters bestimmt den Modus des Ardumower. Der erste Modus ist das Mähen an sich. Dabei wird, sofern vorhanden eine zuvor eingestellte Messermodulation genutzt. Im zweiten Modus mäht der Ardumower ohne Messermodulation. Modus Drei ermöglicht das Fahren mit Fernsteuerung, Modus Vier lässt den Ardumower fahren ohne zu Mähen. Im fünften Modus sucht der Ardumower die Perimeterschleife und folgt dieser. In der Ardumower Mini Konfiguration gibt es nur den Fahrmodus.
In beiden Konfigurationen kann man über die Serielle Schnittstelle auf ein Menü zugreifen, welches verschiedene Kalibrierungsmöglichkeiten, sowie einen Motorentest oder auch das Löschen von vorherigen Fehlermeldungen ermöglicht. Nach den allgemeinen Tests des Programms kommt es erneut zu Problemen bezüglich des PID-Reglers. Der gewählte Ansatz mit einem Gyro-Sensor zu arbeiten lässt sich mit der bestellten Hardware nicht über die OpenSource-Software realisieren. Grund dafür ist die fehlende Einbindung sowohl des GY521 als auch des ITG3200 auf der GY85-Platine. Der Code ist nur für den Gyro-Sensor L3G4200D auf der GY80 Platine erhältlich. Diese Information ist nicht im Shop ersichtlich aber wichtig um mit der OpenSource-Software und einem Gyro-Sensor arbeiten zu können.
Ein neuer Ansatz wird gewählt und ein PID-Regler selbsständig implementiert. Dazu erfolgt zunächst eine Absprache mit der zuständigen Gruppe für die Inertialnavigation, um sich auf eindeutige Schnittstellen einigen zu können. Die aufbereiteten Daten werden anschließend genutzt um die Regelung zu realisieren.
Ergebnis
Bei Ablauf des Projektzeitplans kann der PID-Regler auf Basis der Daten der Inertialnavigation die Geradeausfahrt des Ardumower Mini regeln. Da die Ansteuerung der Motoren des Ardumower Mini identisch zu der Ansteuerung der Motoren des Ardumower ist, wird diese geregelte Geradeausfahrt auch für den Ardumower funktionieren. Ein Test dieser Geradeausfahrt war im Rahmen des Projektes nicht mehr möglich.
Insgesamt ist das Teilprojekt PID-Regler erfolgreich bearbeitet worden, da der Funktionstst des Reglers an der Testhardware erfolgreich war. Endgültig abgeschlossen werden konnte das Projekt nicht, da der Abschlusstest an der Originialhardware nicht vorgenommen wurde.
Um das Teilprojekt PID-Regler abzuschließen,sollte die erstellte Software auf der Originalhardware zum Einsatz kommen. Außerdem bezieht der PID-Regler sich lediglich auf die Daten der Inertialnavigation, sodass zusätzlich ein Einbezug der Daten des Perimeter-Schleifen-Sensors möglich ist, um auch ein geregeltes Fahren entlang der Schleife zu ermöglichen.
Was es zu beachten gibt bei Fortführung des Projektes
- Um das Projekt fortzusetzten ist es unbedingt notwenig das Gyroskop GY-80 zu bestellen. Nur dieses Gyroskop kann in Verbindung mit der Open-Source Software genutzt werden. (Stand: 12.01.2017)
- Die Pin-Belegung kann dem hochgeladenen Arduino-Projekt entnommen werden
- Für die Benutzung der Hauptsoftware des Ardumover, werden ein Taster und ein Summer benötigt
Weiterführende Links
- Ardumower Wiki
- PID-Regler
- Artikel: Exakt geradeausfahren
- Überblick über alle Sensoren des Ardumower
- Überblick über alle Schnittstellen der Hauptplatine
- Überblick über den in der Hauptsoftware integrierten PID-Regler des Ardumower
- Forenbeitrag über die passende Auslegung des PID-Reglers des Ardumower
- Datenblatt des Gyros auf der GY-85 Platine
- Datenblatt des Gyros auf der GY-80 Platine
Unterlagen
YouTube-Video
Das YouTube Video der PID-Regler-Gruppe ist hier zu finden.
→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 16/17)