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.
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?
Jan S. schrieb: > Dies funktioniert auch mit dem Programm des Vorgängers. Dann scheint ja der Vorgänger mehr Ahnung zu haben als du...suche den Unterschied
Jan S. schrieb: > Mit diesem Testprogramm laufen beide Motoren. Unwahrscheinlich, da fehlt ja sogar schon die Umschaltung der Pins auf Ausgang. Der Weg zum Verständnis ist bei dir noch weit, sehr weit.
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.
Deine #defines machen aber nur Sinn wenn du sie auch benutzt. Deine make wäre auch interessant.
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...
:
Bearbeitet durch Moderator
In der Mainloop muss run() für jede Instanz aufgerufen werden, wird das gemacht? http://www.airspayce.com/mikem/arduino/AccelStepper/MultipleSteppers_8pde-example.html
Werde Sourcedatei anhängen wenn ich wieder zuhause bin. Run() wird für beide Instanzen aufgerufen.
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
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.
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,... |
> 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.
Ich habe das Programm angepasst. Schrittmotortreiber1 läuft nun nachdem ich Step und Dir Pins im Programm getauscht habe. Schrittmotortreiber2 läuft leider immer noch nicht.
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.
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.