Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor Vibration
Hallo zusammen,
ich habe vor kurzem angefangen mich mit Assembler zu beschäftigen.
Nun möchte ich über einen Atmega8515L diesen Schrittmotor ansteuern:
http://www.reichelt.de/Schrittmotoren/QSH4218-35-026/3/index.html?;ACTION=3;LA=446;ARTICLE=62652;GROUPID= 3299;artnr=QSH4218-35-026;SID=10Tzatpn8AAAIAAH33CCMa47808aebbf226736bc4c c51250383f2
Als Treiber habe ich den L6205 genommen und die Schaltung aus dem Datenblatt aufgebaut. (Siehe Anhang)
Als Versorgungsspannung dient ein 12V Netzteil.
Der ATMEGA8515L ist noch auf einem STK500, die 4 Ausgänge des PORT B habe ich auf die Eingänge des L6205 geführt.
Vollgendes Programm läuft auf dem ATMEGA
.include "8515def.inc"
.DEF Ausgabe = R16
.DEF Counter1 = R17
.DEF Counter2 = R18
.DEF Sensor = R19
RJMP main
main:
LDI Ausgabe,0b11111111
OUT DDRB,Ausgabe
Vor:
LDI Ausgabe,0b00001001 ;Schritt 1
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten1:
dec Counter1
brne Warten1
Warten2:
LDI Counter1, 0b11111111
dec Counter2
brne Warten1
LDI Ausgabe,0b00000101 ;Schritt 2
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten3:
dec Counter1
brne Warten3
Warten4:
LDI Counter1, 0b11111111
dec Counter2
brne Warten3
LDI Ausgabe,0b00000110 ;Schritt 3
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten5:
dec Counter1
brne Warten5
Warten6:
LDI Counter1, 0b11111111
dec Counter2
brne Warten5
LDI Ausgabe,0b00001010 ;Schritt 4
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten7:
dec Counter1
brne Warten7
Warten8:
LDI Counter1, 0b11111111
dec Counter2
brne Warten7
RJMP vor
Das ganze funktioniert auch soweit und der Motor dreht sich ungefähr mit einer Umdrehung pro Sekunde.
Nur leider läuft er nicht ruhig und vibriert.
Hat jemand eine Idee wieso der Motor vibriert?
Gruß Coni
Reichelt verkauft den Motor mit der Bezeichnung 4218-35-026, im verlinkten Handbuch ist der Motor 4218-35-27 aufgeführt mit den elektrischen Kenndaten 5,3V, 1A. Der Betrieb mit niedriger Drehzahl an 12V dürfte also mehr als 2A Strangstrom bedeuten (das macht den Motor nicht sofort kaputt, ein Dauerbetrieb ist aber nicht möglich wegen Überhitzung).
Das Vibrieren könnte daher kommen, dass der Stromfluss unterbrochen wird durch
1. Den thermischen Überlastschutz im L6205 oder
2. durch eine Schutzschaltung im Netzteil.
Mögliches Vorgehen:
1. Prüfen zu welchem Strom das Netzteil belastet werden kann.
2. Prüfen wie heiß das IC wird (erstmal mit angefeuchtetem Finger)
Abhilfen:
Strangstrombegrenzung einführen.
Hallo ranke,
Danke schon mal für deine Antwort.
Geliefert wurde der 4218-35-27 von Reichelt.
Der IC wird kaum warm, aber das Netzteil ist mit seinen 800mA total überforder. Da werde ich wohl warten müssen bis mein Akku da ist.
Sollte der Motor bei niedriger Drehzahl lieber mit 5,3V betrieben werden?
Wie kann ich denn den Strangstrom begrenzen?
Sollte der Motor bei niedriger Drehzahl lieber mit 5,3V betrieben werden?
Das könnte man machen, aber bei höheren Drehzahlen geht der Strom automatisch zurück, dann ist es besser man hat eine höhere Spannung zur Verfügung. Wenn man auch höhere Drehzahlen haben will ist das also nicht sehr praktisch.
Wie kann ich denn den Strangstrom begrenzen?
Wenn man die beiden "Sense" Pins nicht direkt mit Masse, sondern über einen kleinen Widerstand ( z.B. 0,1 Ohm) mit Masse verbindet kann man an den Pins eine Spannung abgreifen, die proportional zum Strangstrom ist (also bei 0,1 Ohm, 1A wären es 0,1 V).
Diese Spannung könnte man z.B. über den ADC des MC einlesen. Allerdings müsstest Du Deinen Code dann dahingehend ändern, dass der Prozessor noch etwas anderes tun kann. Die Zählschleifen kann man mit einem Timer umgehen, der zählt dann ohne Beteiligung des Prozessors, der für andere Aufgaben frei wird.
Habe heute meinen Akku bekommen welcher den nötigen Strom von über 2A liefert.
Leider ist das Problem damit nicht behoben, der Motor vibriert immernoch.
Dazu kommt noch das der Motor mit dem Akku nur läuft wenn ich meinen Finger auf den Minuspol lege oder den Akku in der Hand halte.
Braucht der Motor einen festen Massepunkt? Was ich mir aber nicht vorstellen kann, dann könnte man ja den Motor nie mit einen Akku betreiben.
Der 8515 hat leider keinen ADC, da werde ich mir wohl einen anderen besorgen müssen und mich noch ein wenig mehr mit Assembler beschäftigen.
Dazu kommt noch das der Motor mit dem Akku nur läuft wenn ich meinen Finger auf den Minuspol lege oder den Akku in der Hand halte.
Das klingt noch nach einem Problem mit der Schaltung. Betreibst Du den MC auch mit dem Akku? Falls nein, musst Du die Minuspole der beiden Stromversorgungen verbinden, damit sie ein gemeinsames Potential haben.
Der 8515 hat leider keinen ADC, da werde ich mir wohl einen anderen besorgen müssen und mich noch ein wenig mehr mit Assembler (http://www.rn-wissen.de/index.php/AVR_Assembler_Einf%C3%BChrung) beschäftigen.
Das wäre nur eine Möglichkeit. Es gibt auch andere Möglichkeiten den Strangstrom zu messen und auszuwerten. Eine davon ist das IC L297, das die Auswertung des Strangstroms umsetzt und gleichzeitig auch das Muster der Strangströme für Halb- oder Vollschrittbetrieb generiert (was Du momentan in Deinem Code machst). Die Schaltung ist hier (http://www.rn-wissen.de/index.php/Schrittmotoren#Schaltung_zum_Ansteuern_eines_Schri ttmotors_mit_L298_und_L297) in Kombination mit dem Treiber L298 kurz beschrieben, zum genaueren Verständnis holt man sich am besten die Datenblätter der ICs von www.st.com (http://www.st.com) . Als dritte Variante kann man natürlich den Strom auch über seperate Komparatoren auswerten und als Digitalsignal an den MC senden oder direkt auf den enable-Eingang des L6205 geben.
Das klingt noch nach einem Problem mit der Schaltung. Betreibst Du den MC auch mit dem Akku? Falls nein, musst Du die Minuspole der beiden Stromversorgungen verbinden, damit sie ein gemeinsames Potential haben.
Der MC wird noch über das STK500 betrieben, somit haben sie kein gemeinsames Potential.
Das wäre nur eine Möglichkeit. Es gibt auch andere Möglichkeiten den Strangstrom zu messen und auszuwerten. Eine davon ist das IC L297, das die Auswertung des Strangstroms umsetzt und gleichzeitig auch das Muster der Strangströme für Halb- oder Vollschrittbetrieb generiert (was Du momentan in Deinem Code machst). Die Schaltung ist hier (http://www.rn-wissen.de/index.php/Schrittmotoren#Schaltung_zum_Ansteuern_eines_Schri ttmotors_mit_L298_und_L297) in Kombination mit dem Treiber L298 kurz beschrieben, zum genaueren Verständnis holt man sich am besten die Datenblätter der ICs von www.st.com (http://www.st.com) . Als dritte Variante kann man natürlich den Strom auch über seperate Komparatoren auswerten und als Digitalsignal an den MC senden oder direkt auf den enable-Eingang des L6205 geben.
Die Lösung mit dem L297 scheint mir noch am einfachsten sein, werde ich wohl demnächst mal angehen.
Mein eigentliches Problem, das der Motor vibriert ist aber leider noch nicht gelöst.
Habe mal den Strom gemessen welcher für die komplette Schaltung inklusive Motor fließt gemesse, da fließen grade mal 333mA.
Rein theoretisch müssten doch bei I=12V/5,3Ohm ca. 2,26A fließen?
021aet04
15.07.2012, 12:20
Wie misst du den Strom? Mit einem normalen Multimeter kannst du das nicht messen, da das DMM zu langsam misst bzw einen Mittelwert bildet. Wenn du den Strom messen willst musst du mit einem Oszi messen oder du misst es mit einem µC, den du so programmierst das dieser z.B. über eine Sekunde misst und die Messwerte über die Schnittstelle (RS232 bzw USB) an den PC sendest und dort auswertest.
MfG Hannes
Genau, über ein Multimeter. Oszi oder einen anderen µC habe ich im moment leider nicht zur Hand. Da werde ich erstmal von meinem errechnetem Wert ausgehen.
Was könnte es noch für Gründe für das vibrieren des Motors geben?
021aet04
15.07.2012, 12:33
Es gibt verschiedene Möglichkeiten. Eine die mir einfällt (weiß nicht ob das schon geschrieben wurde) ist Überlast. Wenn der Motor zu stark belastet wird vibriert der Motor ebenfalls.
Hast du die Schaltung schon kontrolliert (habe den Thread nicht mitverfolgt)?
MfG Hannes
An dem Motor hängt noch keine Last, somit kann das nicht die Ursache sein.
Die Schaltung sollte soweit in Ordnung sein.
Wenn ich bei meiner Zählschleife die Werte verringere sollten ja die Zeitabstände zwischen den einzelnen Schritten sich verringern und der Motor sich schneller drehen.
Leider tut er das aber nicht, der Motor ruckelt dann nur noch und dreht sich nicht mehr. Ist solch ein Programmablauf eventuell für ein Schrittmotor eher ungeeignet?
021aet04
15.07.2012, 12:58
Wenn du längere Pausen zwischen den Impulsen lässt funktioniert es? Wenn ja muss du den Schrittmotor langsam auf die gewünschte Drehzahl bringen (in einer Rampe), da der Motor sonst Schritte verliert und es zu solchen Vibrationen kommt. Die Schritte verliert er dann weil der Rotor (drehende Teil) durch die Massenträgheit nicht folgen kann.
MfG Hannes
Wenn ich eine Pause von 5ms lasse dreht sich der Motor langsam aber mit vibration. Bei einer Pause von 1,28ms ruckelt der Motor nur noch und dreht sich nicht mehr.
Bei einer großen Pause von 65ms dreht sich der Motor extrem langsam aber immernoch mit vibration. Langsamer geht es eigentlich nicht mehr.
Würde der L297 den Motor langsam auf die gewünschte Drehzahl bringen?
021aet04
15.07.2012, 15:35
Ich kenne dein Programm nicht (kann kein ASM), ich würde aber einmal die EN Anschlüsse mit einem Widerstand fix auf die +5V geben oder eine PWM verwenden (damit der Strom des Motors nicht überschritten wird). Die In Anschlüsse würde ich dann einfach ansteuern. Zuerst reicht, zum Testen, der Vollschritt. Ansteuern kannst du entweder einfach per Hand (Pullup verwenden) oder über den µC, indem du z.B. über einen Taster die einzelnen Schritte weiterzählst.
http://www.rn-wissen.de/index.php/Schrittmotoren#Bipolare_Ansteuerung_Vollschritt
So kannst du Hardwarefehler ausschließen.
MfG Hannes
Noch eine Klarstellung zur Vibration: Wenn der Motor recht langsam läuft, dann springt der Läufer quasi von Schritt zu Schritt. Wenn man den Motor in der Hand hält oder ihn lose auf den Tisch legt, dann schüttelt es den ganzen Motor in diesem Takt. Das ist ein völlig normales Verhalten und wird bei höheren Drehzahlen schwächer, oder auch wenn man von Vollschrittansteuerung auf Halbschritt oder gar Mikroschritt übergeht. Möglicherweise ist das die von Dir beobachtete Vibration.
Würde der L297 den Motor langsam auf die gewünschte Drehzahl bringen?
Der L297 wird den Motor entsprechend einer digitalen Eingangsfrequenz drehen lassen. Konkret: jedesmal wenn die Spannung am /CLOCK-Eingang auf 0 Volt (Low) springt, macht der Motor einen Schritt (oder einen Halbschritt). Der Output des MC muss also eine Frequenz sein die erst langsam ist, dann immer schneller wird.
Hallo Coni
Es ist typisch, wenn man sich erstmals mit einem Schrittmotor beschäftigt, dass man über die Eigenarten eines Schrittmotors stolpert. Mir gings auch nicht anders, bis ich mir von Trinamic die TMCM110 Steuerkarte besorgte, genannt StepRocker und bei Reichelt zu beziehen. Diese Kart, mit der zugehörigen Steueroberfläche auf dem PC, erlaubt es die diversen Parameter der sehr mächtigen ICs zu steuern und so das Verhalten eines Schrittmotors zu erkunden.
Grundsätzlich gilt, dass ein Schrittmotor sehr empfindlich auf mangelnde Stabilität seiner Signale/Ströme reagiert. Fängt man also z. B. mit der höchsten hier angebotenen Mikroschritt-Auflösung an und stellt die Schrittgeschwindigkeit auf etwa 1/4 der möglichen Bandbreite ein, so findet man heraus ob und ab welcher Anzahl von Mikroschritten der Schrittmotor stehen bleibt. In dem Video, verzeiht meine miserablen Fähigkeiten als Regisseur und Kameramann, zeige ich wie es bei meinem Schrittmotor und einer Versorgungsspannung von 12VDC ist.
setzt man eine höhere Versorgungsspannung ein und mehr Strom, so kann man den Motor mit weniger Mikroschritten bis zu Vollschritten betreiben. Beim Video gezeigten Schrittmotor sind die Spulen jeweils parallel geschaltet, das erhöht die Stabilität und ermöglicht höhere Schrittzahlen. Der Preis ist ein etwas geringeres Drehmoment.Erhöht man die Geschwindigkeit langsam, so erlaubt der Motor in meiner Konfiguration die Anzahl der Mikroschritte noch weiter zu senken. Die Kombination aus Geschwindigkeit, sozusagen die „Tick-Geschwindigkeit” für die Schrittfolge und die Anzahl der Mikroschritte bewirkt das tempo mit dem der Schrittmotor dreht.
Der StepRocker hat noch die Möglichkeit bei 16 Mikroschritten pro Schritt, mein Motor hat 200 Schritte für eine Umdrehung, 16 weitere Mikroschritte durch Interpolation zu erzeugen. das Ergebnis ist eine noch höhere Drehzahl.
Nun aber konkret zur Laufruhe. Bei bestimmten Schrittgeschwindigkeiten und Strömen/Spannungen, entstehen im Schrittmotor Resonanzen, welche zu einem erhöhten Laufgeräusch führen. Da hilft nur diese Konstellation zu vermeiden und eine leisere zu finden. Da mit Mikroschritte die Laufruhe eh größer ist, muss man bei meinem Video schon sehr genau hinhören um diese Punkte zu erkennen.
Weiter hat auf das Laufverhalten eines Schrittmotors auch die Steilheit der Geschwindigkeitsveränderung Einfluss. Der Steprocker besitzt die Möglichkeit die Beschleunigung einzustellen. Das beste Ergebnis erzielt man allerdings wenn man die "S-Kurve" beim Beschleunigen einstellt und zusätzlich mit der Steilheit des Geschwindigkeitsanstiegs spielt, findet man für seinen Motor und die Randparameter, Spannung, Strom den Punkt wo man von Null auf höchste Geschwindigkeit und wieder auf Null in der kürzesten Zeit kommt. ich habe versucht auch das im Video zu zeigen.
Die Erfahrungen bei den Versuchen mit dem StepRocker zeigten, warum ich mit der Schrittmotorkarte von Robotikhardware nicht klar kam und nicht klar kommen konnte, wenn man 12VDC Spannungsversorgung hat. Wichtig ist es zu achten, dass man den höchsten zulässigen Strom für seinen Motor in der Software einstellt. Mein Motor kann 4,2A, der StepRocker nur maximal 2,8A. da konnte ich mit maximalen Strom arbeiten. Der Einsatz eines kleinen Schrittmotors von Trinamic, auch bei Reichelt gekauft, bedurfte den maximalen Strom auf etwa 670mA zu stellen. habe auch mit weniger Strom experimentiert und entsprechend ein früheres Stehenbleiben des Motors erlebt. Die ICs von Trinamic sind einfach eine ganz andere Klasse! Nimmt man dann noch die Möglichkeiten Schrittfehler zu vermeiden/zu erkennen in Anspruch, die Software erlaubt umfangreiche Einstellungen. Hier habe ich noch keine Experimente gemacht, dann kann man Schrittmotoren voll beherrschen und optimal nutzen. genauso mächtig und wertvoll, gerade wenn man von Akkus arbeitet, ist der effiziente Leistungsverbrauch. Auch hier sind umfangreiche Möglichkeiten gegeben. Kommt man dann noch zuletzt auf die Möglichkeit mit Hall-Sensoren die einen magnetischen Enkoder realisieren, dann kann man mit 8-12 bit Winkel-Auflösung und Referenz-Meldung bei jeder Umdrehung zuverlässig den Schrittmotor steuern, wenn auf ein exaktes Fahren wert gelegt wird. Ich habe das Video für ein spanisches Forum gemacht, hoffentlich trotzdem hilfreich.
http://youtu.be/IEVIXDocJxY
Hier jetzt ein Video, nur kurz, etwas über 2 Minuten. Ich verwende einen Spannungsverdoppler um 24VDC Spannungsversorgung zu erreichen und habe die Einstellungen bereits gemacht.
http://youtu.be/TDpM38GFN5w
Jetzt noch ein Video von dem ganz kleinen Schrittmotor, auch bei Reichelt gekauft, nur 28mm Kantenlänge.
http://youtu.be/IHC89Z3acSQ
Hallo Hellmut,
danke für die Videos, leider ist mein spanisch nicht so gut.
Habe inzwischen meine Schaltung um den L297 erweitert. Leider mit dem gleichem Ergebnis der Motor noch vibriert.
Wie langsam bzw wie schnell müsste denn eine Rampe ansteigen?
Stelle mir so eine Rampe zu programmieren sehr umfangreich vor.
Hallo Coni
das Vibrieren zeigt sich im Video, leider eben auf Spanisch, bei bestimmten Konigurationen. Ich erhebeb keine Anspruch keine Interpretationsfehler meiner Versuche zu machen, noch etwas durcheinander zu bringen, aber hier meine Erkenntnisse, welche sich mit Infos aus dem Internet decken:
Das Vibrieren und die Motorgeräusche sind Ausdruck davon, dass im Motor die Werte eine Resonanz erzeugen.
Die Parameter die den Lauf bestimmen sind vielfältig, aber haben eben schon eine innere Logik. Grundsätzlich scheint zu gelten, dass die induzierte Spannung im Motor, steigt proportional zur Impedanz der Spulen. Deshalb ist macht das Parallelschalten von Spulen im Motor (dann möglich wenn 8 Leitungen herauskommen, also für jede der 2 Phasen jeweils 2 Spulen gehören) Sinn, so das dann die Impedanz der parallel geschalteten Spulen geringer ist. Das ermöglicht das Erreichen einer höheren Drehzahl, man bezahlt es aber mit etwas Drehmomentverlust, siehe Tabellen zu Motor im zugehörigen Datenblatt. Wenn man meinen kleinen Motor bei reichelt anschaut, dann sieht man das es 2 unterschiedliche Motoren gibt, gleiche Abmessungen des Querschnitts, aber der eine mit mehr Drehmoment ist etwas länger.
Erhöht man die angelegte Spannung erreicht man höhere Drehzahlen. Für mich der Hinweis, dass die höhere angelegte Spannung mit meh EMK, so heisst das glaube ich, klar kommt, weshalb höhere Drehzahlen möglich sind! Ich habe deshalb in meinen Segler 12 LiFePo4 Zellen, je 16Ah Kapazität.
was ich aber bei den Versuchen mit dem StepRocker sehr deutlich erkennen konnte, ist das über die Zahl der Mikroschritte die Geschwindigkeit am stärksten beeinflusst wurde. ich habe versuche mit diversen Geschwindigkeiten gefahren, 1/4, 1/2, 3/4 und 4/4 der einstellbaren Geschwindigkeit. Geschwindigkeit heißt hier der Takt, mit welchen die Schritte erfolgen. Füll speed = 2047, 1/4 = 512, usw.. Die Mikroschrittanzahl konnte in 8 Schritten eingestellt werden, immer als Potenzen von 2, also 256= 8, 128=7, 64=6, 32=5, 16=4, usw.. Je weiter ich die Anzahl der Mikroschritte reduzierte, desto schneller drehte sich der Motor, aber desto weniger Geschwindigkeit war möglich, bevor der Motor stehen blieb. Wie man durch einfaches Nachrechnen verstehen kann, erreichte ich höhere drehzahlen des Motors wenn ich die Geschwindigkeit auf 1/4 setzte, dafür aber die Mikroschrittzahl auf 16. Habe ich dann noch die Funktion der Mikroschritte Interpolation benutzt, dabei werden in Hardware im Trinamic Controller bei der Einstellung "4=16 Mikroschritte pro Schritt" eingestellt und diese Funktion aktiviert, dann erzeugte er bei jedem Mikroschritt 16 selber in Hardware und die Geschwindigkeit war 16-fach erhöht.
Bei diesen Versuchen wurde deutlich an den Versuchen mit unterschiedlichen Schrittmotoren, jeweils anderer Bauart die ich hier habe, dass die Laufruhe, die vribration, bei anderen Konfigurationen hoch ist. es ist wirklich Motor spezifisch. Was aber deutlich wurde, bei weniger al 16 Mikroschritten blieb mein Motor bei 12VDC angelegter Spannung auch bei 1/4 der Geschwindigkeit stehen. Habe ich 24VDVC angelegt, dann konnte ich jeweils die Mikroschrittzahl um ein Intervall verkleinern, schätze also bei 40VDVC die mein Akkupack vollgeladen liefert, wird es noch besser.
Was also die Laufruhe deines Motors angeht, arbeite mit so viel Mikroschritten wie möglich und teste wie dein Motor sich verhält, damit du die Konfigurationen ermittelst wo dein Motor resonanzen hat die zu unruhigem Lauf führen. Außer bei Trinamic habe ich bei keinem Hersteller von so viele gutimplementierte Funktionen gesehen, aber gelernt, dass je höher die Mikroschrittzahl ist, desto ruhiger wird der Motor laufen und umso schneller kann man ihn drehen lassen. Was aber nur wenig über deinen Motor im Speziellen sagt. Leiste dir doch den StepRocker und spiele selber damit!
Was die Rampe angeht, ist, so denke ich eine sache die du mit einer Tabelle handhaben kannst! Solltest du z. B. Hardware PWM für die Schrittauslösung verwenden, dann musst die in einer Tabelle die Daten für den Counter speichern und unter Software Kontrolle mit der zeit wann du die PWM Counter mit neuen werten fütterst spielen, dass würde wohl die Rampe erzeugen. Im Trinamic wird das in Hardware gegossen angeboten. Aber lass dir nur sagen, dass bevor ich die Rampe überhaupt und die S-Funktion der Rampe aktiviert habe, habe ich die Geschwindigkeit von Hand langsam hochgefahren und konnte so auch das ganze Geschwindigkeitsprofil fahren. Es kommt halt nur darauf an, dass die Veränderungsgröße der Geschwindigkeit, und die damit ausgelöste EMK, gering gehalten wird. Diese größere bandbrreite der möglichen Konfigurationen lässt dich dann ein geschwindigkeitsprofil in deiner Anwendung finden, welches die höchste mögliche Laufruhe auweisen tut. es ist wirklich so, man kann mit unterschiedlichen Konfigurationen, Versorgungsspannung, Anzahl der Mikroschritte und taktrate der Stepfolge (Geschwindigkeit) gleiche oder fast geiche drehzahlen erreichen und so jene meiden die zu Laufunruhe führen!
Ich hoffe die Info hilft! Ich stehe vor der Herausforderung die schaltung zu entwickeln, welche dem StepRocker entspricht. Ich neige dazu von den AVRs von Atmel wegzugehen und stattdessen die ARM von NXP verwenden. Das hat mehrere Gründe. Erstens kann die Taktrate, bis 72MHz gefahren werden, statt den 20MHz oder 32MHz der Xmegas. Zweites gibt es von NXP die LPCxpresso boards, sehr preiswert zu beziehen, so dass ich damit die Software-Entwicklung auf der kostenlosen IDE durchführen kann und das ganze Testen. Drittens habe ich je nach Typ auch zusätzliche Funktionalität, z. B. leistungsfähige MUL Anweisungen. da steht mir diesen Herbst und Winter interessante Entwicklungsarbeit ins Haus. ich werde 2 typen entwickeln, die eine wo die MOSFETS im IC integriert sind, denke dabei an einen ARM M0 als Controller, und einen mit externen MOSFETS für die großen Schrittmotoren.
Jetzt warte ich darauf, das von Mädler die Zahnscheiben in Riemen kommen, dann werde ich als erstes meine Versuche für den Traveller fahren, also Trapezspindel mit schraube die in einer wanne zwischen 2 Endschaltern fährt und einen weiteren Mikroschalter in der Mittelstellung hat. Nahc de Versuchen mit dem StepRocker werde ich die erste Schaltung mit dem 1343 machen.
22906
Hier ein Bild des StepRocker. Das große IC ist der Controller von Samsung, die zwei kleinen rechts etwas höhere sind der TMC262 (http://www.reichelt.de/Schrittmotoren/TMC-262-QFN32/3/index.html?;ACTION=3;LA=446;ARTICLE=116942;GROUPID =3299;artnr=TMC+262+QFN32;SID=11Tqhi-n8AAAIAACbhlxE8d61548627336a558de3247c75ae239c)und der TMC429 (http://www.reichelt.de/Schrittmotoren/TMC-429-QFN32/3/index.html?;ACTION=3;LA=446;ARTICLE=116938;GROUPID =3299;artnr=TMC+429+QFN32;SID=11Tqhi-n8AAAIAACbhlxE8d61548627336a558de3247c75ae239c) und rechts die 4 das sind die MOSFETS. Der TMC260 hat 4 Mosfets on board, der hier verwendete ist für externe Mosfets gemacht. ich habe die links zu reeichelt hinterlegt. ich werde also so was aufbauen, aber den Samsung durch einen NXP arm Controller ersetzen.
Habe das vibrieren nun ganz gut in den Griff bekommen.
Es lag einfach nur an den hohen Strom, bei grade mal 100mA läuft der Motor relativ ruhig. Um so höher die Drehzahl, um so ruhiger läuft der Motor.
Eine Rampe brauche ich bei den geringen Drehzahlen nicht.
Vielen Dank an alle die sich an der Lösung des Problems beteiligt haben.
Hallo,
also ein schrittmotor vibriert immer leichte! er macht ja immer nur kleine schritte... wie der name ja schon sagt.
oder bleibt der motor auch ab und an stehen? dann könnte das darauf hinweisen das was mit der spannung und/oder dem strom net stimmt... dann wird das drehmoment des motors überschritten und der motor vierliert ein paar schritte.
MfG
@Coni1: Das vibrieren liegt definitiv nicht am Strom!
@Bammel: was du sagst stimmt zwar rein technisch, aber nicht soweit es den Nutzer von Schrittmotoren betrifft.
@Coni1: Das starke Vibrieren resultiert aus Resonanzen im Motor. Die Resonanzen, welche sich aus der Geometrie der Spulen und der elektrischen Ansteuerung des Motors ergeben, sind auch das Ergebnis davon, dass die elektromagnetischen Kräfte im Motor ich nenne es mal "turbulent" werden! Bei meinen Videos, leider auf spanisch, zeige ich, dass der Moment lautend Laufens auch abhängig von dem maß der Beschleunigung ist. beschleunige ich langsam, läuft der Motor bis auf wesentlich höhere Drehgeschwindigkeiten. Die Resonanzen, als Ursache für das "laute Laufen" des Schrittmotors sind eine Ursache, Veränderungsgeschwindigkeiten der Ansteuerungsparameter eine weitere. Dieses turbulente Verhalten der elektrischen Kräfte im Schrittmotor führt bei bestimmten Bedingungen auch zum Stillstand des Motors und zum starken Vibrieren. In meinem Video mit dem StepRocker zeige ich, dass 2 Stufen des Laufgeschwindigkeiten des Schrittmotors der Still stand des Motors früher erfolgt, wenn ich mit der Mikroschrittanzahl herunter gehe!
Ich habe bei diesen Versuchen gesehen, warum mein großer Schrittmotor mit der Steuerkarte für Schrittmotoren von Robotikhardware nicht lief! Je nach Versorgungsspannung, Anzahl der Mikroschritte pro Vollschritt und Steilheit der Beschleunigungsflanke hörte der Schrittmotor auf zu drehen. Bei besten Einstellungen aller Parameter, einer bestimmten Drehzahl und 12 VDC Versorgungsspannung blieb der Motor bei 8 Mikroschritten pro Vollschritt stehen und vibrierte nur stark! Die Karte von Robotikhardware konnte diese Mikroschrittzahl nicht liefern und so war der Einsatz mit diesem Schrittmotor bei 12 VDC nicht möglich! Es ist jedoch möglich, ohne auf bestimmte Drehzahlen zu verzichten ein Geschwindigkeitsprofil zu fahren, bei welchem ein Schrittmotor mit minimaler Vibration und leisestem Laufverhalten einzusetzen!
@Bammel: Es gibt diverse Verfahren die Mikroschritte im Schrittmotor zu implementieren. Die meisten arbeiten, in dem sie einen Sinusverlauf der angelegten Spannungen in gleiche Spannungsänderungsschritte aufteilen. Der Nachteil dieser weit verbreiteten Technik ist, das die Mikroschrittweite relativ ungleich ist, je nachdem wo man sich auf der Sinuskurve bewegt. Trinamic bietet eine Funktion, wird in ihrem neuesten Modul diese auch anbieten, konnte es auf der Embedded World 2013 in Nürnberg sehen, die dieses Problem stark reduziert. das ist z. B. in der Medizintechnik von Bedeutung, wo immer möglichst gleiche Schrittweiten der Mikroschritte z. B. bei Dosiergeräten von hoher Bedeutung ist. Du hast also recht dabei, dass durch die schrittweise Drehwinkeländerung eines Schrittmotors eine gewisse Vibration gegeben ist. Durch Erhöhung der Anzahl der Mikroschritte wird die Schrittweite reduziert und durch die mechanische Trägkeit der Elemente im Schrittmotors und der in Drehung versetzten Mechanik werden die Mikroschritte "weicher"! Das wesentliche Element das die Laufruhe eines Schrittmotors beeinflusst sind jedoch Resonanzen und "Turbulenzen" der elektromagnetischen Kräfte im Schrittmotor!
Wer sich also die StepRocker Karte, z. B. bei Reichelt kauft, kann mit dieser seine Versuche fahren und so ein korrekteres Verständnis über den Einfluss der diversen Parameter auf das Laufverhalten eines Schrittmotors gewinnen. Wenn ich so die Beiträge hier lese, so herrscht verbreitet ein völliges Missverständnis über den Einsatz von Schrittmotoren beeinflussenden Parameter besteht. Das neue Modul von Trinamic heisst "motionCookie" und die spezielle Mikroschritttechnik heisst dort "spreadCycle", alles registrierte Handelsnamen von Trinamic!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.