Schrittmotoren ansteuern

OP #7007241
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
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?
OP #7007260
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
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
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
OP #7007482
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 #7007496
ist das richtig?
1
AccelStepper(2,

Die Konstante für Driver müsste 1 sein, besser das Enum dafür benutzen
1
AccesStepper( AccelStepper::DRIVER,...
Gast #7007564
> 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
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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.