- LiFePO4 Speicher Test         
Ergebnis 1 bis 6 von 6

Thema: Regelung für Winkelpositionierung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.03.2010
    Beiträge
    66
    Also den ersten Teil mit dem umrechen auf 0°-360° habe ich ja immer noch drin.
    Hier mal der komplette Weg:

    Der Winkel kommt vom Sensor im Format 0-180°, springt dann auf -180° und geht zurück nach -0°
    Meine Formel behandelt nur den Bereich von -180° bis -0°. Also auf einen Kreis bezogen den Bereich 180° bis 360°

    Beispiel:
    -175° (wäre in echt ja 185°)
    Eingesetzt in die Formel:
    180+(180-(-175*-1))=185

    Code:
    ist_angle=ToDeg(yaw); //HIER DEN KOMPASSWERT AUSLESEN
      if (ist_angle<0){
      ist_angle=180+(180-(ist_angle*-1));
      }
    Ich erhalte also Winkel von 0°-360°

    Im zweiten Schritt berechne ich die differenz zwischen Ist_Winkel und Soll_Winkel.
    Das mache ich um den kürzesten Weg "zum Ziel" zu ermitteln (Bezogen auf einen Kreis)
    Ein Voller Kreis besteht also aus ERG+X. X interessiert mich aber nicht, da ich weiß wenn ERG>180 ist, muss X kleiner sein.

    Also:
    Code:
    ERG = Soll_Winkel - Ist_Winkel
    Der kürzeste Weg ist der, wenn ERG < 180 ist.
    Außerdem muss die Verfahrrichtung immer von Ist_Winkel nach Soll_Winkel sein.

    Dazu habe ich die vier Abfragen, welche "den kürzesten Weg" filtern:

    erg>=180 bedeutet das der Rest vom Kreis kürzer ist -> GUZ
    (erg<180) && (erg>0) bedeutet das ERG der kürzeste Weg ist -> UZ
    (erg<0) && (erg>-180) bedeutet das ERG der kürzeste Weg ist -> GUZ
    erg<=-180 bedeutet das der Rest vom Kreis kürzer ist -> UZ

    Zwei Abfragen reichen übrigens nicht, da erg negativ wird, wenn Ist_Winkel und Soll_Winkel
    entsprechend ungünstig auf dem Kreis plaziert sind.
    Beispiel:
    Soll_Winkel=45°
    Ist_Winkel=315°
    erg=45-315=-270
    Wäre also die 4te Abfrage, also UZ

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Zitat Zitat von MechMac Beitrag anzeigen

    Beispiel:
    -175° (wäre in echt ja 185°)
    Eingesetzt in die Formel:
    180+(180-(-175*-1))=185

    Code:
    ist_angle=ToDeg(yaw); //HIER DEN KOMPASSWERT AUSLESEN
      if (ist_angle<0){
      ist_angle=180+(180-(ist_angle*-1));
      }
    Ich erhalte also Winkel von 0°-360°
    ist_angle=180+(180-(ist_angle*-1)); - also wenigtens das würde ich schon mal ändern. ist_angle= ist_angel + 360; (- 175° + 360° = 185°).
    'Psoudocode: Prüfen ob Ist als Soll dann sorum, sonst andersrum. Naja so würde ich es wenigsten versuchen wenn ich müsste.
    Die Vierquadrantenlösung wäre mir etwas zu abstrakt um die auch im Programmcode mitzuführen - wo ich dann immer dran denken müsste wo ich denn nun bin.
    Weiterhin würde ich eine Bit-Variable einführen die den Übergang von >0 über0 zu <0 abdeckt, wenn das passiert ist Bit-Variable = 1, wenn der Übergang von <360 über 0 zu >0 passiert ist dann Bit =0 - dazu würde ich die GUZ verwenden.
    Geändert von HeXPloreR (19.05.2013 um 12:05 Uhr)

Ähnliche Themen

  1. Zeitintervall-Regelung für LED
    Von crocuz im Forum Elektronik
    Antworten: 25
    Letzter Beitrag: 12.12.2009, 18:03
  2. Antworten: 4
    Letzter Beitrag: 04.11.2008, 17:39
  3. Regelung für Heizwicklung "Overshot" - Gelöst!
    Von wkrug im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 02.12.2007, 10:58
  4. PWM-Regelung
    Von eis im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 20.05.2007, 11:03
  5. µC mit für Regelung möglichst schnell
    Von Stoneman im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 15
    Letzter Beitrag: 27.02.2005, 06:24

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen