-         

Ergebnis 1 bis 7 von 7

Thema: Motoranpassung PI-Regler

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.09.2011
    Beiträge
    18

    Motoranpassung PI-Regler

    Anzeige

    Hallo

    Ich hoffe ich bin hier richtig und ihr könnt mir helfen.
    Es geht um die Drehzahlregelung und einer Regelschleife von Motoren.

    Ich baue gerade einen Rasenmähroboter. Er soll 2 Antriebsmotoren bekommen.
    Die Motoren sind mit einem Magnetischer Impulsgeber(Hallgeber) ausgestattet.
    Ich bekomme 2 Rechteck Signale von dem Sensor mit dem ich die Drehzahl und die Drehrichtung erkennen kann. Alles soweit auch kein Problem.
    Jeder Motor hat seine eigene H-Brücke mit einem HIP4081A ( FET Treiber ). Jede H-Brücke wird von einem eigenen Atmega AT90PWM3B angesteuert.

    Zur Steuerung gehe ich wie folgt vor. Ich habe 2 Register. ON_TIME0 und ON_TIME1
    Wenn ich z.B
    ON_TIME0= 2000
    ON_TIME1=0
    setze dreht sich der Motor nach links mit voller Drehzahl.
    Bei
    ON_TIME0= 0
    ON_TIME1=2000
    setze dreht sich der Motor nach rechts mit voller Drehzahl.
    bei
    ON_TIME0= 2000
    ON_TIME1= 2000
    setze stoppt der Motor.

    Die Werte für die Register bekommt der AT90PWM3B per SPI von einem Atmega 2560.

    Nun soll ich laut Lehrer einen PI-Regler für die Anpassung der Motoren in C programmieren. Da die Motoren ja Toleranzen habe laufen sie natürlich nie gleich schnell.
    Leider fehlt mir aber der Richtige Ansatz wie ich die Register und die Daten von dem Magnetischer Impulsgeber miteinander in einer Regelschleife verknüpfe.

    Im Internet finde ich auch keine Beispiele zu meinem Problem

    Freue mich über konstruktive Anregungen.

    Christoph

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hallo,

    ein PI-Regler ist ein seiner Grundstruktur sehr einfach. Er setzt sich aus dem P(roportional) und aus dem I(ntegral) Teil zusammen. Hier ein einfaches Beispiel:
    Code:
    int Error;
    int ist;
    int soll;
    int p_anteil;
    int i_anteil;
    int error_integral;
    int p_gain;
    int i_gain;
    ...
    Error = ist - soll;
    p_anteil = error * p_gain;
    error_integral = error_integral + error
    i_anteil = error_integral * i_gain
    ...
    motor1 = motor1 + p_anteil;
    motor1 = motor1 + i_anteil;
    Ist stellt die momentane gemessene Geschwindigkeit dar, Soll die Sollgeschwindigkeit. Die Differenz der beiden steht in Error.
    p_gain und i_gain sind die beiden Variablen, die du selbst bestimmen musst, damit der Regler gut arbeitet. Wichtig ist, dass der Regler in einigermassen regelmäßigen Abständen aufgerufen wird und das so schnell als möglich.
    Evtl. sollte man die Variablen als Fließkomma verwenden, um kleinere Abweichungen auch ausregeln zu können.
    Wenn du Fragen hast, melde dich einfach. Ich weiß momentan nicht, wie groß dein Basiswissen ist.

    Gruß
    Chris

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hallo Christoph.
    Zitat Zitat von Kampfwurst_Hugo
    ... einen PI-Regler ... in C programmieren. Da die Motoren ja Toleranzen habe ... nie gleich schnell ...
    Die Rechnung selbst ist wirklich einfach (na ja, sie sieht nicht einfach aus und wenn man nicht in Regelungstechnik "daheim" ist, dann hat man so seine Probleme). Weniger einfach ist - für den Ungeübten - die Bestimmung der Parameter - wie Du es ja selbst feststellst. Das wird standardmässig mit der Bestimmung der Sprungantwort gemacht (WENN man das konkrete System vor sich hat, sonst muss man die Dynamik anhand der Motor- und Spannungs-/Stromdaten rechnen). Meine erste Sprungantwort habe ich hier (klick) ermittelt, etwas bessere Messbedingungen haben "schönere" Messdaten gebracht (klick). Aus diesen Daten werden nach theoretischen Grundlagen (etwa hier) die Kennwerte wie Regelverstärkung (P-Faktor), Zeitkonstante des Motors etc. bestimmt und mit denen z.B. nach Einstellregeln die Kennwerte für die Regelungsrechnung ermittelt. Es lohnt sich eigentlich, das Regelungwiki durchzuarbeiten - zumindest die für den speziellen Fall relevanten Abschnitte. Hatte mich viel Zeit gekostet, aber es hatte sich gelohnt.

    Viel Erfolg.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Zitat Zitat von oberallgeier Beitrag anzeigen
    Hatte mich viel Zeit gekostet, aber es hatte sich gelohnt.
    Sicher, aber nur, weil das für dich NOTWENDIG war.

    @ Kampfwurst_Hugo

    Woher weiss dein Lehrer, dass für diese Aufgabe zwei PI-Regler mit gleichem Sollwert optimal sind ? Nur für Gleichlauf von zwei Motoren gibt es sicher einfachere Lösungen mit nur einem Drehzahlregler, z.B.: http://www.roboternetz.de/community/...beantwortet%29 .
    Geändert von PICture (12.01.2012 um 17:20 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.09.2011
    Beiträge
    18
    welche zum Beispiel

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    31
    Beiträge
    101
    hey hallo!

    Vielleicht hilft dir dir Atmel-Application weiter

    http://www.atmel.com/dyn/resources/p...ts/doc7518.pdf


    MfG Dennis
    Ich studiere die Wirkung der Sonnenstrahlen auf das Liebesleben der Pflastersteine

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    251
    Hallo Christoph ,

    ich habe hier http://www.roboternetz.de/community/...ler-PID-Bascom einen Regler für 2 Motore und Synchronlauf vorgestellt.
    Dabei wird (im Modus Synchronlauf / kein Lenk-Sollwert) zusätzlich zum P- und I-Anteil der Unterschied der Encoder-Inkremente hinzugerechnet.
    Damit ist ein 99,99999%tiger Geradeauslauf gegeben.
    mfG
    Willi

Ähnliche Themen

  1. PI(D) - Regler
    Von oratus sum im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 29
    Letzter Beitrag: 30.05.2010, 15:30
  2. PID-Regler
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 16.10.2009, 19:13
  3. PID Regler
    Von hacker im Forum Software, Algorithmen und KI
    Antworten: 12
    Letzter Beitrag: 27.05.2007, 18:47
  4. PID - Regler
    Von hacker im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 04.06.2006, 20:38
  5. BL-Regler
    Von joergnb im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.04.2004, 16:00

Berechtigungen

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