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.
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.
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
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
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.
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.
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