PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Elektronische Lastmessung bei Schrittmotoren



H.A.R.R.Y.
22.09.2005, 15:57
Hi,

ich bin gerade dabei eine neue Schrittmotorsteuerung für meinen Roboter zu entwickeln. Ziel ist es, die aktuelle Drehmomentbelastung des SM (=Schrittmotor) zu erkennen. Drehmomentsensoren kommen dafür nicht in Frage (Baugröße, Preis, Gewicht, Energieaufnahme). Stattdessen möchte eine Möglichkeit vorsehen, den aktuellen Lastzustand direkt aus den Ansteuersignalen des SM herauszumessen. Bei Überlast droht nämlich Schrittverlust und genau das möchte ich vermeiden. Prinzipiell geht das so:

Ein SM ist eine Wechselstrom-Synchron-Maschine. Entsprechend des geforderten Drehmomentes bleibt der Rotor um einen bestimmten Phasenwinkel hinter dem Erregerfeld zurück. Bei 90° Phasenwinkel ist das maximale Drehmoment erreicht und der Motor an seiner Drehmomentgrenze. Ein SM mit permanentmagnetischem Rotor induziert bei Drehung ein sinusförmiges (oder zumindest sehr ähnliches) Spannungssignal. Die Amplitude ist proportional der Rotordrehzahl, die Frequenz gibt noch präziser Auskunft darüber. Der Augenblickswert der Gegen-EMK ist ein Maß für die aktuelle Rotorposition.

Den Phasenwinkel bekomme ich also heraus, indem ich die Gegen-EMK einer gerade unbestromten Wicklung messe und deren Phasenlage mit meinen Ansteuersignalen korreliere. Also setze ich voraus, daß der SM synchron zur elektrischen Erregung läuft. Schmutzeffekte durch die Sperrerholzeiten der Freilaufdioden und die Schaltzeiten der MOSFETs bleiben hier erst mal aussen vor. Ebenso die Wicklungsinduktivität mit ihren Nebenwirkungen. Die spielen erst bei höheren Schrittraten eine Rolle und können durch entsprechende Bauteileauswahl reduziert werden.

Aus diversen Gründen verwende ich KEINEN Choppertreiber (L297 o.ä.) und steuere die Halbbrücken direkt per µController an - das spart den Sequenzer samt Stromaufnahme und gestattet Messungen auf die Abläufe zu synchronisieren. Außerdem weiß ich, daß bei einem SM die Stromaufnahme allein kein zuverlässiges Maß für das abgegebene Drehmoment ist (im Gegensatz zum DC-Motor).

Nochmal die Zielsetzung: Ich möchte aus den elektrischen Signalen der SM-Ansteuerung erkennen, wie groß die Belastung des SM ist, und ob Überlastung droht (Rotorwinkel >=90° zum Erregerfeld). So ist es für jeden SM tauglich. Das ganze muß unbedingt µC-tauglich sein.

Hat jemand schon einmal solche Versuche gemacht oder sonstwie Erfahrungen auf diesem Gebiet? Dies ist keine Bitte mir meine "Hausaufgaben" zu erledigen, ich benötige ein wenig Erfahrungsaustausch um eventuelle "Fallen" zu vermeiden. Ach so: Verwenden möchte ich später 2-Strang-bipolar-SM, aber die Grundlagen gelten genauso für alle anderen Varianten auch.

Gruß René

Manf
22.09.2005, 16:46
Die häufigste Ansteuerungsart ist die mit 2 bestromten Phasen.
Möchtest Du bipolar mit Einzelphasenansteuerung nehmen?
Hast Du schon eine TreiberSchaltung an der Du auch messen kannst?

Ich beschäftige mich in einem andern Zusammenhang mit dem Thema und schlage vor, zur Lösung auch über den Weg Stromaufnahme kombiniert mit Drehzahl nachzudenken.

Die Stromaufnahme ist kein universelles Maß für die Last, zumindest nicht im Stand und auch nicht ohne Berücksichtigung der Drehzahl. Sie hängt aber bei gleicher Ansteuerung und gleicher Drehzahl von dem Lastwinkel des Ankers ab.
Manfred

H.A.R.R.Y.
22.09.2005, 18:02
Also: Eine Treiberschaltung habe ich - ich nehme einfach mal eine "alte" Platine mit L293E und einem ATmega16. Die ist zwar nicht für SM ausgelegt worden (war für DC-Motoren), aber die tut es schon mal. Der ATmega16 ist immerhin im Design umzuprogrammieren. Später werde ich dann eine maßgeschneiderte MOSFET-Brücke verwenden um auch noch die Verlustleistung und den Spannungsverlust der L293 einzusparen. Da sehe ich kein Problem. Aber dafür ist halt erst mal die "Grundlagenforschung" nötig.

Verwendet werden 2-Phasen-bipolar-SM, ca. 3ms/Step, 31Ohm, 18mH.

2 bestromte Phasen (auch als FullStep FullDrive bezeichnet) kann ich nicht nehmen. Da ist die Spannungsmessung nicht machbar, da dann beide Phasen niederohmig bestromt sind. Einen Konstantstromtreiber (= hoher Innenwiderstand) verwende ich auch nicht -> Verlustleistung.

Damit ist für erste Tests die Betriebsart FullStep WaveDrive (eine Phase unter Strom die andere hochohmig) am naheliegensten. Immer nur eine Phase bestromt, die andere liefert dann die Gegen-EMK. Das liefert immerhin mindestens 70% des Drehmomentes mit 2 bestromten Phasen. Gestern abend habe ich schon mal einen Versuchsaufbau zusammengestellt und erste Tests gemacht, ob der Motor dreht und ich am Scope was sinnvolles sehe. Jetzt muß ich die genaueren Testbedingungen ausarbeiten, Scopefotos machen und auswerten. Bei HalfStep ist in jedem zweiten (Halb-)Schritt auch eine Phase stromlos und damit die Gegen-EMK meßbar. Das ist aber noch Zukunftsmusik. Könnte aber gehen und wegen der HalfStep-Steuerung läuft der SM dann auch noch leiser.

Drehzahl mit Stromaufnahme könnte klappen, aber dafür müßte der Motor auf einem Prüfstand eingemessen werden um die Zusammenhänge Drehzahl-Laststrom zu bekommen. Dabei kenne ich aber immer noch nicht den Lastwinkel des Rotors. Der dürfte das verlässlichste Maß für die Last (und den drohenden Synchronitätsverlust) darstellen. Natürlich hängt die Stromaufnahme des SM bei KONSTANTER Drehzahl nur vom Lastwinkel und damit vom Drehmoment ab. Das ist das gleiche wie bei Drehstrommaschinen in der Industrie. Aber wie kann ich drohende Überlast rechtzeitig vor dem Verlust der Synchronität erkennen? Oder noch eine Stufe weitergedacht: Wie kann ich die Hochlauframpen (evtl. auch die Bremsrampen) vom nötigen Lastmoment abhängig machen? Selbst die Synchronmaschinen in industriellem Einsatz laufen ASYNCHRON hoch und rasten dann erst synchron ins drehende Magnetfeld ein. Um die SM voll synchron anzufahren brauche ich zwingend die Info wie weit sich der Rotor TATSÄCHLICH gedreht hat, bevor ich den nächsten Schritt korrekt kommutieren kann. Der Phasenstrom ist dabei nicht brauchbar, da ich die tatsächlich erreichte Rotor-Drehzahl bzw. -position (relativ) nicht kenne; ohne Auswertung der Gegen-EMK kann ich die Rotor-Position nur raten.

(Vielleicht?) noch ein Argument gegen die Variante mit der Stromaufnahme: Die Zeitkonstante der Wicklungsinduktivität mit dem Wicklungs- und Treiberinnenwiderstand verbietet sofortige Stromänderungen. Der Phasenstrom ist phasenverschoben zur Erregerspannung. Die Gegen-EMK dagegen ist nicht phasenverschoben und hat keine Zeitkonstante.

Was passiert wenn ich den Motor mit hoher Schrittrate ansteuere, der Rotor aber steht? Der induktive Blindwiderstand ist recht hoch und der Phasenstrom erreicht vielleicht nicht mal die Werte, die ein synchronlaufender Rotor unter Last erreicht. Also eine Überschneidung der Bereiche und damit kein Kriterium für eine Lasterkennung. Aus der Schrittrate kenne ich ja nur das Drehzahl-Soll. Das Drehzahl-Ist kann ich immer nur raten. Daher die Idee die Gegen-EMK in der unbestromten Wicklung zu messen.

Bei niedrigen Schrittraten ist vielleicht die Gegen-EMK nicht hoch genug um die Phasenlage sauber zu detektieren. Das hängt ja auch vom Quantisierungsrauschen des ADC und anderen Störungen ab. Zumindest kann ich einen konstanten Zusammenhang zwischen Motor(soll)drehzahl und erwarteter Gegen-EMK aufstellen. Außerdem erwarte ich in jedem Fall, daß eine bestimmte Mindestdrehzahl der Maschine nicht unterschritten wird. Damit gibt es immerhin eine Untergrenze für die Gegen-EMK.

Der Einsatz des SM ist im Fahrantrieb des Roboters. Dadurch habe ich kein konstantes Lastmoment und kann es auch nicht voraussetzen. Die Vorteile des SM zum Positionieren ohne zusätzliche Sensoren will ich aber trotzdem nutzen. Natürlich könnte ich den SM so ansteuern, daß er unter den schlechtestmöglich erwarteten Bedingungen sicher arbeitet, aber dann verliere ich drastisch an Geschwindigkeit. Und ab und zu vielleicht doch die exakte Position.

So viele Gedanken und irgendwie noch keinen rechten Plan.

@Manf: Was hast Du denn für einen Einsatz im Auge?

Manf
22.09.2005, 21:02
Aus der Schrittrate kenne ich ja nur das Drehzahl-Soll. Das Drehzahl-Ist kann ich immer nur raten. Daher die Idee die Gegen-EMK in der unbestromten Wicklung zu messen.
Zunächst einmal freue ich mich so viele nachvollziehbare Gedanken zu lesen.
Ein paar Anmerkungen habe ich in jedem Fall:
Einige Ansätze gehen von asynchronen Zuständen aus. Die sollten in Frage gestellt werden. Der asysnchrone Hochlauf einer Synchronmschine erfolgt ohne nenenswerte* Last (*weit weg von Nennlast).
Auch die Überlegung, dass die Schrittrate das Drehzahl-Soll angibt, und nicht das -Ist, überschreitet die Grenze des zu betrachtenden Bereichs.

Sonst bin ich dabei, die unbestromte Phase zur Spannungsmessug zu nutzen ist in Ordnung. Wie wäre es sie so zu nutzen, dass man eine Spannung anlegt und feststellt, welcher Strom fließt, dann kann man auf die induzierte Spannung schließen (natürlich nur in der kurzen Zeit bis eine Stromregelung einsetzt, eine Zeit, die aber zur Schrittperiode relativ länger und bedeutender wird, wenn die Drehzahl über den Bereich hinsausgeht der als statisch angesehen werden kann).

Zugegeben das ist keine klassische Betrachtung, aber das ist dann auch mein Ansatz, den ich in den nächsten Tagen einmal einbringen wollte. Weniger ein Meßverfahren mehr eine Berechnung, oder eine Betrachtung?
Manfred

H.A.R.R.Y.
23.09.2005, 18:16
[...]Der asysnchrone Hochlauf einer Synchronmschine erfolgt ohne nenenswerte* Last (*weit weg von Nennlast).

Das mag vielleicht bei den industriellen Synchronmaschinen so sein. Bei meinem Fahrantrieb habe ich aber keine Kupplung und daher muß der SM aus dem Stand heraus unter Voll-Last beschleunigt werden (die Masse des Roboters ist ja immer gleich und Kraft=Masse*Beschleunigung - über den Raddurchmesser und die Getriebeuntersetzung komme ich dann aufs nötige Motormoment). Das gilt Geschwindigkeitsunabhängig.

Alle SM-Literatur, die ich bisher lesen konnte, geht immer von genau definierten Lastbedingungen aus, die bei einem Fahrantrieb in "natürlicher" Umgebung (Wohnung) natürlich nie zutreffen. Also sind die dort vorgestellten Treibervarianten und Auslegungen nur sehr bedingt einzusetzen.


Auch die Überlegung, dass die Schrittrate das Drehzahl-Soll angibt, und nicht das -Ist, überschreitet die Grenze des zu betrachtenden Bereichs.

Also mit der Bemerkung kann ich jetzt auf Anhieb nichts anfangen. Du meinst wahrscheinlich, daß der SM typischerweise synchron zum Erregerfeld dreht und daher Drehzahl-Soll und Drehzahl-Ist identisch sind. Habe ich das richtig verstanden? Dann hast Du ganz klar Recht.

Nur möchte ich halt auch erkennen können wenn der SM nicht synchron dreht. Dann ist es zwar für die Positionierung zu spät, aber das ist immerhin eine Fehlerinfo die ich der Robotersteuerung nicht vorenthalten möchte - zumindest wenn sie ohne großen Aufwand aus den Messungen mit herauspurzelt.


Sonst bin ich dabei, die unbestromte Phase zur Spannungsmessug zu nutzen ist in Ordnung. Wie wäre es sie so zu nutzen, dass man eine Spannung anlegt und feststellt, welcher Strom fließt, dann kann man auf die induzierte Spannung schließen[...]

Warum so kompliziert? Der drehende (permanentmagnetische) Rotor induziert doch schon direkt eine Spannung. Aus der Akkuspannung minus Gegen-EMK kann ich allerdings auf den maximal möglichen Stromfluß (gemäß Herrn Ohm) rechnen und damit auf's höchstmögliche Drehmoment bei dieser Drehzahl. Zusätzlichen Meßstrom durch die eigentlich unbestromte Wicklung zu schicken könnte unerwünschten Einfluß auf den Motorlauf haben. Davon möchte ich lieber die Finger lassen.


Zugegeben das ist keine klassische Betrachtung, aber das ist dann auch mein Ansatz, den ich in den nächsten Tagen einmal einbringen wollte. Weniger ein Meßverfahren mehr eine Berechnung, oder eine Betrachtung?


Na auf alle Fälle, bitte berichte mal über Deine Erfahrungen. Ist immer gut andere Sichtweisen und Verfahren kennenzulernen. Ich werde meine Ergebnisse hier auch einstellen und kommentieren - sofern das gewünscht ist. Werden dann einige JPGs dabei sein.

So, jetzt muß ich in die Küche. Ich schaue später oder morgen wieder rein...

Manf
24.09.2005, 07:34
Elektronische Lastmessung bei Schrittmotoren
daß der SM typischerweise synchron zum Erregerfeld dreht und daher Drehzahl-Soll und Drehzahl-Ist identisch sind

Darauf sollte es auch es auch abzielen, dass der Motor sich dreht und die Phase zwischen Ansteuerung und Drehwinkel gemessen wird. Diese Phase ändert sich ja mit der Last und die sinunsförmige induzierte Spannung erreicht je nach Phase bezüglich der Ansteuerung unterschiedliche Werte.


Wie wäre es sie so zu nutzen ... Warum so kompliziert?... Zusätzlichen Messstrom

Es ist kein zusätzlicher Messstrom gemeint. Wenn man einmal annimmt, dass man den Schrittmotor mit Stromquellen treiben könnte, dann brauchte man keine unbestromte Phase sondern könnte durch Messung der Spannung und Eliminieren des Spannungsabfalls an der Wicklungsimpedanz die induzierte Spannung messen.

Man hat nun keine Stromquellen zur Verfügung, stattdessen hat man üblicherweise Spannungsquellen die im Chopperbetrieb die Spulen pro Schritt mit konstantem Strom versorgen. Sieht man von den Verlusten des Choppers ab, dann hat man Spannungsquellen die über das Tastverhältnis des Choppers einen Strom abgeben, der nach Eliminieren des Spannungsabfalls an der Wicklungsimpedanz der induzierten Spannung proportional ist. (Das gilt für der Versorgungsstrom aus der Spannungsquelle nicht für den Spulenstrom, der ja mit dem Chopper auf einen konstanten Wert geregelt wird)

Das klingt nur kompliziert, läuft aber auf eine einfache Strommessung hinaus. Die Schrittmotor-Versorgungsspannung hat damit pro Drehzahl einen Leerlaufstrom und einen Laststrom aufzubringen der vom Lastmoment abhängt, im Stillstand nicht so sehr wie bei höheren Drehzahlen bei denen es kritisch wird. Es kann eine gute Näherung sein, diesen drehzahlabhängigen Strom zu messen.

Ich will Dich aber nicht von den Untersuchungen mit der unbestromten Phase abbringen. Ich wollte die Strommessung zur Abschätzung des Last-Phasenwinkels nur einmal ansprechen.
Manfred

H.A.R.R.Y.
24.09.2005, 14:35
Das gilt für der Versorgungsstrom aus der Spannungsquelle nicht für den Spulenstrom, der ja mit dem Chopper auf einen konstanten Wert geregelt wird

Hm, der Spulenstrom wird vom Chopper konstant gehalten. Dadurch wirkt der wie eine Konstantstromquelle mit hohem Innenwiderstand und die Gegen-EMK kann abgeleitet werden. Nur: liegt da jetzt der Effekt der Leistungswandlung durch den Chopper (ist ja auch eine Art Schaltregler) zu Grunde? Ich stelle mir dabei folgendes vor (ohne Chopperverluste):
a) Rotor blockiert, keine Gegen-EMK, Motorleistung_A=Wicklungsstrom^2*Wicklungswidersta nd, Aufnahmestrom_A=Motorleistung_A/Betriebsspannung
b) Rotor dreht, Gegen-EMK, Motorleistung_B=Wicklungsstrom^2*Wicklungswidersta nd+Wicklungsstrom*Gegen-EMK, Aufnahmestrom_B=Motorleistung_B/Betriebsspannung
Wegen des Choppers ist beide Male der Motorstrom gleich, außerdem ist auch die Betriebsspannung beide mal gleich. Auch der Wicklungswiderstand ist gleich. Daraus ergibt sich: der Aufnahmestrom_A ist kleiner als der Aufnahmestrom_B und das ist eigentlich unsinnig...

Da ich über keinen Choppertreiber verfüge, kann ich in absehbarer Zeit auch keine Experimente damit anstellen.

Mittlerweile habe ich einige Messungen angestellt, die zeigen, wie die Phasenlage der Gegen-EMK vom Drehmoment abhängt. Sobald ich ein Tool habe um das Dokument als .pdf zu generieren, poste ich das mal.
Vorab schon mal folgendes: Im Gegensatz zur Strommessung, ist die Variante mit der Gegen-EMK unabhängig vom Motor sofort im Stande Auskunft über die (relative) Belastung abzugeben.
René

Manf
24.09.2005, 18:39
a) Rotor blockiert, keine Gegen-EMK
Ja, klar, auf eine Lastmessung bei Blockierung würde ich mich auch nicht einlassen.

Gut wenn Du den Vorgang mit der direkten Messung der induzierten Spannung untersuchst. Sie wird von der Motorkonstanten, der Drehzahl und von der Phasenlage abhängen.

Es wird sich dann sicher auch noch einmal eine Verbindung zur Messung des von einem Chopper aufgenommenen Stroms herstellen lassen, bei der nicht die eine Phase zur Messung freigehalten wird.

Ich bin auf alle Fälle weiterhin sehr interessiert.
Manfred

H.A.R.R.Y.
26.09.2005, 10:13
Amplitude wird beeinflußt durch Motorkonstante und Drehzahl. Ganz klar nach Induktionsgesetz.

Die Phasenlage (zum Erregerfeld) hängt vom Drehmoment (und nur davon) ab. Ohne das ich das tatsächliche Drehmoment in Nm kenne, kann ich aus dem Phasenwinkel auf die Last schließen und das relative Drehmoment (0..100%) ermitteln. Für meine Anwendung wird das reichen. Außerdem ist der Gag, daß ich jeden Schrittmotor auf die Art ansteuern kann ohne das tasächliche Drehmoment zu kennen.

Leider muß ich erstmal zusehen, wo ich ein einfaches Tool für das Erzeugen von pdf-Dateien herbekomme. Free-PDF ist ja ganz spaßig, benötigt aber noch irgendein Ghostview mit 10MByte. Das ist mir einfach zu viel per MODEM. Und das Word-Doc möchte ich hier nicht posten.

H.A.R.R.Y.
05.10.2005, 10:49
So, hier jetzt die angesagten Meßergebnisse. Ich habe versucht das Ganze einfach und verständlich zu halten. Mein Equipment ist auch nicht das Neueste aber es langt immer noch.

Grundsätzlich scheint die Lastmessung also zu funktionieren, jetzt muß ich erst mal ein Testboard für diesen Zweck (deutlich bessere Brücke als L293 mit 1N4004) entwerfen. Dann schaffe ich hoffentlich auch noch die Korrelation mit dem Phasenstrom.

Gruß René

07.03.2006, 22:04
Hallo zusammen,

ich bin auf Euren Thread gestossen und muss sagen, dass mich diese Thematik auch interessiert. Deshalb waren mir die hier zusammen gekommenen Beiträge Ansporn, an meiner Schaltung auch Messungen vorzunehmen.

Leider scheint der Thread in Vergessenheit geraten zu sein. Aber vllt. kann man ihn ja wieder beleben. :-)
Mich würden die Ergebnisse interessieren, die Ihr mit Konstantstromtreibern (Choppertreiber) gemessen habt.

Zu Beginn habe ich die, in den vorhergehenden Posts geschriebenen, Vorschläge ausprobiert. Gemessen wurde der Versorgungsstrom aus der Spannungsquelle über einen Shunt in der Leistungszuleitung zum Schrittmotortreiber (Versorgungsspannung H-Brücken). Um die Verluste niedrig zu halten, habe ich für den Shunt einen sehr kleinen Widerstandswert genommen, was sich aber natürlich auf den Spannungsfall bei Last- und somit Stromänderung auswirkt. Dennoch konnten Änderungen des Stromes vom Leerlauf zum Belastungsfall beobachtet werden. Wie genau diese Messung machbar ist, kann ich leider ohne Messmittel (definiertes Lastmoment usw.) nicht abschätzen. Zumindest erkennt man einen Überlastfall, den Stillstand (Schrittverlust). Aber dann ist es ja schon zu spät. Deshalb experimentiere ich zur Zeit mit dem TMC246. Dieser hat ja bekanntlich die StallGuard- Funktion, die ich in Zukunft nutzen möchte.

Nachdem ich mir nun einen TMC 246 organisiert habe, stellt sich mir die Frage, ob dieser auch nach dem Prinzip der Phasenmessung (zwischen Vorgabe- und Rotorwinkel) arbeitet. Es ist ja auch ein Choppertreiber.
Vielleicht könntet Ihr ja für Eure Experimente diese Funktionalität der StallGuard-Messung nachbilden. Aus diesem StallGuard- Signal müsste sich doch annäherungsweise ein Lastwinkel und somit das relative Drehmoment ergeben bzw. berechnen lassen. D.h. man müsste doch sowohl die relative Rotorposition zum umlaufenden Statorfeld, als auch die momentane Belastung des Schrittmotors erhalten. Kann man jetzt den Schrittmotor nicht ähnlich der vektorfeldorientierten Regelung bei Servomotoren kommutieren, dass der Lastwinkel immer annähernd 90° beträgt und einem so immer 100% Drehmoment zur Verfügung steht? Also die Drehmomentschwankungen des Schrittmotors und die Resonsanzneigung zu minimieren oder ganz zu unterdrücken. Oder wie René meinte, lastabhängig Beschleunigungsrampen zu "regeln"?

Wenn ja, müsste man dann im Mikroschrittbetrieb, je nach Lastwinkel, Phasenstromwerte aus der Schritttabelle (Look-Up-Table) überspringen bzw. zurückspringen, um den elektrischen Winkel (Lastwinkel) immer auf annähernd 90° zu halten?


Sehe ich das richtig, oder ist mein Ansatz falsch?
Vielen Dank schon einmal für Eure Anregungen.

Grüße, Hari

PS: Ein Lob an René wegen des PDF´s!!! Eine sehr schöne Dokumentation!

hari
07.03.2006, 22:07
...sorry, hatte vergessen mich einzulogen. ](*,)

Grüße, Hari

E-Fan
11.03.2006, 14:07
Wär es nicht auch möglich sich einen Encoder aus einer Strichscheibe und einer Gabellichtschranke zu bauen? Die Strichscheibe wird auf die Rotorwelle gesetzt und gibt damit direkte Auskunft über den Phasenwinkel des Rotors gegenüber der bestromten Wicklung.
Eine Strichscheibe kann man sich mit OpenOffice Draw, AutoCad, Corel und sonstwas für Programmen zeichen. Daraus "druckt" man sich eine PDF (mit hoher Auflösung), latscht zur nächsten Druckkerei die Filme ausbelichten kann (ein fertiger A4 Film kostet so um die 10 Euro) und klebt sich den Film auf eine Scheibe oder ähnliches und positioniert die Gablleichtschranke da hin wo sie gerade am besten passt.

Anbei mal soch eine Scheibe die ich mit OpenOffice in 3 Minuten gezeichnet habe. Sie ist für einen Schrittwinkel von 15° ausgelegt und soll nur eine Skizze darstellen.

H.A.R.R.Y.
13.03.2006, 11:51
@hari: Ganz vergessen ist der Thread noch nicht. Sobald ich meine Treiberplatine fertig habe, wird extensiv gemessen. Danach gibt es einen update zum PDF. Verwenden werde ich einen ATMEL AVR, diskrete MOSFETs und eine Vollschrittsequenz. Kein Mikroschritt. Konstantstromtreiber nehme ich nicht (Verluste), auch keinen Choppertreiber (HF-Störungen). Die Meßergebnisse vom PDF basieren auf einem ganz einfachen H-Brückentreiber (noch mit L293E), bei dem die jeweiligen Transistoren während der Schrittzeit voll durchgeschaltet sind. TMC246 ist mir nicht vertraut, interessiert mich auch nicht wegen der Eigenstromaufnahme. Der Motorstrom (gemittelte Summe) ist selbstverständlich abhängig von der abgeforderten Last (Drehmoment). Um das als Maß für kritische Lastmomente zu verwenden, benötigst Du aber auf jeden Fall die Motorkonstanten (I-Konstante) für die Kennlinie. Außerdem ist wegen der Wicklungsimpedanz der Motorstrom nicht nur vom Lastmoment sondern auch noch von der Drehzahl abhängig!
Danke auch für's Lob. Freut mich, daß es Dir gefallen hat.

@E-Fan: Der Zweck eines SM ist es eigentlich die zusätzlichen Überwachungen per Encoder-Scheibe überflüssig zu machen. Zugegeben, um den SM zu überwachen brauche ich ein Sensorsystem, damit ist es zusätzlicher Aufwand. Beim SM ist das Sensorsystem physikalisch bedingt gleich mit eingebaut und warum dann nicht auch gleich ausnutzen? Spart Gewicht, Platz, Bauteile und Energie.

Bei ATMEL habe ich vor kurzem auch noch eine Applikation gefunden, in der es um die Kommutierung von Brushless-DC-Motoren geht. Die sind eng mit den SM verwand und daher empfehle ich auch dort mal nachzulesen: http://www.atmel.com/products/AVR/mc/

E-Fan
13.03.2006, 20:51
Na wenn Du auf die 10mA der Gabellichtschranke und die zusätzlichen 10 Gramm Gewicht Wert legst haste natürlich recht. ;)
Der Encoder würde vielleicht nen Haufen Rechenarbeit und Programmierzeit sparen. Erstere könnte man ja dann für andere Zwecke nutzen.

hari
16.03.2006, 19:11
@René: Sehr schön!!! Wäre schade gewesen, wenn dieser interessante Thread vergessen worden wäre. Ich bin schon gespannt auf deine Ergebnisse.
Du hattest ja erwähnt, dass du dann an das Lastmoment/den Lastwinkel angepasste Rampen fahren möchtest. Im Prinzip ist das genau das, was ich derzeit auch probiere. Jedoch muss ich mich nicht um die Messung der Phasenlage bzw. des Lastwinkels kümmern, das übernimmt für mich der TMC246. Ich versuche mittels des zurückgelieferten Lastwertes das Drehmoment (bei konstanter Geschwindigkeit) konstant zu halten, oder vielleicht realistischer, die Drehmomentschwankungen des Schrittmotors zu minimieren. Ich kann im Mikroschrittbetrieb sehr schön "resonanz- und ruckelfrei" (soweit man das von einem Schrittmotor sagen kann) verfahren, sobald aber eine Überlast auftritt vibriert der Motor sehr stark um ca. 4-Vollschritte. Dies führt zu Schlägen auf die Mechanik. Ich muss den Motor jedoch weitertakten, kann ihn also nicht einfach in dieser Stellung, in der die Überlast aufgetreten ist, bestromt stehen lassen. Jetzt versuche ich einen Lösungsansatz zu finden, wie ich diese Eigenart eines Schrittmotors über eine optimale sensorlose Ansteuerung (relatives Drehmoment annähernd 100% halten) minimieren kann.


Die Eigenstromaufnahme habe ich leider noch nicht gemessen. Aber ich kann sagen, dass der TMC246 bis jetzt der einzigste Schrittmotortreiber ist, der bei mir nicht heiss wird, und das bei einem Phasenstrom von bis zu I = 1,5A! L298 oder gängige Toshiba- oder Allegro-Treiber kannste dagegen vergessen!

Danke wegen des Atmel-Links. Ich habe auch einen vor langer Zeit mal gefunden, der dich interessieren dürfte. Vielleicht kennste den aber schon:
http://www.elektroniknet.de/topics/automatisieren/fachthemen/2003/0001/

@E-Fan: Hallo, vielen Dank für deinen Beitrag. Aber wie auch René geht es mir um eine "sensorlose" Überwachung und Regelung des Schrittmotors. Und eine einfache Selbstbaulichtschranke wird zum Erfassen des Phasenwinkels nicht ausreichen. Bei einem Schrittwinkel von 1.8° oder 0.9°
braucht man schon einen Encoder mit 500 Inkrementen, die man dann noch flankenauswertet (um auf 2000 Inkremente zu kommen). Ist aber trotzdem alles machbar. Aber mich reizt halt die encoderlose Variante.

Grüße, Hari

hari
18.03.2006, 09:56
Hallo, ich habe noch eine interessante Seite zu diesem Thema gefunden:

http://academic.csuohio.edu/embedded/motor_control.html

Die wollte ich euch nicht vorenthalten. ;-)

Grüße, Hari

darwin.nuernberg
18.03.2006, 10:42
Schrittverluste erkennen...
Wenn es nur darum geht zu erkennen ob ein Schritt verloren geht,
könnten die Treiber von Trinamic weiterhelfen.

Ich selbst bin immer wieder mal daran eine Schltung dafür zu entwickeln,
dann kommt wieder mal was dazischen oder ich habe einfach keine lust mehr.

Momentan eher mal wieder keine Lust und andere Dinge vorgeschoben.


Aber schau dir Doch mal das Datenblatt an:


TMC246

Smart Power Microstepping PWM Motor Driver
with sensorless stall detection (StallGuard™) protection,
diagnostics and SPI Interface

http://www.trinamic.com/tmc/media/images_products/TMC246_PA.jpg
http://www.trinamic.com/tmc/render.php?sess_pid=289

hari
18.03.2006, 11:29
@darwin:

Hallo Darwin, die TMC246 verwende ich schon. Trotzdem vielen Dank für den Tipp. Ich möchte nur versuchen, mit Hilfe des StallGuard-Signales eine Art feldorientierte Kommutierung für den Schrittmotor zu erreichen, um den Lastwinkel bzw. das Drehmoment möglichst konstant zu halten. Dann könnte ich mit dem Motor optimale Rampen fahren und vielleicht auch die bauartbedingten Drehmomentschwankungen minimieren. Das würde auch gleich einen positiven Effekt auf Resonanzen und Schrittverluste haben.

René versucht ja ähnliches, nur eben mit diskreten Bauteilen und eigener Auswertung im µC. Ich möchte aber gleich das StallGuard- Signal für die optimale Ansteuerung weiterverwenden. Ich bin nur noch nicht dahintergekommen, wie ich die Ansteuerung verändern muss, um den konstanten Lastwinkel (möglichst nah an 90° elektrisch) zu erreichen. Jedenfalls haben meine Experimente noch keine aussagekräftigen positiven Effekte gezeigt. Leider.

Aber wenn du auch mit den TMC "spielst", vielleicht fällt dir ja etwas dazu ein.

Grüße, Hari

darwin.nuernberg
19.03.2006, 22:24
Aber wenn du auch mit den TMC "spielst", vielleicht fällt dir ja etwas dazu ein.
Grüße, Hari

Spielen ist genau die richtige Bezeichnung.
Ich hänge immer noch am Layout, und das wird sich wohl die nächste Zeit auch nicht so schnell ändern.

Da kommen mir immer wieder Zweifel,
dann gefällt n´mir das Design nicht,
dann kommen wieder andere Fragen.

Irgendwie habe ich das mit dem TMC und dem SPI noch nicht ganz gefressen. Und dann kam Mr. Niemand und empahl mir mit den 428 als Interface zu verwenden, was mir für meine Anforderung drei Achsen steuerung) natürlich entgegen kam.

Also wieder neu angefangen und momentan bei seite gelegt (schöpferische Inspirationsphase ;-))

Ohkäih?

hari
07.06.2006, 22:00
Hallo zusammen, ich habe auch mal wieder etwas "Stoff", um zu diesem Thread beizutragen. ;-)

Es handelt sich dabei um die Dissertation von Peter Aicher, geschrieben an der TU München, mit dem Titel: "Winkelrekonstruktion und sensorlose Regelung von Hybridmotoren".

Das PDF ist unter folgender Adresse verfügbar: http://mediatum.ub.tum.de/mediatum/servlets/TUMDistributionServlet?id=mediaTUM_disshab_0000000 00001840

Schaut es euch einmal an, ist eine sehr interessante Sache und auch eine schöne Arbeit, in der dieses Thema (meiner Meinung nach ;-) ) gut aufgearbeitet worden ist.

Grüße, Hari

24.06.2006, 09:03
Hallo Leute,

herzlichen Dank für die weiteren Links zum Thema, ich selbst komme seit einigen Wochen nicht mehr dazu selbst weiterzumachen, da ich anderweitig viel um die Ohren habe. Es wird auch noch eine ganze Weile dauern, bis ich die ersten Meßergebnisse mit den SM vorweisen kann. Ich schaue trotzdem ab und an (wenn auch selten) mal 'rein.

Gruß René ("H.A.R.R.Y." - hatte nicht den Nerv mich für die Minute einzuloggen)

freakadelle
01.11.2006, 02:08
Moin!

Ich bin grad studiumsbedingt mal wieder in den Bereich µC getrieben worden, aber so mittlerweile macht es wieder richtig Spaß..
Also zu Thema:(was ja schon ziemlich alt ist)
Habe hier eine unipolar betriebenen Schrittmotor (jeweils nur eine der vier Teilwicklungen bestromt um etwas mehr klarheit zu haben) und hab dann natürlich auch mal etwas mit dem Oszi gespielt und kam dabei auf folgende Idee.
Spule 2b ist kurz vor der Bestromung - > Spule 1a hatte viel Zeit um das Magnetfeld abzubauen und wirkt nun rein als Generator in Verbindung mit dem Permanentmagneten des Rotors. Wenn die induzierte Spannung an Spule 1a kurz vor der Bestromung von Spule 2b annähernd null ist, dann folgt daraus doch, dass der Rotor es so grade schafft, den Schritt noch voll auszuführen. Anders ausgedrückt, je höher die induzierte Spannung an Spule 1a umso weiter bin ich von der Belastungsgrenze weg. Prinzipiell sollte man da einen Kennwert finden, ab welcher Spannung der Motor anfängt zu kippen.

Je mehr ich drüber nachdenke kommen mir zweifel ob das auch bei langsamen schrittfolgen funktioniert.... aber das ist dann eher ein generelles Problem der induzierten Spannung... wenn man zu lange wartet um sie zu messen, ist der Rotor evtl. schon längst auf dem nächsten Pol "eingerastet" und somit bewegt sich nichts mehr, was ein Magnetfeld induzieren könnte.....

Sollte dieses Verfahren schon als untauglich abgestempelt sein, so lasst es mich doch wissen, dann brauch ich meine Zeit net dran verschwenden, sondern versuch lieber anständige Rampen zu programmieren.

MfG

Ole

H.A.R.R.Y.
22.11.2006, 10:56
Also ich habe es noch nicht geschafft, dieses Thema abzuschließen. Und damit ist es für mich noch offen ob tauglich oder nicht. Ich erwarte: ja es geht grundsätzlich.



auch bei langsamen schrittfolgen funktioniert.... aber das ist dann eher ein generelles Problem der induzierten Spannung

Stimmt. Je langsamer die Maschine dreht umso geringer die Amplitude und umso ungenauer läßt sich der Nulldurchgang finden. Daher ist die Drehzahl nach unten vom Motor, der ADC-Auflösung und dem Signalrauschen begrenzt. Nach oben hin setzt die Physik (Spuleninduktivität, Versorgungsspannung, max. zul. Strangspannung) die Grenzen.

Eventuell kann man die Signalamplitude mit einem Differenzverstärker noch etwas raufkitzeln. Wenn der bei hohen Drehzahlen übersteuert ist das nicht so tragisch - Hauptsache er ist in wenigen µs aus der Übersteuerung draussen.

Gruß H.A.R.R.Y.