Elektronische Lastmessung bei Schrittmotoren
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é
Liste der Anhänge anzeigen (Anzahl: 1)
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é
elektronische Lastmessung
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!
Liste der Anhänge anzeigen (Anzahl: 1)
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.