PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Blockieren vom Steppermotor erkennen



skywalker1979
21.02.2011, 09:15
Hallo,

ich möchte bei einem Steppermotor erkennen, ob er sich frei drehen lässt oder blockiert wird.
Beim stöbern hier im Forum bin darauf gestossen, das ein Steppermotor bei Überlast einen oder ein paar Schritte überspringen kann, also sozusagen nicht wirklich Blockieren kann.

Liege ich damit richtig?

Ist es möglich über die Stromaufnahme vom Motor etwas über seinen aktuellen Zustand sagen zu können?

vielen Dank

Florian

TheDarkRose
21.02.2011, 10:12
Du könntest an die Welle eine encoderscheibe hängen

021aet04
21.02.2011, 17:29
Oder wenn du noch keine Ansteuerung hast könntest du einen Treiber mit Stall Guard verwenden (z.B. Trinamic einige ICs)

MfG Hannes

Ostermann
28.02.2011, 16:27
Die sensorlose Blockiererkennung (z.B. StallGuard) funktioniert aber nur in bestimmten Drehzahlbereichen. Insbesondere bei Stillstand des Motors ist die vom Rotor induzierte Spannung zu klein um zuverlässig eine Überlast erkennen zu können.

Wenn es nur darum geht zu erkennen, ob der Motor dreht oder nicht tut es eine Gabellichtschranke. Ansonsten ist tatsächlich ein Encoder die sicherste und einfachste Lösung. Sensorlos lohnt sich nur bei großen Stückzahlen, da man da erheblichen Aufwand in die Software stecken muss.

Mit freundlichen Grüßen
Thorsten Ostermann

Felix G
28.02.2011, 16:42
Ansonsten ist tatsächlich ein Encoder die sicherste und einfachste Lösung.Und wenn man ohnehin schon einen Encoder verbaut kann man auch gleich den Schrittmotor durch einen normalen DC-Motor ersetzen. Dann noch ein einfacher PID-Regler für das Ding und schon hat man einen selbstgebauten Servomotor der - wenn man es richtg macht - mindestens genauso gut ist wie der Schrittmotor. Wenn der dann mechanisch blockiert merkt man das an einer dauerhaft hohen PWM am Ausgang des Reglers, und kann entsprechend darauf reagieren.

ManuelB
28.02.2011, 19:06
Naja, so einfach sind gute Lageregelungen auch nicht. Beim UHU ist auch kein ganz "einfacher" Regelalgorythmus drin.
Kommt aber auch darauf an welche Anforderungen man daran stellt bzw. der Einsatzzweck in wie weit Kompromisse möglich sind.

MfG
Manu

Donweberle
09.03.2011, 13:06
Ja das mit der Lagerregelung bei einem DC-Motor ist wirklich nicht so einfach.

Aber wenn du z.b einen current Sensor wie von ALEGRO den ACS714T. einsetzt sollte es funktionieren.
bei nem Stepper kannst du lediglich bei jedem Vollschritt sprich alle 1,8° einen kurzen Stromanstieg "sehen".
So kannst du wenigstens eine Laufüberwachung realisieren. Eine Lageregelung oder sogar eine Positionsüberwachung der Mikrosteps
geht nur mit einem Encoder.

http://www.pololu.com/catalog/product/1185

qayqay1
28.06.2013, 14:25
Ja das mit der Lagerregelung bei einem DC-Motor ist wirklich nicht so einfach.

bei nem Stepper kannst du lediglich bei jedem Vollschritt sprich alle 1,8° einen kurzen Stromanstieg "sehen".
So kannst du wenigstens eine Laufüberwachung realisieren.



also das interessiert mich auch: ich möchte einen drv8823 von ti nehmen. nur im vollschritt fahren. wie kann ich den stromanstieg "sehen"? ist der abhängig von der internen 50khz Taktung des treibers? wie könnte ich den internen treiber pwm mit dem adc der mcu synchronisieren?

Donweberle
11.07.2013, 10:10
also das interessiert mich auch: ich möchte einen drv8823 von ti nehmen. nur im vollschritt fahren. wie kann ich den stromanstieg "sehen"? ist der abhängig von der internen 50khz Taktung des treibers? wie könnte ich den internen treiber pwm mit dem adc der mcu synchronisieren?

Also wenn du im Vollschrittbetrieb fährst, dann wird ja immer nur eine Spule bestromt, und die andere wirkt somit als Generator. An dieser unbestromten Spule bzw dem Ground der beiden Spulen kannst du dann im xy Betrieb Oszi über nen Shunt widerstand den Spulenstrom bzw den Rippel sehen im Phasenübergang.
Wie du das allerdings mit einem Treiberbaustein zu sehen bekommst keine Ahnung. Wenn du 2 Halbbrücken mit MOSFETS ansteuerst geht sowas. aber mit Komplett Treiber weis ich nicht.

PICture
11.07.2013, 10:35
Hallo!

Am einfachsten, falls möglich, wäre einen SMD Halsensor unten/oben am Rand vom Rotor plazieren, da der Rotor min. einen permanenten Magnet enthält. Beispielweise: http://pdf.datasheetcatalog.com/datasheets/105/318490_DS.pdf .

qayqay1
11.07.2013, 13:21
Also wenn du im Vollschrittbetrieb fährst, dann wird ja immer nur eine Spule bestromt, und die andere wirkt somit als Generator. An dieser unbestromten Spule bzw dem Ground der beiden Spulen kannst du dann im xy Betrieb Oszi über nen Shunt widerstand den Spulenstrom bzw den Rippel sehen im Phasenübergang.
Wie du das allerdings mit einem Treiberbaustein zu sehen bekommst keine Ahnung. Wenn du 2 Halbbrücken mit MOSFETS ansteuerst geht sowas. aber mit Komplett Treiber weis ich nicht.

ich dachte, ein vollschritt sei günstiger mit der zweiphasigen Ansteuerung? das gibt ca 40% mehr Moment. also werden beide spulen bestromt, ich nehme aber nur den Strom von einer spule über den isense ausgang, der einen tiefpassfilter erhält. so hat das einer schon gemacht, der meinte, das klappe gut, ich muss das erst noch ausprobieren. allerdings: wenn ich den filter nicht an beiden isense eingängen habe sondern nur an einem, dann misst jeder isense unterschiedliche ströme? besser auch son filter am isense, dessen ausgang nicht per mcu gemessen wird? ich nehme 7 stepper, die mcu hat aber nur acht adc, also will ich nur eine spule pro stepper messen, beide müssten bei Blockierung eh gleiche ströme zeigen?

NBGer
01.08.2013, 08:39
also das interessiert mich auch: ich möchte einen drv8823 von ti nehmen. nur im vollschritt fahren. wie kann ich den stromanstieg "sehen"? ist der abhängig von der internen 50khz Taktung des treibers? wie könnte ich den internen treiber pwm mit dem adc der mcu synchronisieren?

schaut auch doch mal den DRV8711 von TI an....der hat bereits eine "Stall Detection" integriert und merkt, daß Schritte verloren wurden