mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Simulation eines Motors mittels µC


Autor: Sebastian V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hätte da ein Problem, bei dem ich mit meinem aktuellen Wissensstand 
etwas überfordert bin. Und zwar muss ich mit meinem Mikrocontroller 
einen Motor simulieren.

Ich erklär erstmal kurz die Randbedingungen. Mein µC bekommt einen 
Drehzahlsollwert von 0-5V. Dieser Wert wird alle 2ms (also 500Hz) 
aktualisiert und zwischen drin konstant gehalten. Diesen Wert wollte mit 
2Khz abtasten. Zum Filtern vor dem ADC habe ich ein RC-Glied 1. Ordnung 
mit einer Eckfrequenz von etwa 720 Hz.

Aus dieser eingelesenen Spannung berechnet der µC eine Drehzahl. 
Ausgehend von dieser Drehzahl simuliert der µC einen Inkrementalgeber.

Soweit so gut. Diese eingelesenen Werte muss ich ja jetzt in irgendeiner 
Form filtern und glätten um mit meinem Inkrementalsignal nicht wild 
durch die Gegend zu springen, die Regelung des (simulierten) Motors soll 
ja weiterhin funktionieren.

1) Bei einer maximalen Drehzahl von 3000U/min muss meine Funktion, die 
die Inkremente des Gebers simuliert, diesen Drehzahlwert maximal mit 
50Hz einlesen. Ist das korrekt? Oder bin ich damit schon auf dem 
Holzweg? Alternativ könnte man auch die 500Hz heranziehen. Dann würde 
ich den überabgetasteten Sollwert erstmal durch Mittelwert Bildung 
glätten. Also jeweils 4 Werte ergeben einen neuen Drehzahlsollwert.

2) Wie kann ich den Drehzahlsollwert nun filtern? Ich muss damit ja 
irgendwie die Trägheit des Motors simulieren, welche ja abhängig von der 
Last ist (die durchaus recht groß sein kann). Diese Last soll kein 
Parameter werden, der veränderbar ist. Da die Regelung in einem relativ 
weiten Bereich funktionieren muss (keine Last bis große Last), dürfte 
die simulierte Trägheit ja relativ unkritisch sein, falls sie in der 
richtigen Größenordnung liegt. Seht ihr das auch so?

3) Meine Filterung müsste doch theoretisch abhängig von der Höhe des 
Sollwertssprunges sein, oder? Einem Sprung von 200 auf 500 Umdrehungen 
muss ich doch sehr viel schneller folgen als einem Sprung von 100 auf 
1500 Umdrehungen. Wie kann man soetwas realisieren? Grundsätzlich die 
Werte erstmal Filtern und glätten, aber pro neuem Wert nur eine gewisse 
Erhöhung der Drehzahl erlauben? Oder kann man eine 
Sprunghöhenabhängigkeit in das Filter einbauen?

4) Mit welchem Filter soll ich nun da ran gehen? Gleitender Mittelwert? 
Oder lieber mit unterschiedlichen Filterfrequenzen?

Ich hoffe Ihr könnt mir ein wenig weiterhelfen. Wäre euch dafür sehr 
dankbar!

Liebe Grüße

Sebastian

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian V. schrieb:
> 2) Wie kann ich den Drehzahlsollwert nun filtern? Ich muss damit ja
> irgendwie die Trägheit des Motors simulieren, welche ja abhängig von der
> Last ist (die durchaus recht groß sein kann). Diese Last soll kein
> Parameter werden, der veränderbar ist. Da die Regelung in einem relativ
> weiten Bereich funktionieren muss (keine Last bis große Last), dürfte
> die simulierte Trägheit ja relativ unkritisch sein, falls sie in der
> richtigen Größenordnung liegt. Seht ihr das auch so?

Irgendwie ist deine Beschreibung seltsam. Du willst doch den Motor 
simulieren und zwar möglichst genau, bzw eigentlich willst du den Motor 
samt angeschlossener mechanischer Last simulieren.
Deine Ausführungen zu Punkt 2) sind auf jeden Fall vollkommen unsinnig. 
Du willst einen Motor simulieren, keinen Regler.
Und beim Motor hängt die Drehzahländerung pro Zeit eben linear vom 
anzutreibenden Trägheitsmoment ab. Also musst du das berücksichtigen, 
ansonsten ist deine Simulation völlig falsch.
Du brauchst entweder eine Kennlinie bzw. eine Kennlinienschar von deinem 
Motor mit dem Drehmoment in Abhängigkeit von der Drehzahl und der 
anliegenden Spannung, oder du hast eine Gleichung, die dir das 
Drehmoment entsprechend aus den Werten hinreichend genau berechnet. Aus 
dem Drehmoment und dem Trägheitsmoment von Motor und angetriebener 
Mechanik berechnet sich die Drehzahländerung pro Zeitintervall. Daraus 
berechnet sich dann die Zeit zwischen 2 Impulsen deiner (simulieren) 
Tachoscheibe am Motor.
Mit irgendelchen Filtern egal ob analog oder digital hat das nichts zu 
tun.
Bevor Du anfängst mit Abtastraten und notwendigen Filtern herumzurechnen 
solltest Du zunächst verstehen wie sich ein realer Motor samt Last 
verhält und das im µC nachbilden.

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.