Schrittmotoren ansteuern

#7007241
Lesenswert?

Guten Tag.
Meine Aufgabe ist es ein Technikerprojekt weiterzuentwickeln.
Eine Selbstentworfene Schrittmotorkarte steuert zwei Schrittmotoren an. 
Dies funktioniert auch mit dem Programm des Vorgängers. Ich möchte ein 
eigenes Programm schreiben und nutze den Accelstepper.

Mirkocontroller:  ATMega 328P-PU
Schrittmotortreiber: DRV8825PWP

Pinbelegung:

Schrittmotorteiber1: Step_Pin = 11, Dir_Pin = 6
Schrittmotortreiber2: Step_Pin = 12, Dir_Pin = 13


Mit diesem Testprogramm laufen beide Motoren. Sobald ich nicht mehr mit 
Portmanipulation arbeite laufen beide nicht mehr und wenn ich z.B die 
Accelstepper LIB benutze läuft nur der Motor von Schrittmotortreiber 1.
Angehängte Dateien:
Gast #7007247
Lesenswert?

Jan S. schrieb:
> Mit diesem Testprogramm laufen beide Motoren. Sobald ich nicht mehr mit
> Portmanipulation arbeite laufen beide nicht mehr und wenn ich z.B die
> Accelstepper LIB benutze läuft nur der Motor von Schrittmotortreiber 1.

Wenn Du etwas änderst und es läuft nicht mehr, liegt es an deiner 
Änderung.
Das ist doch schon mal gut.
Also was genau änderst du?
#7007260
Lesenswert?

Mein Vorgänger nutzt in seinem Programm die Portmanipulation wie in 
meinem Testprogramm. Damit funktioniert es. Mir fehlen in dem Programm 
allerdings Funktionen wie Beschleunigen und deshalb möchte ich den 
Accelstepper nutzen. Mit dem Accelstepper läuft allerdings nur 
Schrittmotortreiber1 und Schrittmotortreiber2 nicht.
Moderator (Firma: Titel) Persönliche Seite #7007338
Lesenswert?

Jan S. schrieb:
> Angehängte Dateien:
> Testprogramm.jpg
Editierst du deine Software mit Paint?

Jan S. schrieb:
> Das Testprogramm so wie es auf dem Foto ist läuft.
Ja, dann ist der eigentlich uninteressant. Denn der Code, der nicht 
läuft, macht Probleme...

Jan S. schrieb:
> Mit dem Accelstepper läuft allerdings nur Schrittmotortreiber1 und
> Schrittmotortreiber2 nicht.
Ja, dann ist da wohl noch ein Fehler drin. Wie wäre es, wenn du einfach 
die Sourcedatei hier anhängst?

BTW: besorg dir mal schon ein Oszilloskop für später...
Gast #7007371
Lesenswert?

Dann wäre der nächste Schritt jeweils ein run() auszukommentieren um zu 
prüfen ob die Motoren für sich laufen.
Wenn das so ist, dann können die Instanzen noch falsch parametriert sein 
und ein run zuviele Schritte generieren muss und damit der andere nicht 
drankommt. Also erstmal versuchen langsam laufen zu lassen.

Oder MultiStepper verwenden wenn gleichzeitige Bewegungen nötig sind.
http://www.airspayce.com/mikem/arduino/AccelStepper/MultiStepper_8pde-example.html
#7007482
Lesenswert?

So hier mal meine Sourcedatei mit dem Accelstepper. Mit dem Code läuft 
nur Schrittmotortreiber 1. Außerdem habe ich noch Schaltpläne von der 
Platine hinzugefügt.

Ich habe auch schon jeweils einen Schrittmotortreiber auskommentiert und 
versucht nur einen laufen zu lassen. Funktioniert leider auch nicht.
Angehängte Dateien:
Gast #7007564
Lesenswert?

> Ich möchte ein eigenes Programm schreiben und nutze den Accelstepper.

Das musst du in einer anderen Reihenfolge anpacken.

Zuerst verstehen, was dein Vorgänger gemacht hat. Dann verstehen, warum 
er es so gemacht hat. Danach überlegenen, wie es besser geht.

Erst wenn dir klar ist, wo die Probleme liegen und warum dein Vorgänger 
es so gemacht hatte, die Software neu schreiben.
Gast #7011007
Lesenswert?

Das Problem dürften falsche Pinnummern sein. Im Code werden virtuelle, 
targetabhängige Nummern verwendet, die haben aber nichts mit den 
Pinnummern des MCU Gehäuses zu tun. Stepper2 programmiert damit evtl. 
'verbotene' Pins um.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren