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.
:
Bearbeitet durch User
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.