INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
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>

#define STEPS 2038                          // Anzahl der Schritte des Motor´s ( 28BYJ-48 )
const byte endschalterPin = 12;             // Zur Feststellung der Endposition. der Schalter verbindet den Pin mit Gnd, wenn der Aufzug dort angekommen ist.
const byte startPin = 7;                     // Zum Starten des Aufzugs

const byte pinStep = 5;
const byte pinDir = 6;

const long obererEndpunkt = 4000;           // Zahl der Stepperschritte zwischen 'unten' und 'oben'

MoToStepper stepper(STEPS, FULLSTEP);       // Einrichten des Steppers

void setup() {
  pinMode( pinStep, OUTPUT );
  pinMode( pinDir, OUTPUT);
  stepper.attach ( pinStep, pinDir );         // Nr. der Pins für den Stepper
  pinMode( endschalterPin, INPUT_PULLUP );  // Endschalter schaltet nach Gnd
  pinMode( startPin, INPUT_PULLUP );  // Endschalter schaltet nach Gnd
  stepper.setSpeed(20);                     // Geschwindigkeit in RPM*10
  stepper.rotate(-1);                       // Die Drehrichtung muss hin zum Schalter sein!
  while ( digitalRead( endschalterPin ) == HIGH );   // Warten bis der Endschalter anspricht
  stepper.stop();                           // anhalten
  delay(500);
  stepper.setZero();                        // Momentane Position als 'Startpunkt' einrichten.
  stepper.setSpeed(60);                     //Geschwindigkeit in Rpm * 10 im Aufzugbetrieb
  stepper.setRampLen( 100 );                // Sanftes Anfahren und Anhalten
}
void loop() {
  if ( digitalRead( startPin ) == LOW );   // Bei Verwendung mit PULLUP, sonst auf == HIGH prüfen
  {
    stepper.writeSteps(obererEndpunkt);     // zum oberen Ebdpunkt bewegen
    while ( stepper.moving() );             // Warten bis Stepper oben angekommen ist
    delay(2000); // Wartezeit in ms
    stepper.writeSteps(0);                  // zurück zum Nullpubkt ( = unten )
    while ( stepper.moving() );             // Warten bis Stepper unten angekommen ist
  }
  delay (2000);
}
Ist das grundsätzlich korrekt so?

LG Markus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.01.2021, 14:39
Beitrag #26
RE: Arduino mit Schrittmotor und Lichtschranken
Hallo Markus
(22.01.2021 14:00)hanebambel schrieb:  
Code:
#define STEPS 2038                          // Anzahl der Schritte des Motor´s ( 28BYJ-48 )
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:  
Code:
MoToStepper stepper(STEPS, FULLSTEP);       // Einrichten des Steppers
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.01.2021, 18:25
Beitrag #28
RE: Arduino mit Schrittmotor und Lichtschranken
(25.01.2021 16:33)hanebambel schrieb:  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

Ich würde einen weiteren Taster für die andere Richtung einbauen.
mfg Wolfgang
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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.
Dann würde ich gerne den loop-Teil unterbrechen, um den Befehl in die Gegenrichtung zu fahren auslösen zu lassen.
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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 TutorialIdea.
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?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotor Geschwindigkeit steuern!!!! Rumpl-X 11 954 26.12.2020 15:02
Letzter Beitrag: Nichtraucher
  Accelstepper libary und Schrittmotor Lothileinchen 11 3.196 22.01.2020 21:30
Letzter Beitrag: Lothileinchen
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 3.603 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  Wegbegrenzung für Schrittmotor Scouter 62 10.893 10.02.2019 13:48
Letzter Beitrag: Scouter
  Projekt Portionierer mit Schrittmotor, Bluetooth hilfe Flieger 3 2.103 09.08.2018 13:02
Letzter Beitrag: Hilgi
  Endschalter für Schrittmotor clemens5555 10 6.500 18.04.2018 14:37
Letzter Beitrag: Tommy56
  Schrittmotor mit Puls/Richtung Steuern Günni 6 4.759 19.01.2018 10:30
Letzter Beitrag: Tommy56
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 6.805 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 6.341 29.04.2017 14:29
Letzter Beitrag: hotsystems
  Schrittmotor mit l298n Sequenz huber5093 10 5.882 26.04.2017 15:06
Letzter Beitrag: huber5093

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste