Forum: Mikrocontroller und Digitale Elektronik DC Motor mit Hallgebern über Labview steuern (Pos. Regelung)


von Jakob S. (Firma: Beuth HS) (mechatronikn00b)


Lesenswert?

Hallo Forengemeinde,

ich muss für einen Kurs einen Kreuztisch zum laufen bringen.

Der Tisch hat 2 DC Motoren (12V) die je ein 1:30 Getriebe haben und an 
der anderen Seite 2 Hallsensoren.

Dazu hat unser Prof mir den Tipp gegeben, den Motor über eine Rampe 
anzufahren und zu Bremsen und diese abhängig davon zu machen, wie viel 
Zähler der Motor "durchläuft" bevor er aus einer bestimmten 
Geschwindigkeit anhält.

Quasi, dass man in Labview eine gewisse Strecke (sprich Inkremente) 
vorgibt und eine Regelung sozusagen abliest, wie viel Inkremente 
abgefahren wurden und bei einer bestimmten (Zielwert minus x) Zahl den 
Motor über eine Rampe anhält um die exakte Position anzufahren.

Ich hab zwar online schon etwas über Motorsteuerung herausfinden können 
unter anderem unter: 
http://www.servotechnik.de/fachwissen/regelung/f_beitr_00_608.htm

Allerdings ist mir als Labview Anfänger jetzt nicht klar wie ich das 
konkret in Labview umsetzen kann.

Morgen bin ich wieder im Labor, falls ihr noch weitere Infos über den 
Motor/Steuerung haben wollt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Jakob Sonnenberg schrieb:
> und an
> der anderen Seite 2 Hallsensoren.

Da ist zuerstmal wichtig, was für Signale die Hallsensoren liefern. 
Zählen sie Umdrehungen? Wenn ja, welche - die des Motors, die der 
Getriebewelle oder sind es nur Endschalter?
Nehmen wir mal an, die Sensoren zählen Umdrehungen des Motors. Du 
brauchst also als Grundfunktion Zähler für X und Y, die die Signale 
zählen, und zwar hoch oder 'runter, abhängig von der Drehrichtung des 
Motors, die du ja weisst, weil du die Motore selber ansteuerst.
Gut, jetzt hast du eine Ahnung, wieviel Impulse für jede Achse geliefert 
werden. Als nächstes solltest du eine Funktion basteln, die dir erlaubt, 
mit einer bestimmten Geschwindigkeit die Motoren anzufahren, dabei ist 
es sehr hilfreich, die Motoren mit einer PWM Steuerung o.ä. anzusteuern, 
damit du deren Geschwindigkeit beeinflussen kannst. Nun fütterst du die 
gewünschten Koordinaten als Sollwert in deinen Regler.
Du hast also eine Vorgabe (Sollwert) und die Ist-Werte von den beiden 
Achsen aus der ersten Funktion.
Nun ist alles fertig zur Integration des P(ID) Reglers. Die PID Regler 
bekommen als Sollwerte deine Vorgabekoordinaten und als Istwert die 
beiden X und Y Zähler. Und die Regler liefern dir am Ausgang den 
Stellwert als Amplitude für den Motor.

: Bearbeitet durch User
von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Jakob,

> Der Tisch hat 2 DC Motoren (12V) die je ein 1:30 Getriebe haben und an
> der anderen Seite 2 Hallsensoren.

Was liefern die Sensoren für eine Auflösung pro Umdrehung?

> Dazu hat unser Prof mir den Tipp gegeben, den Motor über eine Rampe
> anzufahren und zu Bremsen und diese abhängig davon zu machen, wie viel
> Zähler der Motor "durchläuft" bevor er aus einer bestimmten
> Geschwindigkeit anhält.

Was ist denn das für ein Prof., also welche Fachrichtung?

> Quasi, dass man in Labview eine gewisse Strecke (sprich Inkremente)
> vorgibt und eine Regelung sozusagen abliest, wie viel Inkremente
> abgefahren wurden und bei einer bestimmten (Zielwert minus x) Zahl den
> Motor über eine Rampe anhält um die exakte Position anzufahren.

Das wäre dann aber eine Steuerung und keine Regelung.

Mit freundlichen Grüßen
Thorsten Ostermann

von Jakob S. (Firma: Beuth HS) (mechatronikn00b)


Lesenswert?

Matthias Sch. schrieb:
> Jakob Sonnenberg schrieb:
>> und an
>> der anderen Seite 2 Hallsensoren.
>
> Da ist zuerstmal wichtig, was für Signale die Hallsensoren liefern.
> Zählen sie Umdrehungen? Wenn ja, welche - die des Motors, die der
> Getriebewelle oder sind es nur Endschalter?
> Nehmen wir mal an, die Sensoren zählen Umdrehungen des Motors.

Genau, es ist eine Art von EMG30 Motor 
(http://www.robot-electronics.co.uk/htm/emg30.htm) das Datenblatt ist da 
leider etwas mager.

>Du brauchst also als Grundfunktion Zähler für X und Y, die die Signale
> zählen, und zwar hoch oder 'runter, abhängig von der Drehrichtung des
> Motors, die du ja weisst, weil du die Motore selber ansteuerst.
> Gut, jetzt hast du eine Ahnung, wieviel Impulse für jede Achse geliefert
> werden. Als nächstes solltest du eine Funktion basteln, die dir erlaubt,
> mit einer bestimmten Geschwindigkeit die Motoren anzufahren, dabei ist
> es sehr hilfreich, die Motoren mit einer PWM Steuerung o.ä. anzusteuern,
> damit du deren Geschwindigkeit beeinflussen kannst. Nun fütterst du die
> gewünschten Koordinaten als Sollwert in deinen Regler.
> Du hast also eine Vorgabe (Sollwert) und die Ist-Werte von den beiden
> Achsen aus der ersten Funktion.
> Nun ist alles fertig zur Integration des P(ID) Reglers. Die PID Regler
> bekommen als Sollwerte deine Vorgabekoordinaten und als Istwert die
> beiden X und Y Zähler. Und die Regler liefern dir am Ausgang den
> Stellwert als Amplitude für den Motor.

Ist da nicht das Problem, dass der Motor bzw der Vortrieb durch die 
Eigenschaft eines PID Reglers stottert? Wir haben in der Einführung zu 
Labview uns einen Füllstandsregler eines Tanks gebastelt, aber die 
Eigenschaft (Bei über den Sollwert kommen regelt er zurück usw) ist da 
vielleicht etwas ungeignet für ein präsises Anfahren zu einer 
Endposition.

Bezüglich einer PWM Ansteuerung muss ich hier nochmal nachfragen ob die 
Motoren dafür geeignet. sind

von Jakob S. (Firma: Beuth HS) (mechatronikn00b)


Lesenswert?

Thorsten Ostermann schrieb:
> Hallo Jakob,
> Was liefern die Sensoren für eine Auflösung pro Umdrehung?

Die Sensoren sollten pro Umdrehung der Getriebeachse 30 Inkremente 
ausgeben jeweils.

>
> Was ist denn das für ein Prof., also welche Fachrichtung?
http://www.beuth-hochschule.de/people/detail/1045/ Mein Mechatronik 
Professor, Labor heißt "Mechatronische Systeme"

>> Quasi, dass man in Labview eine gewisse Strecke (sprich Inkremente)
>> vorgibt und eine Regelung sozusagen abliest, wie viel Inkremente
>> abgefahren wurden und bei einer bestimmten (Zielwert minus x) Zahl den
>> Motor über eine Rampe anhält um die exakte Position anzufahren.
>
> Das wäre dann aber eine Steuerung und keine Regelung.

Naja die Regelung ist ja die, dass er quasi vorher weiß wie viel 
Inkremente der Motor braucht und prüft, ob die Anzahl der Inkremente bis 
er anhalten soll schon abgefahren wurden.

von Jakob S. (Firma: Beuth HS) (mechatronikn00b)


Angehängte Dateien:

Lesenswert?

Also, wir haben schon etwas gemessen und unser Motor mit Übersetzung und 
Tischgewindesteigung fährt 1 mm wenn sich die Motorwelle 30 Mal dreht, 
also 33µm pro Impuls Vortrieb.


Jetzt stellt sich mir halt nur die Frage wie ich ihm bei Labview so 
steuere das er bsp. bei X Restweg anhalten soll.

Sprich, wenn wir mal durch Testreihen herausgefunden haben, wie lange er 
von meintetwegen 10V Output anhält. Diesen Weg will ich dann sozusagen 
in eine Case-Schleife einbinden und ihm sagen das er dann stoppen soll.

Ich bin da halt etwas unwissend, wie ich da nun in der DAQ Hilfe den 
Output steuern soll. Denn aus den von Labview 2013 vorgegeben 
Triggeroptionen etc. werde ich nicht so recht schlau.

Zur Info: unsere NI A/D Box ist eine NI USB-6215.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Wenn du es so machen willst wie dein Prof vorgeschlagen hat: 
Geschwindigkeit auf Null setzen, Restweg messen. Beim nächsten Mal dann 
entsprechend vorher bremsen. Das klappt natürlich immer nur für eine 
Geschwindigkeit, sonst musst du dir eine Tabelle anlegen oder das aus 
der bewegten Masse vorausberechnen.

Richtig sauber wäre es, eine richtige ruckbegrenzte Sollwertrampe zu 
berechnen [1,2].

Ansonsten implementiert man einen Regler, der Soll- und Istwert 
vergleicht und entsprechend den Motor ansteuert.

[1] www.polydrive.ch/dlCenter/pd/2009_2/PD0209_12_13.pdf
[2] 
http://infosys.beckhoff.de/index.php?content=../content/1031/dynamic/html/ruckbegrenzteshscbeschleunigungsprofil.htm&id=

Mit freundlichen Grüßen
Thorsten Ostermann

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.