WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Höhenreglung f. Quadrocopter, Simulinkmodell anpassen

 

iDaniel
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2016, 14:14     Titel: Höhenreglung f. Quadrocopter, Simulinkmodell anpassen
  Antworten mit Zitat      
Hallo,

ich habe vor einen Quadrocopter mittels Ultraschall eine Höhe halten zu lassen. Dazu habe ich einen PID Regler programmiert. Um passende Regelwerte zu testen habe ich das ganze auch in Simulink stark vereinfacht nachgebildet. Da es nur um die Höhenreglung geht wird die Lagereglung natürlich vernachlässigt. Der Copter befindet sich dabei im Schwebezustand, also FMotoren = FG. Der Regler addiert dann den Gaswert auf bzw. zieht etwas ab um eine Änderung hervorzurufen. Mein bisheriges Modell sieht schonmal ganz gut aus, jedoch passen die Modellregelwerte noch nicht ganz zu den realen.

Zur Auswertung habe ich außerdem ein Blackbox die mir Messwerte des Copters aufnimmt. Damit hab ich z.b. schonmal Steigdiagramme aufgenommen oder eine erste Flugaufnahme mit viel zu hohem P Wert.
Noch ein par Infos zum Copter: -Gewicht 700g Abflugfertig -Max Schub ca 2400g laut Motordatenblatt -Messwert des Ultraschallsensor all 60ms -Datenaufnahme in Blackbox leider nur alle 160ms möglich

Wie kann ich das Modell noch verbessern?

Grüße
Daniel

Hoehenregler.slx
 Beschreibung:
Simulinkmodell

Download
 Dateiname:  Hoehenregler.slx
 Dateigröße:  17.83 KB
 Heruntergeladen:  570 mal
Steig 1527.PNG
 Beschreibung:
Steigflug mit 1527 Gaswert, Gaswert geht von 1150-1850, ~1500 Schwebegas. Wert der von der Fernbedienung und dem Regler verändert wird.

Download
 Dateiname:  Steig 1527.PNG
 Dateigröße:  76.82 KB
 Heruntergeladen:  561 mal
Regler mit P60 ID0.png
 Beschreibung:
Flugdaten mit zu hohem P Wert, I und D =0
Gelb: Gaswer, Blau: Höhe, Grau: Reglerausgang

Download
 Dateiname:  Regler mit P60 ID0.png
 Dateigröße:  67.39 KB
 Heruntergeladen:  547 mal
Private Nachricht senden Benutzer-Profile anzeigen


BBecks
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 26.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2016, 18:05     Titel:
  Antworten mit Zitat      
Hey Daniel,

erst mal interessantes Projekt was du da hast, habe auch schon überlegt mir mal eine Drohne und dementsprechend die Regelungen zu entwerfen. Aber fangen wir mal ganz vorne an Wink. Ist das eine selbst gebaute Drohne oder eine gekaufte bei der du den Höhen-Regler ein- und ausschalten kannst?

Wenn ich mir dein Simulink Modell, mit den zugehörigen Plots fällt mir erst mal auf, das du drei Sprungfunktionen nimmst, wo für das Gleiche Signal nur zwei nötig sind.

Weiterhin nimmt man am besten nur eine Sprungfunktion um Regler auszulegen. Wenn das erst mal gemacht ist, kannst du dir gerne die wildesten Sollwert-Änderungen überlegen. Ich habe jetzt mal die Sprungfunktion von 30 auf 100 drin gelassen.
Das heißt deine Drohne fliegt auf 30 (cm,m ?) und Soll auf 100 fliegen.

Diese hat zur folge, das du deinen Integrator1 mit einer Initial Condition von 30 parametrieren musst, da der ansonsten bei 0 anfängt.

In der Regelungstechnik ist es üblich, die Sprungfunktion (Änderung des Sollwertes) und die Sprungantwort (Änderung des Istwertes) in der gleichen Grafik anzuzeigen. Das habe ich hier mal mit Hilfe eines Mux realisiert. jetzt erkennt man gut die Abweichung.

Dein Differential-Anteil(D) ist extrem hoch, vor Allem im Gegensatz zu den anderen.
Am besten ließt du dich einmal in die Thematik ein, was jeder Anteil des PID-Reglers so für Effekte hervorruft.

Ich hoffe ich konnte dich schon mal etwas näher heranführen.

Beste Grüße
BBecks

Hoehenregler.slx
 Beschreibung:

Download
 Dateiname:  Hoehenregler.slx
 Dateigröße:  19.24 KB
 Heruntergeladen:  537 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
iDaniel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2016, 10:21     Titel:
  Antworten mit Zitat      
BBecks hat Folgendes geschrieben:
Hey Daniel,
erst mal interessantes Projekt was du da hast, habe auch schon überlegt mir mal eine Drohne und dementsprechend die Regelungen zu entwerfen. Aber fangen wir mal ganz vorne an Wink. Ist das eine selbst gebaute Drohne oder eine gekaufte bei der du den Höhen-Regler ein- und ausschalten kannst?

Es ist eine selbstgebaute, mit gekauften Komponenten Wink Die Steuerung ist ein Arduino mit Multiwii und den Regler kann ich per Schalter ein und ausschalten. Das ist z.B. der Höhenregler von mir im Code:

Code:

unsigned long lastTime;
int16_t  lastSonarAlt;
int16_t  lastSonarError;

         int16_t kp=20; //x*100 wegen Kommazahl
         int16_t ki=1;  //x*1000 wegen Kommazahl
         int16_t kd=126;   //x*100 wegen Kommazahl
         
         int16_t SampleTime=100;

      void SonarPID(){
                unsigned long now = millis();
                int16_t timeChange = (now-lastTime);
                if(timeChange>=SampleTime)
                {
                  int16_t error = SonarSetpoint - sonarAlt;
                  ITermSonar+=(ki*timeChange*error/1000000);  
                  constrain(ITermSonar,-10,+10);
                  int16_t dInput = (error - lastSonarError);
                 
                  //SonarPidOutput = kp*error + ITermSonar -kd*dInput/timeChange/1000;
                  SonarPidOutput = kp*error/100 + ITermSonar +kd*dInput/timeChange/100000;
                  constrain(SonarPidOutput,-100,+100);
                 
                  lastSonarError=error;
                  lastSonarAlt = sonarAlt;
                  lastTime = now;
                }
               }



Zitat:

Wenn ich mir dein Simulink Modell, mit den zugehörigen Plots fällt mir erst mal auf, das du drei Sprungfunktionen nimmst, wo für das Gleiche Signal nur zwei nötig sind.

Weiterhin nimmt man am besten nur eine Sprungfunktion um Regler auszulegen. Wenn das erst mal gemacht ist, kannst du dir gerne die wildesten Sollwert-Änderungen überlegen. Ich habe jetzt mal die Sprungfunktion von 30 auf 100 drin gelassen.
Das heißt deine Drohne fliegt auf 30 (cm,m ?) und Soll auf 100 fliegen.


Genau sie soll z.B. von 30 cm auf 100 cm fliegen. Ausgangspunkt ist immer irgendeine Höhe in der sie schwebt und ich dann den Regler anschalte.

Zitat:

Dein Differential-Anteil(D) ist extrem hoch, vor Allem im Gegensatz zu den anderen.
Am besten ließt du dich einmal in die Thematik ein, was jeder Anteil des PID-Reglers so für Effekte hervorruft.


Ja das ist durch das "Auto Tune" des PID Bausteins so hoch

Danke schonmal für das Aufräumen des Modells Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
iDaniel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.03.2016, 11:34     Titel:
  Antworten mit Zitat      
Gibt es einen Baustein, er mit die Werte vom Kontinuierlichen ins Diskrete bringt?

habe durch die Laufzeitmessung des Ultraschall nur alle 65 ms einen neuen Messwert, dass möchte ich noch einbringen.
Private Nachricht senden Benutzer-Profile anzeigen
 
BBecks
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 26.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2016, 12:25     Titel:
  Antworten mit Zitat      
Hey,

ja das ist eigentlich ganz einfach, du musst zunächst deinen Regler auf Diskret umstellen, das steht in der Maske knapp über den eigentlichen Parametern. Hier musst du dann noch die Sample-Time eingeben mit der dein System läuft.

Anschließend ersetzt du deine Integratoren noch durch diskrete Integratoren. Bei dem Integrator, der dir die Höhe liefert, setzt du die Sample-Time auf 0.065 sek.

Du bekommst dann auch ein höheres Überschwingen, da dein Regler ja nur zu diskreten Zeitpunkten eingreifen kann und Daten bekommt.

PS: kannst du mal bitte das Datenblatt deiner Motoren hochladen, oder mir sagen welche es sind?

Beste Grüße
BBecks
Private Nachricht senden Benutzer-Profile anzeigen
 
iDaniel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2016, 16:25     Titel:
  Antworten mit Zitat      
Also Motoren habe ich diese hier : https://www.aerolab.de/brushless-mo.....or-mn2212-kv920/a-502653/ an 9" glaube 40 oder 45 Steigung.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.