Forum: Mikrocontroller und Digitale Elektronik Regelung?!


von Carsten S. (soulfly)


Lesenswert?

Hallo Zusammen,
ich hab ein Problem mit einer digitalen Regelung. Ich will einen 
DC-Motor auf eine konstante Geschwindigkeit mit einem Mikrocontroller 
regeln.

Sollwert byte (0-255)
Istwert über IGR (0-5V)
Stellgröße PWM 8bit

Nun lese ich den aktuellen Wert über den AD-Wandler des Controller ein.

Starte Timer und zähle die externen Interrupt in der Zeit
-> normiere ich es auf 255.

mit stellwert = (istwert*faktor+sollwert)/(faktor+1)

will ich nun regeln!!

geht leider nicht so wie ich will.

Muss ich hier noch eine Totzeit bedenken oder gehe ich das komplett 
falsch an?

Was mach ich eig wenn ich 255 als Sollwert habe und von außen jetzt eine 
Störung kommt. Wie kann ich denn da noch gegenregeln, ich kann doch nur 
bis Stellgröße 255?!

Gruß Carsten

von Jakob (Gast)


Lesenswert?

Hallo Carsten,

ich bin mir nicht sicher, ob ich alles ganz richttig verstanden habe und 
das mit der Regelungstechnik ist auch schon ein Weilchen her, aber ich 
will es trotzdem mal versuchen. ... Vielleicht hilft es Dir ja.

Also wenn der Wert 255 deiner maximal erreichbaren Drehzahl entspricht, 
dann kannst Du nicht darüber hinaus. Dir fehlt dann ganz einfach die 
Regelreserve.

Bei Deiner Berechnung des Stellwertes bin ich mir auch nicht ganz 
sicher, ob das so sein kann. Wenn Du Regelst brauchst Du ja eigentlich 
eine negative Rückkopplung. Der Stellwert sollte sich also aus der 
Differenz von Sollwert und Istwert ergeben.

Stellwert = Sollwert - Istwert

Ansonsten würde sich das ganze beliebig aufschwingen ... bei Dir 
natürlich nur bis zum Maximalwert von 255.
Welchen Reglertyp möchtest Du denn verwenden? Einen einfachen P-Regler, 
der einen bleibenden Regelfehler hat oder den auch nicht sehr viel 
komplizierteren PI-Regler?

Gruß Jakob

von Carsten S. (soulfly)


Lesenswert?

Hallo JaKob,
mit der Regelreserve hast du recht, jetzt wo du es sagst hab ich das 
auch schon mal gehört ;)

Ich dachte auch immer das ich eine differenz brauche. Da kann ich mir 
leider gleich garnicht erklären wie das dann geregelt werden soll??

Ein PI-Regler sollte es schon sein aber wie gesagt ich habe keinen 
Ansatz um das zu realisieren.

Wenn mir jemand mal ein Beispiel für eine einfache (oder auch 
komplizierte) Regelung posten würde könnte ich es mir vielleicht da 
abschauen.


Gruß Carsten

von XC866 (Gast)


Lesenswert?

Hallo Carsten

Bin auch auf der Suche nach einem Beispielregler.
Mit welcher Sprache möchtest du Programmieren?

Gruss

von StefanK. (Gast)


Lesenswert?

Schau Dir mal das an:

http://www.roboternetz.de/wissen/index.php/Regelungstechnik

Dort gibt es auch Programmbeispiele für PI-Regler.

Gruß Stefan

von Carsten S. (soulfly)


Lesenswert?

In C oder Assembler ist mir eig gleich,
@Stefan: ja die Seite kenn ich bereits hat mich aber nicht zum Ziel 
gebracht. Da es irgendwie so nicht funktionieren will...
Ich bräuchte ein erprobtes Beispiel da ich denke das mein größtes 
Problem die Totzeit ist?!

Gruß Carsten

von Oliver H. (stokes)


Lesenswert?

Hallo Carsten,

versuch doch erstmal einen einfachen P-Regler.

Stellwert = Verstärkung * (Sollwert - Istwert)

von Jakob (Gast)


Lesenswert?

Leider ist meine Zeit gerade sehr knapp bemessen. Deshalb mal nur ein 
paar schlaue Sprüche und Stichworte. ;)

Such mal unter Kaskadenregelung. Das ist so eine Standardregelung für 
Gleichstrommotoren. Ich finde an der kann man einiges lernen.

Dann hätte ich noch zwei Buchtipps:
1. Elektrische Antriebe (der Autor war glaue ich Föllinger oder 
Schröder) gibt es in jeder Uni-Bibliothek aber auch ganz günstig im 
Netz. Da wird in einem der Bände die Regelung von Gleichstrommaschinen 
ausführlich und sehr gut (auch für schnelle Umsetzung) erläutert.

2. Taschenbuch der Regelungstechnik von Lutz Wendt. Das ist ein sehr 
gutes Buch zum Nachschlagen und für die Grundlagen der Regelungstechnik. 
Egal ob analoge oder digitale Regelungen ... wird alles darin behandelt.

Uni-Bibliotheken kann ich übrigens nur empfehlen ... auch denen die wie 
ich nicht mehr zur Uni gehen. SIe haben oft gute Öffnungszeiten und 
verleihen in der Regel auch an nicht Studenten.

Vielleicht hilft DIr ja etwas davon. Viel Erfolg noch.

Gruß Jakob

von Carsten S. (soulfly)


Lesenswert?

Kurzer Zwischenstand:

der Regler läuft soweit als PI. Jedoch schwingt er ganz schön über :(

Was muss ich da runter oder hochsetzen das er dies nicht mehr tut?
Ich habe zur Verfügung Kp und Ki

Aktuell Kp=0.3 und Ki=0.6. Alles über eins treibt den Regler gnadenlos 
in die Ecke?!

Ist eine Totzeit von 400ms vom stellen bis zum stabilen Istwert normal?

Gruß Carsten

von StefanK. (Gast)


Lesenswert?

Hi Carsten,

schalt mal den I-Anteil aus, solange der der Istwert ausserhalb des 
Proportionalbandes ist.

Der I-Anteil ist eine Aufsummierung der Regelabweichung über die Zeit, 
die ist am Anfang ziemlich groß und wird solange aufaddiert, bis der 
Istwert das erste mal über den Sollwert steigt, erst danach findet eine 
Vorzeichenumkehr statt und der I-Anteil wird wieder kleiner. Deshalb 
schwingt der Regler beim Anfahren weit über.

Gruß Stefan

von Erik S. (erik_s)


Lesenswert?

Ich habe zwar bisher nur mit analogen Regelschaltungen gearbeitet, aber 
in einem Laborversuch mussten wir auch einmal eine Drehzahlregelung 
eines DC-Motors mit P-I-Regler aufbauen und einstellen.
Die Einstellprozedur war (insofern ich mich recht erinnere) folgende:
Ki auf null, Kp von null langsam erhöhen, bis der Regler zu schwingen 
beginnt. Diesen Wert dann halbieren und beibehalten. Nun Ki langsam 
erhöhen, bis der Regler wiederum zu schwingen beginnt, Ki halbieren. 
Dann sollte der Regler auf einen guten Kompromiss zwischen Schnelligkeit 
und einem stabilen Regelverhalten eingestellt sein.

Ich hoffe, ich konnte helfen.

von Thomas (kosmos)


Lesenswert?

wie wird die Drehzahl gemessen? Habt ihr ausrechend Impulse pro 
Umdrehung zur Verfügung, damit man öfters nachregeln kann(Überschwinger 
verhindern)? Ändert sich die Last oder ist die immer gleich?

von Carsten S. (soulfly)


Lesenswert?

Also die Last ist von der Umgebung abhängig da es sich hier um ein 
Fahrzeug handelt. Wenn es bergauf geht mehr und andersrum weniger.
Wir messen mittels IGR mit 16 Impulsen/Umdrehung. Ich glaube da liegt 
auch das Problem, da wir so nicht schnell genug sind?! Ich ermittele die 
Drehzahl mittels einem externen Interrupt und eines Timers, vielleicht 
gibt es da auch eine andere Lösung?

von Daniel (Gast)


Lesenswert?

schalt den i anteil aus, stell den p regeler möglichst gut ein...
dann i anteil dazutun und optimieren...

die etwas brutalere methode wäre über die sprungantwort (naja hier in 
der realität ein trapez...) den regler einfach so einstellen das er den 
sprung des motors mitmacht (nen sprung (trapez) kanste natürlich nicht 
auf voller pullle machen, aber funktioniert tipptop....)

von Sonic (Gast)


Lesenswert?

@Carsten:
Du sprichst immer von Totzeit, was du aber eher berücksichtigen solltest 
ist die Nachstellzeit! Das ist die Zeit mit der der Integrator seinen 
Wert erhöht. Die Totzeit ist die Zeit die zwischen Stellgliedänderung 
und Istwertänderung liegt.

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.