Forum: Mikrocontroller und Digitale Elektronik Motor Steuerung ,Graycode kontrolliert


von Sven Rehbein (Gast)


Lesenswert?

Hallo Leute

Ich soll ein Motor mit einem 8051 Prozessor ansteuern.
Ich habe dabei folgendes Problem. Ich bekomme ein 9 Bit Gray Code von
einem Drehwinkelgeber. Anhand dieses Wertes, weiß ich die Ist-Stellung
des Motors.
Und sage dem Motor dann z.B. Rechtsdrehen bis Ist-Wert erreicht ist.
Aber wenn der Motor
Durch seine Trägheit über den Soll-Wert dreht, wird der Motor wieder
veranlasst links zu drehen. Und dabei kann ja das gleiche passieren.
Folge ist, das der Motor anfängt zu flackern.

Kann mir jemand da ein paar Tipps geben ?
Ich habe die Graycode Umwandlung mit 2 Tabellen realisiert, die
abhängig vom 9 Bit angesprochen werden.

Danke schon mal

Sven Rehbein

von Frankl (Gast)


Lesenswert?

Kurz bevor der Sollwert erreicht ist die Motordrehzahl heruntersetzen.

von Oliver (Gast)


Lesenswert?

Hallo Sven,

was für einen Regler benutzt du denn (PID)?
Du solltest deine Stellgröße für den Motor abhängig von der
Positionsdifferenz erzeugen (kleine Abweichung wenig Stellgröße),
ansonsten wirst du das Schwingen nie in den Griff bekommen.

von Gerhard Humer (Gast)


Lesenswert?

Hi Sven,

hab das mit einem 2313er mittels Software-PID-Regelung realisiert.
Hab viel experimentiert.
Funzt wie Oliver schon sagte nur mit PID Regelung.


Gruss Gerhard

von crazy horse (Gast)


Lesenswert?

glaube nicht, ob es eine komplette PID-Regelung sein muß, viele
Schlagworte werden überstrapaziert, ausserdem kann auch ein PID-Regler
bei ungeeigneten Parametern immer instabil sein.
Als erstes mußt du die Parameter der Regelstrecke zumindest grob messen
(Nachlaufzeit des Motors, min. erforderliche Spannung bzw.
PWM-Verhältnis, um überhaupt zu laufen). Des weiteren ist es sehr
nützlich, der Strecke einen Totbereich zu spendieren (wenn
tolerierbar). Ich behaupte mal, dass du mit 3 oder 4
Geschwindigkeitsstufen schon zum Ziel kommst, weit weg von der
Sollposition volle Pulle, die Annäherung entsprechend weniger. Da wirst
du um ein wenig probieren nicht herum kommen.

von Oliver (Gast)


Lesenswert?

@carzy horse
na klar braucht man nicht unbedingt einen PID-Regler. Ich meinte damit
allgemein einen Regler. PID Regler alleine funktionieren mit digitalen
Eingangswerten sowieso nicht einwandfrei, da der D-Anteil sowieso immer
gefiltert werde muss (Quantisierungsrauschen).

Die 4 Schaltsufen, von denen du sprichst, sind im übrigen nicht
weiteres als ein P-Regler mit 4-bit Auflösung. Benutzt man sowieso eine
PWM zur Geschwindigkeitsregelung, so kann man auch gleich die volle
Auflösung des PWM - Ausganges benutzen (das Reduziert auch ein wenig
das ahnungsloses Herumprobieren mit den Geschwindigkeiten, da sowieso
alle zur Verfügung stehen).

@Sven
Ich würde als erstes einen einfachen P-Regler realisieren.

1. Positionsabweichung messen (Sollposition - Istposition).
2. Daraus ein proportionales PWM-Signal generieren ( PWM-Signal =
Abweichung * P-Faktor).
 -> Der Motor fährt in die Gewünschte Stellung und wird automatisch,
"kontinuierlich" langsamer.

Wenn der Motor anfängt zu schwingen, dann einfach den Faktor
reduzieren.
Wenn eine absolute Position angefahren werden soll, ist es notwendig
einen I-Anteil dem Regler hinzuzufügen (Summieren der einzelnen
Regelabweichungen).

Das sollte auch schon reichen. Der D-Anteil sorgt lediglich für eine
starke Beschleunigung bei plötzlicher Regelabweichung.

Viel Spaß beim Ausprobieren

von Oliver (Gast)


Lesenswert?

Sorry, ich meinte natürlich 2-bit Auflösung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.