mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Regelung?!


Autor: Carsten Sch. (soulfly)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten Sch. (soulfly)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: XC866 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Carsten

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

Gruss

Autor: StefanK. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten Sch. (soulfly)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver H. (stokes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Carsten,

versuch doch erstmal einen einfachen P-Regler.

Stellwert = Verstärkung * (Sollwert - Istwert)

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten Sch. (soulfly)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: StefanK. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Erik S. (erik_s)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Carsten Sch. (soulfly)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....)

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.