Hallo. Ich möchte einen Schrittmotor ansteuern und habe keine große Ahnung davon. Die Hardware sieht so aus: Der Motor hat 2 * 3 Anschlüsse (A - Mitte - B) die Mitte ist fest auf + 5Volt verdrahtet. Angesteuert wird er über einen ULN2803 und daran hängt ein MEGA32 mit einem Halben Port dran. Ich fahre den AVR mit 16MHz. Ich sollte vielleicht noch sagen das ich 3 Motoren dran habe. Ich habe den Motor schon irgendwie im Halbschritt betrieb zum laufen gebracht, aber die Schritte sind einfach zu grob. Auch das Anfahren ist zu ruckelig. Darum wollte ich das auf Micro-Schritte umbauen. Tja, nur wie macht man das? PWM ist glaube ich das Schlüsselwort dafür, nur wie macht man das? Der Motor sollte dann nicht pfeifen! Vielen Dank im voraus.
Google mal nach Microstepping. Da brauchst Du aber reichlich zusätzliche Hardware. Microstepping geht über den Strombegrenzungs-Chopper (den Deine Schaltung vermutlich nicht hat).
Unipolarmotoren und Mikrostepping ist sehr viel Aufwand. Wenn du die Chance hast, nimm Bipolarmotoren. Da wird dir eine Menge Arbeit von entsprechenden Motortreibern abgenommen. MW
Die meisten Unipolar-Motoren lassen sich auch bipolar ansteuern (vorausgesetzt, die Wicklungen sind in Reihe, kann man einfach die Mittelanzapfung offen lassen). Dann brauchts aber einen anderen Ansteuerbaustein (z.B. L293 oder L298)
Die Hardware kann ich leider nicht ändern. Ist so vorgegeben und muss so benutzt werden. Einen Strombegrenzungs-Chopper gibt es nicht! Ich habe es inzwischen mal mit einem PWM (wechseln zwischen 2 Step Positionen) versucht. Aber da komme ich nur auf eine gut hörbare Frequenz und ob ich da wirklich Zwischenschritte habe kann ich nicht erkennen. Der Motor ruckelt immer noch beim anfahren und halten.
Dein ruckenldes Verhalten liegt daran, dass Du einen Stepper nicht ohne Beschleunigungskurve von null auf hundert fahren kannst. Jede Masse ist träge, er kommt nicht nach und verliert Schritte. Das passiert bei jeder Beschleunigung, Bremsen ist eben auch nur negatives Beschleunigen. Also mit einer Rampe von null auf max. Linear ist nicht optimal für das Schwingungsverhalten, aber einfacher zu realisieren als eine "weiche" Kurve. Von Microstepp würde ich abraten weil die Genauigkeit und das Drehmoment leidet, kompliziert wird es auch, PWM für jede Spule. Lieber auf andere Stepper umsteigen. Bei Po.. gibts die Teile ab 2,95 mit 400S/U. Grüsse Lothar
Wenn ich den Spulenstrom reduziere um Zwischenstepps zu erreichen geht doch zwangsläufig das Drehmoment runter oder sehe ich da was falsch?? Zumindest muss es geringer sein, als bei Vollschritt mit Zweispulenansteuerung.
Ich habe eine lineare Beschleunigungskurve eingebaut. Kann sein das die nicht perfekt ist. Muss ich mir noch mal ansehen. Die App.-Note von Atmel hilft nur bedingt. Da wird nur ein Motor gesteuert und das im Halbschritt verfahren. Außerdem habe ich keine Rechenzeit mehr um alle die schönen Berechnungen zu machen. Das muss viel flotter laufen. Das der Motor Schritte verlieren kann habe ich schon bei dem ersten Test im Halbschritt Modus feststellen können. Da hatte ich zu schnell die Schritte raus gegeben. Der Motor summte und blieb einfach stehen. Diese Art der Ansteuerung wäre mir das liebste, aber die Auflösung reicht nicht und auch hier ist beim anfahren immer ein Ruckeln zu sehen gewesen. Die Masse die ich bewege ist maximal 200g! Glaube ich zu mindest. Mir fällt gerade ein, das sowas doch auch in Lichtsteuerungen eingebaut sein muß. Gibt es da nicht was vergleichbares? Am besten gleich mit Code!
>Ich habe eine lineare Beschleunigungskurve eingebaut Wie sieht die (Realisierung) aus? >Der Motor summte und blieb einfach stehen. Da war die Frequenz zu hoch! >in Lichtsteuerungen eingebaut sein muß. Die benutzen auch gerne Getriebe. >Am besten gleich mit Code! Zeig uns doch erst mal deinen - vielleicht kann man ihn noch optimieren. >Wenn ich den Spulenstrom reduziere um Zwischenstepps zu erreichen geht >doch zwangsläufig das Drehmoment runter oder sehe ich da was falsch?? Genau deswegen benutzt man den Chopper-Betrieb.
Lothar, beim full step ziehst du den Motor aus jeweils größerer Distanz an und arbeitest obendrein noch gegen die Rotorschwingungen, die Schrittverluste induzieren können. Mit dem Microstepbetrieb wird das Feld gleichmässiger gedreht und der Rotor muss immer nur eine geringe Diszanz überwinden. Am Ende führt dies dazu, daß man mehr Beschleunigung fahren kann, was einem effektiv höheren wirksamen Drehmoment entspricht.
Rahul, ich habe mir gerade sogenannte Scanner mal angesehen und die haben für die Spiegelaufhängung keine Getriebe eingebaut. So was wäre schon für mich die richtige Funktionsweise. Den Haufen Code den ich mir bis jetzt zusammen geschrieben habe muss ich erst mal wieder aufräumen. Dann kann ich den hier mal zeigen. Großartig optimieren kann man den nicht mehr, außer in Assembler. Die Start Rampe mache ich so das ich das Step-Delay linear reduziere. Ich fange bei D = 20 an. D - 4 bis D <= 1 dann wird bei jedem Takt ein Step raus gegeben. Beim Abbremsen wird mit D + 5 gerechnet. Der Takt ist 1,5ms.
@Microstepspezi, klingt logisch. Ich werde mir die Theorie mal anschauen. Ohne Zusatzhardware, rein softwaretechnisch kann ich mir das zwar nicht vorstellen, aber man könnte es ja mal versuchen mit vielleicht zehn Zwischenschritten. Zur Not, wie bei Oliver mit einem MC pro Achse. Obwohl, die Microsteps brauche ich ja nur zur Feinpositionierung, da wäre die Rechenzeit von der Beschleunigung frei, oder, wenn es nötig ist, beim Beschleunigen mit weniger Zwischenschritten arbeiten. Ein weites Feld zum Experimentieren. Grüsse Lothar
Das Micro-Schritt System läuft im 50us Takt und ich habe eine PWM Auflösung von 3.
>aber man könnte es ja mal versuchen mit vielleicht zehn Zwischenschritten Nimm lieber eine Zweierpotenz... >Der Takt ist 1,5ms. Ich guck mal nach, mit welcher Frequenz ich meinen Stepper drehen lasse.
Wenn ich mehr Schritte nehme fällt auch die PWM Frequenz. Ich hatte eigentlich 8 Schritte geplant, aber da war das Pfeifen mir zu nervig. Reichen würden mir schon 2 Schritte , werde aber einen Kompromiss eingehen und 4 Schritte nehmen.
Microstepping mit einem PIC (Grundlagen werden auch vermittelt): http://ww1.microchip.com/downloads/en/AppNotes/00822a.pdf Stepper-Fundamentals: http://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf
Mach es doch einfach wie ich! Kauf Dir ein geiles Application Board für nen Tausender mit ein paar Motoren und gut ist. Mit Deiner Hausfrauensteuerung wird das eh nix.
Hausfrauensteuerung? Sorry, aber da triffst Du den Falschen. Ich mache nur die Software. Für diese Hardware bin ich nicht verantwortlich. Ich hätte auch bessere Treiber eingebaut, aber der Kollege war der Meinung das wäre so schon okay. Ist aber jetzt auch egal, ich muss die Motoren Drehen lassen. Das wie ist leider meine Sache und da ich hier Probleme habe, frage ich halt Euch.
>Rahul, der Stinkige (Gast)
Immer diese schlechten Kopien...
Ich bin übrigens noch nicht dazu gekommen, nach der Betriebsfrequenz
meines Steppers zu gucken.
Hallo. So ich hatte noch einen super Fehler in der Ansteuerung. Man sollte die Micro-Steps auch in der richtigen Reihenfolge ausgeben! Das könnte ungemein helfen! Den PWM Timer habe ich auf 30us runter geschraubt und ich arbeite nun mit 4 Zwischenschritten. Mir wären zwar 2 Schritte lieber wegen der Frequenz und 8 Schritte wegen der Auflösung. Nun ja, dann pfeift die Kiste halt! Ich komme nur nicht weiter runter da ich schon 17us im Interrupt verbrate und der Rest will ja auch noch mal was machen. Das ist schon perfekt optimiert, da ist nichts mehr raus zu holen. Die Maximal Geschwindigkeit habe ich einfach durch probieren bestimmt. Für die Rampen habe ich mir eine Tabelle gemacht. // Start Rampe Delay = TAB_ACC[Delay]; // lade neue pausen Zeit bis zum naechsten Step if (Delay <= 1) Mode = MODE_RUN; // Stop Rampe if (Delay <= 32) Delay = TAB_DCC[Delay]; // lade neue pausen Zeit bis zum naechsten Step if (Delay >= 32) Mode = MODE_STOP; Damit kann ich eine bessere Rampe fahren. Die Tabelle ist noch nicht perfekt aber es läuft erstmal. Rahul, hier könnte ich immer noch Deine Informationen gebrauchen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.