Hallo zusammen, Ich möchte mit einem Arduino Mega einen Schrittmotor steuern. Als Motortreiber habe ich ein EasyDriver V4.4 Board und der Schrittmotor ist ein 2 Phasen bipolar Motor mit 200 Schritten. Wie ich die Richtung und die Umdrehungen steuere ist mir klar nur ich bräuchte eine Rampe zum beschleunigen und wieder abbremsen. Wie kann ich dies verwirklichen? Noch zu erwähnen ist das der Schlitten der vom Schrittmotor bewegt wird exakt auf der gewünschten stelle stehen bleibt. Es gibt insgesammt 9 Positionen wo er anhalten soll aber diese müssen in einer beliebigen Reihenfolge angefahren werden können, also die Schrittanzahl ist nicht immer die selbe. Vllt kann mir ja jemand den entscheidenden Tipp geben. Suche jetz schon ein paar Stunden aber finde nicht das richtige. Vielen Dank im Vorraus und ein Frohes Neues. Armin
Hallo, das gesuchte solltest Du in den Sourcen von GRBL finden (http://github.com/grbl). Dort ist es Teil der Ansteuerung von Schrittmotoren für CNC-Maschinen. Vielleicht kannst Du GRBL auch komplett für Deine Aufgaben gebrauchen (Steuerung nur einer Achse). Gruß, Michael
Hallo Michael, Vielen Dank schon mal. Das hatte ich gefunden gehabt aber ich werde daraus leider nicht wirklich schlau dafür sind meine Programmierkenntnisse noch nicht gut genug. Erstes Projekt mit einem Arduino. Gibt es nicht eine einfachere möglichkeit? Zum Beispiel: Wenn ich an Punkt 1 stehe weiß ich ja wie viele Schritte es zum Punkt 2 sind. Gibt es da keine möglichkeit die Anzahl der Schritte in 3 Teile um rechnen zu lassen und dann die ersten 25% langsam schneller werdent fahren zu lassen, die 2. 50% mit Maximal geschwindigkeit fahren zu lassen (diese müsste aber wahrscheinlich im Verhältnis zu der Entfernung der Punkte sein) und die letzten 25% wieder langsamer werdent zum Ziel fahren. Grüße Armin
Armin L. schrieb: > Wenn ich an Punkt 1 stehe weiß ich ja wie viele Schritte es zum Punkt 2 > sind. Gibt es da keine möglichkeit die Anzahl der Schritte in 3 Teile um > rechnen zu lassen und dann die ersten 25% langsam schneller werdent > fahren zu lassen, die 2. 50% mit Maximal geschwindigkeit fahren zu > lassen (diese müsste aber wahrscheinlich im Verhältnis zu der Entfernung > der Punkte sein) und die letzten 25% wieder langsamer werdent zum Ziel > fahren. natürlich geht das. Du erhöhst die Geschwindigkeit solange, bis entweder die höchste erreicht ist, oder die hälfte der Strecke zurückgelegt wurde.
Hi AVR446: Linear speed control of stepper motor http://www.atmel.com/Images/doc8017.pdf http://www.atmel.com/Images/AVR446.zip MfG Spess
Klingt wie die Steuerung eines Floppykopfschrittmotors, schon 1978 von Apple im Apple ][ Disklaufwerk mit Rampen gelöst, und vom 6502 ausgeführt. Man muß die Codestelle nun nur noch finden: http://www.brutaldeluxe.fr/documentation/dos33/apple2_SRC_DOS33C_1983.pdf
Hallo, die Aufwärtsrampe ist natürlich trivial, weil sie zum Zeitpunkt 0 mit Geschwindigkeit 0 beginnt, du musst also nur alle x ms die Solldrehzahl um y erhöhen, bis die gewünschte Geschwindigkeit erreicht ist (Ausnahmen s.u.). Ich habe das in einer Timer-ISR untergebracht. Die Abwärtsrampe geht eigentlich genauso, nur musst du zuvor ausrechnen, in welchem Abstand zum Ziel sie beginnen muss, damit sie am Zielpunkt mit Geschwindigkeit 0 endet. Ausnahmen sind kurze Strecken: da muss man berechnen, wann sich die Rampe aufwärts mit der Rampe abwärts schneidet - die Mitte, wie von STK500-Besitzer genannt, ist es nur, wenn beide Rampen die gleiche Steigung (Beschleunigung) haben, was aber der Einfachkeit halber zu empfehlen ist. Gruss Reinhard
Hallo, Vielen Dank für die Hilfe soweit. Ich habe aber trotzdem nicht aufgehört zu suchen und folgende library gefunden die eigentlich alles nötige enthält. http://www.open.com.au/mikem/arduino/AccelStepper/index.html Nur finde ich nicht herraus wie man zwischen Vollschritt, Halbschritt, 1/8 Schritt wechselt. Grüße Armin
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.