Forum: Mikrocontroller und Digitale Elektronik Schrittmotor Anschlag erkennen


von paul (Gast)


Lesenswert?

Hallo,

ich habe das Problem, das ich bei einem Schrittmotor einen mechanischen 
Anschlag erkennen muss. Ich verwende einen Atmega168, L297 und L298 
inkl. der Sens-Widerstände. An Vref hab ich glaube über einen 
Spannungsteiler 0,6 Volt angelegt.
Ich hatte vor die Spannung an den Sens-Widerstände mit dem A/D-Wandleer 
des Atmega zu messen. Ich dachte der Strom in der Spule wird größer, 
wenn der Motor blockiert, d.h. die Spannung an den Widerständen müsste 
auch größer werden. Klappt leider nicht. Die Spannungen bei laufendem 
und blockierten Motor sind ungefähr gleich groß. Kann mir jemand weiter 
helfen?

Gruß Paul

von Uwe .. (uwegw)


Lesenswert?

Da der L297 eine Stromregelung macht, ist der Strom natürlich immer 
gleich groß...

von paul (Gast)


Lesenswert?

Danke schon mal für Antwort.
Der L297 misst doch über die Widerstände den Strom und schaltet ab, wenn 
dieser zu hoch ist. Ist das so richtig? Da ich an Vref ca. 0,6 Volt 
anliegen habe, wird der Strom begrenzt. Wenn ich an Vref das Maximum von 
3 Volt anlege, müsste ich dann Unterschiede messen können zwischen den 
Strömen wenn der der Motor dreht bzw. blockiert?

von Pieter (Gast)


Lesenswert?

moin moin,

der Strom hat die eingestellte Stärke, ob der Motor dreht oder nicht.
Das nennt man dann Schrittverlust.
Den mechachischen Anschlag mit einem elektrischen Kontakt zur 
Motorstoppung kombinieren.

MfG
Pieter

von Benedikt K. (benedikt)


Lesenswert?

Wenn der Strom fest ist, dann bleibt nur die Spannung als Last abhängige 
Größe übrig.
Man kann elektrisch tatsächlich erkennen, ob ein Schrittmotor Schritte 
verliert, nur ist das nicht ganz einfach.
Bei hohen Drehzahlen sieht man einen deutlichen Unterschied in der 
Kurvenform, bei niedrigen Drehzahlen ändert sich nur leicht die 
Kurvenform beim Übergang zwischen den einzelnen Schritten.
Schau mal bei Trinamic, die haben solche Features in den 
Schrittmotortreibern.

von paul (Gast)


Lesenswert?

Einen Kontakt anbringen ist leider nicht möglich. Stimmt die Theorie 
denn das  der Strom größer wird, wenn der Motor Blockiert ist? Dann 
könnte ich doch die Sens-Eingänge des L297 unbeschaltet lassen und statt 
dessen direkt mit meinem µC die Spannung an den Widerständen messen und 
könnte die Erhöhung des Stromes ermitteln.

von Benedikt K. (benedikt)


Lesenswert?

paul schrieb:
> Stimmt die Theorie
> denn das  der Strom größer wird, wenn der Motor Blockiert ist?

Nein. Der Strom hängt (bei niedrigen Drehzahlen und ohne Stromregelung) 
nur von dem Wicklungswiderstand und der Betriebsspannung ab.
Der Verlauf der Strom/Spannungskurve ist zwischen 2 Schritten 
unterschiedlich:
Bei einem blockierten Rotor pendelt der Rotor kurz, macht eventuell 
einen Teilschritt rückwärts, was sich im Verlauf des Stromes und der 
Spannung messen lässt.
Allerdings wird das, wie gesagt auf eine sehr viel komplexere Auswertung 
als auf das reine Vergleichen des Stromes mit einem Sollwert 
hinauslaufen.

von paul (Gast)


Lesenswert?

Wie könnste diese Asuwertung dann aussehen? Wenn der Motor an den 
Anschlag fährt, hört man ein Rattern. Ich hab auch versucht den 
Spannungsverlauf mit einem Oszi zu messen. Das ist leider zu schlecht, 
man sieht aber, wie die Spannung hin und her springt. Ich muss mir mal 
ein besseres besorgen.
Wenn ich damit ein besseres Ergebnis bekomme, kann ich an Hand der 
Frequenz des Ruckelns eine Zeit berechnen. Dann könnte einfach gesagt 
ein paar Messungen machen und immer diese Zeit warten und schauen, ob 
sich die Spannung geändert hat?

von Michael U. (amiga)


Lesenswert?

Hallo,

Kontakt oder Lichtschranke ist sicher einfacher.

Wenn es nur um die definierte Startpositione geht, könnte man es auch 
wie in der guten alten C64-Floppy machen: mehr Schritte in Richtung 
Anschalg fahren, als maximal möglich sind.
Dann steht am am Anschlag. Je nach Verwendung brauchbar oder auch nicht.
Die Klapperei beim Spur-0 anfahren der Floppy war a) gut zu höhren und 
sorgte b) mit der Zeit für Leseprobleme wegen falscher Kopfjustage.
Wenn man oft gegen den Anschlag klopft, gibt der eben irgendwann nach...

Gruß aus Berlin
Michael

von oszi40 (Gast)


Lesenswert?

z.B. beim Start mit Absicht einige Sekunden auf den Rand fahren

und dann die Schritte zu zählen beginnen nach x Sekunden Wartezeit.

von Z8 (Gast)


Lesenswert?

obacht oszi40!

Da gibt es ein Patent. (bitte nicht kommerziell nutzen) Z8

von Random .. (thorstendb) Benutzerseite


Lesenswert?

wie, das Geratter, was damals die 1541 Floppy gemacht hat, kann man 
patentieren?
o-O-o ...

Dummerweise ist das nicht exakt auf 1...2 steps Genauigkeit, da der 
Stepper an seinem Anschlag immer etwas zurückpendelt, und dann irgendwo 
0...3 Steps vorm Ende stehenbleibt.

Nimm ne Lichtschranke oder nen kleinen Endausschalter (zum 
Experimentieren schlachte ne Maus, die Mikroschalter gehen dafür 
super!).


VG,
/th.

von paul (Gast)


Lesenswert?

Danke schon mal für eure Tipps. Einen zusätzlichen Schalter einbauen 
kommt (eigentlich) nicht in Frage. Es muss so gehen :-)
Wie könnte man den Strom am besten messen? Ich habe ja die 
Sens-Widerstände verbaut. Über diese kann ich den Strom ja messen. Beim 
nachmessen mit einem Oszi kam heraus, das kein großer Unterschied 
besteht. Dazu kommt, dass ich der Spannung an den Sens-Widerständen ein 
Sinus mit der Frequenz von ca 1Mhz überlagert ist. Ich weiß leider 
nicht, ob das so sein muss oder nicht (aber denke mal eher nicht).

von Einhart P. (einhart)


Lesenswert?


von Michael W. (wiebel42)


Lesenswert?

Ich wollte auch gerade Trinamic's StallGuard anführen, die TMC Module 
kennen 7 Lastlevel, wenn die Drehzahl geeignet ausgewählt wird steigt 
dieses Lastlevel beim Anschlag um 1 an was man detektieren kann. 
Funktioniert eigentlich ganz gut, man ist aber für die Referenzierung 
auf bestimmte Drehzahlen festgelegt. -wiebel

von paul (Gast)


Lesenswert?

Ich kann den Anschlag jetzt erkennnen. Auf die Lösung bin ich eher 
zufällig gekommen. Ich hab mit einem Oszi die Spannung an den 
Sens-Widerständen nachgemessen. Dabei hatte ich aber Oberschwingung von 
1Mhz und 0,2 Vss. Bei 0,6 V als Maximum, kann sich wohl jeder 
vorstellen, dass nicht gut zu messen ist. Ich hab dann einen Tiefpass 
mit 100kHz an die Sens-Widerstände und noch einen großen Elko in die 
Spannungsversorgung gelötet. Am Tiefpass kann man jetzt einen 
Unterschied sehen, die Spannung steigt an, fällt bei Stillstand aber 
einer Stelle wieder ab. Diesen Unterschied werte ich mit dem AD-Wandler 
aus. Funktioniert sehr gut. Dazu kommt noch, dass man den Home-Ausgang 
des L297 verwenden muss, um zu wissen welchen Schritt man gerade 
ausführt. Ich messe bei Schritt 3 und 7.
Warum der Tiefpass mein Siganl so gut verändert, dass ich es messen 
kann, weiß ich leider nicht :-)   Vielleicht kann mir das jemand 
verraten?

von Tobias K (Gast)


Lesenswert?

Versuchs doch mal mit schritte zählen.
So haben wir das in einem Projekt mal gemacht.
Du musst doch um den Motoransteuern zu könne sicher eine Frequenz an den 
Motorkontroller schiken. Dabei kannst du dann die Halbwellen zählen.

von markusulrichfrance@gmail.com (Gast)


Lesenswert?

na das haste ja gut gemacht. wie sieht denn der Tiefpass genau aus? 
haste da nochmal rumprobiert um ein optimales Ergebnis zu erhalten?

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.