- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 25

Thema: Testaufbau für Positionsregelung von DC-Getriebemotoren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Zitat Zitat von Geistesblitz Beitrag anzeigen
    Hmm, wie wird das denn realisiert?
    Nun, die Regelung weiss ja, ob der Motor gerade steht oder nicht.
    Steht der Motor gerade, gibt man kurz mehr Leistung auf den Motor, als für die geforderte Drehzahl nötig wäre.
    Du musst den Drehzahlbereich in 3 Bereiche unterteilen:
    1. minimal mögliche Drehzahl, darunter bewegt sich nichts.
    2. Möglicher Bereich, welcher aber nicht selbst anläuft.
    3. normaler Bereich, in welchem der Motor problemlos startet.

    Im 1. Bereich geht nun mal nix, den kannst du vergessen.

    Im 2. Bereich braucht der Motor Starthilfe. Also entweder startet man mit einer höheren Drehzahl und regelt dann runter oder man fügt en Hilfsimpuls hinzu. So ein Motor ist ja eigentlich ein träges Wesen. Man kann dem z.B. die volle Spannung verpassen und diese dann zurückregeln, wenn die Nenndrehzahl knapp erreicht ist. Man kann auch einfach den Impuls so berechnen, dass die Massenträgheit sicher überwunden wird.

    Zitat Zitat von Geistesblitz Beitrag anzeigen
    Und die Drehzahl ist auch nicht genau linear abhängig zur Spannung, soweit ich messen konnte. Ich hab das so bemerkt, dass bei einer bestimmten Spannung der Motor sich anfängt zu drehen, wenn man dann mit der Spannung runtergeht dreht sich der Motor langsamer und bleibt dann irgendwann stehen, aber an dieser Stelle ist die Spannung auch nicht 0V. Man hätte also eine Losbrechspannung und eine etwas niedrigere Stopspannung, also so ein leichtes Hystereseverhalten.

    Was mir auch aufgefallen ist: betreibe ich den Motor am Labornetzteil, fängt er schon bei 0,5V an sich ganz langsam zu drehen, betreibe ich ihn allerdings bei 12V mit einer PWM bis zu 40% dreht er sich immer noch nicht. Ich hab da irgendwie keine Erklärung für. Wahrscheinlich muss ich da mal mit dem Oszi ran.
    Ist Alles physikalisch ganz normal.

    Du hast Haftreibung und Gleitreibung. Die Haftreibung ist immer grösser als die Gleitreibung.
    Im Stillstand muss du die Haftreibung überwinden, bis sich was dreht.
    Wenn es dreht hast du nur noch die Gleitreibung, weshalb du mit der Motorleistung weiter runter gehen kannst, bis der Motor wieder steht.

    Bei Gleitlagern ist der Unterschied grösser, als bei Kugellagern.
    Theoretisch haben Kugellager sowieso nur Rollreibung, es sollte also keinen Unterschied geben. Praktisch gibt es dennoch einen, da z.B. anfangs Öl oder Fett verdrängt werden muss, welches sich wie ein Kein unter die Kugeln schiebt.

    Und zu guter Letzt ist das Ganze noch sehr temperaturabhängig. Einerseits verändern Fett und Öle ihre Viskosität mit der Temperatur und andererseits ändert sich durch die Temperatur auch das Lagerspiel, was beides einen Einfluss auf die Reibung hat.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    @Malthy: genau, der Stellwert geht direkt auf den Motor, ohne weitere Geschwindigkeitsregelung.

    Der grobe Ablauf der Reglerschleife sieht so aus:
    -Sollposition wird empfangen
    -Istposition wird gemessen
    -Istposition wird geglättet
    -Abweichung wird berechnet (Differenz aus Soll- und Istwert) -> E
    -Differenz aus Abweichung des letzten Rechenschritts und der aktuellen Abweichung wird berechnet -> dE
    -ist dE betragsmäßig größer als ein bestimmter Wert, wird es auf diesen Wert beschränkt
    -Integral wird berechnet (E wird auf E_int addiert, wenn PWM<1023) -> E_int
    -Tastverhältnis = k_p*E + k_d*dE + k_i*E_int + Versatz
    -je nachdem, ob Tastverhältnis positiv oder negativ ist, wird die H-Brücke auf Linkslauf oder Rechtslauf geschaltet
    -Betrag von Tastverhältnis bilden und auf max. 1023 begrenzen (10-bit-PWM)
    -Tastverhältnis an den PWM-Port übergeben
    -Istwert an PC senden

    Derzeit ist es leider so, dass der Regler im Interrupt der UART läuft, da ich nicht weiß, wie ich das Ganze sonst synchron zum Rechner halten soll. Eigentlich wäre es besser, wenn der Regler mit einem eigenen Timer läuft und den Rechner nach neuen Werten fragt anstatt umgekehrt. Was passiert dann aber, wenn der Rechner dann nix von sich hören lässt?

    Ansonsten ist es sicher auch nicht verkehrt, eine kaskadierte Regelung aufzubauen (on innen nach außen Stromregler, Geschwindigkeitsregler und Positionsregler). Das soll auch ganz gut zu implementieren gehen, da man sich von innen nach außen vorarbeiten kann. Dann kann man jeden einzelnen Regler so einstellen, dass er das gewünschte Verhalten zeigt und er dann mit der zugehörigen Strecke als Blackbox behandelt werden kann.
    AI - Artificial Idiocy

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hi,

    Derzeit ist es leider so, dass der Regler im Interrupt der UART läuft, da ich nicht weiß, wie ich das Ganze sonst synchron zum Rechner halten soll. Eigentlich wäre es besser, wenn der Regler mit einem eigenen Timer läuft und den Rechner nach neuen Werten fragt anstatt umgekehrt. Was passiert dann aber, wenn der Rechner dann nix von sich hören lässt?
    Das verstehe ich nicht ganz. Wieso hältst Du nicht einfach in einer Variable die Position vor, auf die das System einregeln soll. Das System kümmert sich dann darum, dass es gegen äußere Störungen auf der Position bleibt. Neue Sollpositionen kannst Du dann asynchron, d. h. zu beliebigen Zeitpunkten an das System übergeben. Oder übersehe ich da etwas?

    Ansonsten ist es sicher auch nicht verkehrt, eine kaskadierte Regelung aufzubauen (on innen nach außen Stromregler, Geschwindigkeitsregler und Positionsregler). Das soll auch ganz gut zu implementieren gehen, da man sich von innen nach außen vorarbeiten kann. Dann kann man jeden einzelnen Regler so einstellen, dass er das gewünschte Verhalten zeigt und er dann mit der zugehörigen Strecke als Blackbox behandelt werden kann.
    Ich habe das alles ja nie systematisch gelernt. Bei meinen robolink Armen kamen Schrittmotoren zum Einsatz. Die kann man ja leicht open loop auf Drehzahl halten. Insofern habe ich das System so aufgebaut, dass innen quasi eine Drehzahlsteuerung (keine Regelung) war, die sich auch um Anfahrrampen u.ä. gekümmert hat. Die übergeordnete Positionsregelung hat dann als Stellwert die Drehzahl für den entprechenden DOF ausgegeben. Die Positionsregelung wurde dadurch sehr einfach, im Prinzip funktionierte schon ein reiner P-Regler ganz ordentlich (hier zu sehen). Natürlich kann man einen Schrittmotor nicht mit einem DC Motor vergleichen, aus der Erfahrung würde ich aber auf jeden Fall dazu neigen, zuerst eine Drehzahlregelung aufzubauen und dann die Positionsregelung obendrauf zu setzen.

    Gruß
    Malte

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,

    [QUOTE=Geistesblitz;612287Derzeit ist es leider so, dass der Regler im Interrupt der UART läuft, da ich nicht weiß, wie ich das Ganze sonst synchron zum Rechner halten soll. Eigentlich wäre es besser, wenn der Regler mit einem eigenen Timer läuft und den Rechner nach neuen Werten fragt anstatt umgekehrt. Was passiert dann aber, wenn der Rechner dann nix von sich hören lässt?[/QUOTE]

    Im UART-Interrupt nimmst du den Sollwert entgegen und legst den in einer globalen Variablen ab, zudem setzt du noch ein Flag.

    Der Regler, eigentlich wie jetzt, läuft im Timerinterrupt.
    Einzige Änderung ist, dass der Regler sich das Flag anschaut. Wenn es gesetzt ist, wird der neuen Sollwert übernommen und das Flag zurückgesetzt.

    Der Regler kann dann noch ein Flag setzen, welches anzeigt, dass die Soll-Position erreicht wurde.
    Mit einem weiteren Flag kannst du den Regler auch noch abschalten.

    MfG Peter(TOO)

    ---------------------------- 17.2.2015 01:18 ----------------------------------------------

    Eine Kleinigkeit habe ich übersehen:
    Der Regler sollte in den Interrupt der PWM, evtl. kannst du per Software untersetzen, also nur bei jedem 10ten PWM-Zyklus einen neuen Stellwert berechnen. Hängt aber von den Zeitkonstanten ab (PWM, Motorträgheit).
    Andernfalls kannst du Schwebungen bekommen, zwischen PWM- und Abtastfrequenz, wenn die beiden Frequenzen nahe beieinander liegen.

    MfG Peter(TOO)
    Geändert von Peter(TOO) (17.02.2015 um 00:18 Uhr)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 21.03.2012, 18:43
  2. Grafik LCD Testaufbau
    Von darwin.nuernberg im Forum Eigene fertige Schaltungen und Bauanleitungen
    Antworten: 8
    Letzter Beitrag: 28.10.2007, 13:54
  3. ansteuerung von getriebemotoren
    Von RedEagle667 im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 04.05.2006, 12:01
  4. Ansteuerung von 8 Getriebemotoren
    Von j_volkers im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 30.09.2005, 20:18
  5. Antworten: 3
    Letzter Beitrag: 18.11.2004, 18:50

Berechtigungen

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

LiFePO4 Speicher Test