Arduino mit Schrittmotor und Lichtschranken
|
22.01.2021, 14:00
Beitrag #25
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Ok, danke euch für die Hilfe.
An die Möglichkeit mit Pendellagern hatte ich noch gar nicht gedacht. Hab aber jetzt mal die Schlitten komplett auseinandergenommen (was ich bisher vermieden hatte) und div. Schrauben eingestellt. Gefettet hatte ich schon. Nun geht es nochmal bedeutend leichter. Ich würde es dann mit dem kleinen Schrittmotor mal versuchen mit der Option im Hinterkopf, bei Bedarf die Lager auszutauschen oder auf den größeren aufzurüsten. Hab mir auch mal dass Arduino-Kompendium von Franzis bestellt, um die Grundlagen besser zu verstehen. Erster Schritt: ich tausche den Output mit 4 Pins auf die DRV8825 Version mit pinStep und pinDir: Code: #include <MobaTools.h> LG Markus |
|||
22.01.2021, 14:39
Beitrag #26
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Markus
(22.01.2021 14:00)hanebambel schrieb:Hier solltest Du noch die Schritte/Umdrehung für deinen NEMA17 Motor aktualisieren ( hängt auch von der Einstellung der Mikroschritte am Treiber ab ). Das ist zwar nur wichtig, wenn man bei der Position mit Winkeln arbeitet, aber es sollte besser korrekt sein. (22.01.2021 14:00)hanebambel schrieb:Bei der Einrichtung des Motors musst Du angeben, dass Du mit einem Step/Dir Treiber arbeiten willst: Code: MoToStepper stepper(STEPS, STEPDIR); // Einrichten des Steppers Gruß, Franz-Peter |
|||
25.01.2021, 16:33
Beitrag #27
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Franz-Peter,
danke für die Hilfe, jetzt hat es etwas gedauert. Ich bin jetzt immerhin soweit, dass der Schrittmotor mit dem o. g. Code läuft. Was noch nicht funktioniert und wo ich einfach nicht dahintersteige, wieso der startPin 7 im loop nicht abgefragt wird. Endschalter geht wunderbar, sobald der auf GND geht, startet die Schleife. Aber ich bekomme den pin7 nicht ausgelesen. Dann würde ich gerne den loop-Teil unterbrechen, um den Befehl in die Gegenrichtung zu fahren auslösen zu lassen. Ich hatte gedacht, dass pin7==LOW die eine Richtung auslöst und pin7==HIGH die Gegenrichtung. Ist das so machbar und wenn ja, wie muss ich die if-Schleife unterbrechen/verlassen. Manches habe ich gelesen, aber offenbar falsch oder nicht verstanden, konnte es also nicht in einen funktionierenden Code umsetzen. LG und danke, Markus |
|||
25.01.2021, 18:25
Beitrag #28
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
(25.01.2021 16:33)hanebambel schrieb: Hallo Franz-Peter, Ich würde einen weiteren Taster für die andere Richtung einbauen. mfg Wolfgang |
|||
25.01.2021, 19:27
Beitrag #29
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
(25.01.2021 16:33)hanebambel schrieb: ... wo ich einfach nicht dahintersteige, wieso der startPin 7 im loop nicht abgefragt wird. Endschalter geht wunderbar, sobald der auf GND geht, startet die Schleife. Aber ich bekomme den pin7 nicht ausgelesen.Hallo Markus, deim Problem ist, dass Du blockierend programmierst. Während der gesamten Auf- und Abbewegung bleibt der Sketch durch die while und delay immer wieder stehen, und dein Pin wird überhaupt nicht abgefragt. Wie man blockadefrei programmiert habe ich hier mal erklärt. Da geht es zwar nicht um einen Aufzug, aber das dort vorgestellte Prinzip ist universell. Gruß, Franz-Peter |
|||
27.01.2021, 09:39
(Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2021 09:45 von hanebambel.)
Beitrag #30
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Franz-Peter,
danke für den Tipp und das wirklich tolle Tutorial ![]() Dann müsste ich die switch-Funktion so programmieren, dass ich je nach Schalterzustand (LOW/HIGH) den jeweiligen case (es gibt dann nur zwei) anspringen kann, oder? Man kann doch über die Variable direkt in den Verlauf reinspringen, oder? Dann würde die Variable bei switch durch eine Variable beispielsweise "schalterZustand" determiniert werden, oder? Diese wäre dann zu deklarieren. Danke und Gruß, Markus ...jetzt bin ich gerade wieder am überlegen, was einfacher zu programmieren geht: Taster oder Schalter...ursprünglich war ich beim Taster, was aber mit den Versuchen vor MobaTools nicht richtig funktioniert hat, daher bin ich dann beim Schalter (HIGH/LOW Wechsel) gelandet...Taster jetzt vielleicht besser? Was ist geschickter? |
|||
27.01.2021, 10:39
(Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2021 10:41 von MicroBahner.)
Beitrag #31
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Markus,
du musst jetzt in 'Zuständen' denken. Und der Automat bezieht sich auf deinen Aufzug, nicht auf den Schalter. Mein Vorschlag wären 5 Zustände für deinen Aufzug: - in Ruhe ( der Aufzug steht einfach ) - Fahrt nach oben - Wartezeit oben - Fahrt nach unten - Wartezeit unten Je nachdem in welchem Zustand sich dein Aufzug befindet verzweigt die switch-Anweisung entsprechend, und je nach Zustand musst Du bestimmte Ereignisse abfragen um eine Aktion auszulösen und einen Zustandswechsel herbeizuführen. Bei den Wartezeiten den Ablauf des Timers, bem Fahren das Erreichen des Ziels. Auf deinen Taster/Schalter kannst Du dann in allen Zuständen reagieren, um den Aufzug zu stoppen ( Zustand Ruhe ) oder wieder zu starten. Wenn Du ihn z.B. immer unten stehen lassen willst, kannst Du den das Ereignis 'Schalter/Taster betätigt' dann bei der Fahrt nach unten auswerten, und wechselst dann eben nicht nach 'Wartezeit unten', sondern nach 'Ruhe'. Bei so einem Zustandsautomat ist das Bedienen über einen Taster recht einfach. Im Prinzip ginge es sogar ohne Flankenauswertung: Ist der Taster gedrückt, setzt Du ein Flag, und wenn der Automat drauf reagiert, setzt Du das Flag wieder zurück. Bei Dauerdrücken würde er dann aber nach Stop gleich wieder starten. Flankenauswertung ist mir den MoToButtons aber auch recht einfach. Gruß, Franz-Peter |
|||
27.01.2021, 11:18
Beitrag #32
|
|||
|
|||
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Markus,
das Thema lautet ja Arduino mit Schrittmotor und Lichtschranken Hast Du dich schon mal mit induktiven Näherungsschaltern beschäftigt. Die hatten wir in unserer Firma in Förderbänder für die Endkontrolle. Z.B. https://www.amazon.de/AZDelivery-N%C3%A4...ljaz10cnVl Könnte man den Ablauf auch mit dem MoToTimer umsetzen? mfg Wolfgang |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste