Forum: Mikrocontroller und Digitale Elektronik 2 Schrittmotoren mit dem AVR ansteuern


von Steffen S. (steffen_s61)


Lesenswert?

Hallo Leute,

Ich möchte mit einem "myAVR Board MK2" 2 bipolare Schrittmotoren 
(Schrittmotor PSM42BYGHW603 von Pollin) ansteuern. Programmiert wird das 
ganze über AVR-Studio 5.1.Die Stromversorgung von 5V und 12V beziehe ich 
aus einem alten PC-Netzteil. Nach etlicher Recherche hier im Forum ist 
mir bewusst das ich dafür einen IC brauche.

Nun meine Eigentliche Frage:
Was für einen IC muss ich verwenden um beide Motoren gleichzeitig zu 
betreiben? Am besten wäre ein IC an dem ich beide Motoren anschließen 
kann der aber auf meinem MK2 Board so wenig Ports wie möglich belegt da 
ich noch Sensoren und Display ansteuern muss.

Des weitern ist es mir ein Rätsel wie ich das ganze Programmieren 
muss(mit Rampe), wenn jemand ein kleines Beispiel hätte wäre ich sehr 
Dankbar.
Da ich keine Elektrotechnische Ausbildung habe bitte ich um Nachsicht 
;-)

Vielen Dank für eure Hilfe.

PS. Wenn es hier im Forum schon eine Lösung für mein Problem gibt, hab 
ich diese Leider nicht gefunden.

von Wolfgang (Gast)


Lesenswert?

Steffen S. schrieb:
> Des weitern ist es mir ein Rätsel wie ich das ganze Programmieren
> muss(mit Rampe), wenn jemand ein kleines Beispiel hätte wäre ich sehr
> Dankbar.

Von Atmel gibt es dazu z.B. die
Atmel AppNote AVR446 - Linear speed control of stepper motor
http://www.atmel.com/dyn/resources/prod_documents/doc8017.pdf

von Noch einer (Gast)


Lesenswert?

Kommt auf die Anforderungen an. Wenn du den Weg beider Motoren 
koordinieren willst, ist der Ansatz aus 
http://dank.bengler.no/-/page/show/5470_grbl besser geeignet.

Treiber-IC - du brauchst bei allen 4 Pins. 2 * step und direktion.

von Noch einer (Gast)


Lesenswert?

Was mir gerade auffällt, die Motoren haben 12 Volt, 30 Ohm.

Normalerweise betreibt man Schrittmotoren mit Strombegrenzung und einem 
vielfachen der Nennspannung. Das Problem: bei hoher Drehzahl werden 
Strom und Drehmoment durch die Induktivität begrenzt -- für hohe 
Drehzahlen braucht man hohe Spannung.

Erst mal schauen, ob sich bei diesen Motoren und 12 Volt der Aufwand für 
Beschleunigungsrampen überhaupt lohnt, oder ob man die eh nur mit 
Start-Stop Frequenz betreiben kann.

von Steffen S. (steffen_s61)


Lesenswert?

Danke für die schnellen Antworten.

Die Motoren werden verwendet um 2 Lineare Bewegungen mittels 
Trapezgewinde 10x3 zu erzeugen, die Verfahrenswege sind ca. 200mm und 
250mm. Da die Positionierung genau erfolgen sollte dachte ich an 
Inkrementalgeber an den Gewindestangen. Die Drehzahl sollte bei 100 
1/min sein.

von Steffen S. (steffen_s61)


Lesenswert?

Noch einer schrieb:
> Treiber-IC - du brauchst bei allen 4 Pins. 2 * step und direktion.

Mit 4 Pins könnte ich gut auskommen, hätte zur Not noch einen 
ProtExpander.


Noch einer schrieb:
> Erst mal schauen, ob sich bei diesen Motoren und 12 Volt der Aufwand für
> Beschleunigungsrampen überhaupt lohnt, oder ob man die eh nur mit
> Start-Stop Frequenz betreiben kann.

Die Rampen sind kein muss, hatte das so Verstanden das die bei 
Schrittmotoren "gebraucht werden".

von Noch einer (Gast)


Lesenswert?

Jain. Bei hoher Frequenz summen die nur, laufen aber nicht los. Pollins 
Datenblatt ist ja etwas dünn. Musst sowieso experimentieren. 
Schrittmotoren laufen recht ruckelig. Da braucht es einige Zeit, bis man 
raus hat, wie alles ohne Schwingungen und Aussetzer läuft.

von Noch einer (Gast)


Lesenswert?

... Inkrementalgeber? Schrittmotoren und Inkrementalgeber passen nicht 
so recht zusammen. Entweder Servomotoren oder drauf verlassen, dass der 
Motor genau die Schritte macht, die der Controller vorgibt.

von Steffen S. (steffen_s61)


Lesenswert?

Ok, also keine Rampen und keine Inkrementalgeber.

Könnte ich mit dem MK2 Servomotoren betreiben und wenn ja, bekomme ich 
diese für wenig Geld in dieser Baugröße?

Bleibt mein Problem mit dem IC bzw. Shield für beide Motoren und der 
Programmierung. Hast du dafür zufällig noch eine Idee/Beispiel?

Vielen Dank

Wenn alles mal Funktioniert werde ich davon ein Video machen und den 
Link ins Forum posten

: Bearbeitet durch User
von Mike J. (linuxmint_user)


Lesenswert?

Dieser Treiber sollte für dich ausreichen:
http://www.ebay.de/itm/361240280436

Größe: 20x15mm

Foto: Beitrag "Re: DRV8825 Steppertreiber treiben mich in den Wahnsinn"

Mit dem weißen Poti stellt man den Strom ein.
Den Schrittmotor darf man nur dann vom Treiber abstecken/anstecken wenn 
die Versorgungsspannung vorher entfernt wurde.

Diese Treiber können zwar 2.2A liefern, aber wenn man einen geringeren 
Strom einstellt (wie bei dir 0.4A) werden sie auch nicht so warm.

Du brauchst für jeden Motor einen solchen Treiber.

Du brauchst aber eine Spannungsquelle die 24V bis 45V liefert und über 
1.6A bringt.

------------------------
Methode 1:

24V / 5A Netzteil:
http://www.ebay.de/itm/161370350439
14,39€

------------------------
Methode 2:
Du kannst aber auch die 12V aus deinem PC-Netzteil mit einem kleinen 
StepUp-Wandler auf bis zu 12V bis 38V bringen.

http://www.ebay.de/itm/281651213545
Preis: 1.60 Euro
Ich würde zwei Stück davon kaufen, für jeden Schrittmotortreiber einen.

Du kannst die Spannung dann beliebig bis auf 38V erhöhen bis dein Motor 
bei der entsprechenden Geschwindigkeit ordentlich läuft.

Der "DRV8825" kann bis zu 45V vertragen.

von Wolfgang A. (Gast)


Lesenswert?

Mike J. schrieb:
> Ebay-Artikel Nr. 281651213545
> Preis: 1.60 Euro
> Ich würde zwei Stück davon kaufen, für jeden Schrittmotortreiber einen.

Und wozu dann den?

Um eine genügend hohe Spannung für den Schrittmotor zu erzeugen, 
bräuchte man einen Step-Up Wandler und keinen Step-Down.

von Mike J. (linuxmint_user)


Lesenswert?

Oh, sorry.

Hier ist ein passender StepUp-Wandler der bis zu 35V liefert:

http://www.ebay.de/itm/321666376693
Preis: 3,58 Euro

von m.n. (Gast)


Lesenswert?

Steffen S. schrieb:
> Des weitern ist es mir ein Rätsel wie ich das ganze Programmieren
> muss(mit Rampe), wenn jemand ein kleines Beispiel hätte wäre ich sehr
> Dankbar.

Ein kleines Programm, aber mehr als drei Zeilen muß man schon 
programmieren:
Beitrag "Schrittmotoransteuerung mit A4982 und ATmega328"

Hier wird ein Motor mit Rampe über ISR(TIMER1_COMPA_vect) angesteuert. 
Der 2. Motor kann über ISR(TIMER1_COMPB_vect) angesteuert werden.
Um Pins einzusparen, verwendet man vom Motortreiber nur dir DIR- und 
STEP-Eingänge.
Wenn man mehr IO-Pins verwenden kann, wäre der L6219 ein einfacher 
Treiber für den hochohmigen Motor.

Ohne minimale Vorkenntnisse mal eben so zwei Schrittmotore anzusteuern, 
ist vermutlich nicht so einfach, wie von Dir gedacht.

von Noch einer (Gast)


Lesenswert?

Wir sollten da mehrere Schritte empfehlen.

Erst mal Motoren einbauen. Mit Last läuft ein Schrittmotor viel besser.
Dann 2 Treibermodule mit Step und Direction Eingang kaufen.
Mal schauen, ob es mit 12 Volt ohne Beschleunigungsrampen klappt.
Danach irgendein Beispiel für eine Rampe für einen Motor ausprobieren.
Falls 12 Volt nicht genug Drehmoment ergeben, anderes Netzteil oder 
Stepup kaufen.

Danach mit den gesammelten Erfahrungen ein Programmkonzept für die 
Ansteuerung auswählen.

von Bernd K. (prof7bit)


Lesenswert?

Eine andere Möglichkeit wäre es DDS 
https://www.mikrocontroller.net/articles/DDS zur Erzeugung der Schritte 
zu nehmen. Weil Du nur Rechtecke erzeugen willst ist N=1 und die 
Lookup-Tabelle entfällt komplett, stattdessen gibst Du das höchstwertige 
Bit des Phasenakkumulators direkt an einem Portpin aus, als Puls für den 
Steppertreiber.

Die Vorteile wären:

1. Du brauchst nur eine einzige ISR für mehrere Achsen

2. Du hast eine konstante und hochauflösende Zeitbasis und die 
Ausgangsfrequenz ist direkt proportional zu dem Wert den Du zum Akku 
addierst, das macht die Berechnung und Erzeugung einer linearen Rampe
 zum Kinderspiel, Du kommst komplett ohne Multiplikationen aus.

: Bearbeitet durch User
von steffen_s61 (Gast)


Lesenswert?

Danke für die vielen Antworten.
Gibt es noch andere IC/Shields/Treiber an dem ich beide Motoren 
anschließen kann?(die anzahl der Pins mal auseracht gassen)

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

steffen_s61 schrieb:
> Gibt es noch andere IC/Shields/Treiber an dem ich beide Motoren
> anschließen kann?(die anzahl der Pins mal auseracht gassen)

Du kannst mal versuchen GRBL zu benutzen. Dafür nimmst Du einen Arduino 
Uno/Nano und flashst die neueste GRBL 0.9i drauf. Dem Arduino schickst 
Du dann G-Code Kommandos mit einem anderen MC z.B. irgendeinem ATMega. 
Hab ich zwar noch nie gemacht, müsste aber funktionieren.
Der Vorteil: Du brauchst Dir um die Mathematik von Rampen, 
Beschleunigungen und dergleichen keine Gedanken zu machen, das erledigt 
alles GRBL im Arduino für Dich. Am Arduino schliesst Du dann direkt die 
Schrittmotor-Treiber an.

Beispiel für einen zu sendenden G-Code:

G90              Absolute Koordinaten
F500             Vorschubgeschwindigkeit 500 mm/min
G1 X50 Y10       Gehe mit Vorschubgeschw. nach X50 und Y10

Siehe hierzu:
https://github.com/grbl/grbl/wiki
https://github.com/grbl/grbl/wiki/Connecting-Grbl
http://en.wikipedia.org/wiki/G-code

Testen kannst Du das auch mit nur dem Arduino und einem 
Terminal-Programm in dem Du die G-Codes eingibst.

Gruss Ulrich Albert

: Bearbeitet durch User
von steffen_s61 (Gast)


Lesenswert?

Also G-Code kenn ich zuhauf, ich darf leider nur das AVR MK2 verwenden. 
Mit dem Arduino kann ich beide Motoren nacheinander ansteurn. Bin aber 
wie oben schon gesagt an das AVR MK2 gebuden, mit dem ich die Motoren, 
ein 2 Zeilen LCD und mehrere Sensoren und 3 Taster steuern muss

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

steffen_s61 schrieb:
> Mit dem Arduino kann ich beide Motoren nacheinander ansteurn

Mit GRBL auf dem Arduino kannst Du beide Motoren GLEICHZEITIG ansteuern.

steffen_s61 schrieb:
> Bin aber
> wie oben schon gesagt an das AVR MK2 gebuden, mit dem ich die Motoren,
> ein 2 Zeilen LCD und mehrere Sensoren und 3 Taster steuern muss

Kannst doch das AVR MK2 zur Ansteuerung des Arduino/GRBL nehmen, wo ist 
denn da das Problem, ausser dass Du zusätzlich noch den Arduino 
dazwischen hast?

von steffen_s61 (Gast)


Lesenswert?

Die Idee haten wir auch schon in Unserer Projektgruppe, leider hat uns 
das unser Lehrer nicht genehmigt. Das ganze ist für ein Projekt an der 
Technikerschule.

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.