Welchen vorteil haben die int pins?

moin..
bin neu dabei und habe eine frage.
Ich habe den Arduino mega 2560 mit einem nema 23 und einem DM542 Treiber.
Der Motor soll nach einer von einem drehencoder (KY-040) gemessen strecke stoppen

Der Drehencoder bekommt 2 int pins, welchen vorteil hat es wenn ich den motor auch an diese anschließe?
oder würdet ihr sagen verschwendung? gibt ja nur 6 stück..
Das ganze soll evtl. später stark erweitert werden.

Ohne Interrupt benötigst Du ein sehr blockedearmes Programm, um keine Schrittverluste zu haben. Je nach Umfang und Deinen Programmierkünsten kann das eine Herausforderung werden.

Eigentlich macht man es nicht so.
Ein Schrittmotor legt durch Schrittansteuerung einen genau definierten Winkel / Wegstrecke zurück. Da ist ein Encoder nicht notwendig / bzw sogar manchmal kontroproduktiv.

Grüße Uwe

agmue:
Ohne Interrupt benötigst Du ein sehr blockedearmes Programm, um keine Schrittverluste zu haben

Man braucht keine externen Interrupts. Man kann Pins auch regelmäßig mit einem Timer-Interrupt auslesen.

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
sehr guter spruch!

OK, der schrittverlust würde bedeuten er verliert seine position ?
Wenn der drehencoder ein ende vorgibt ist das dann nicht irrelevant?

würde mir nur gerne für später möglicheiten offen halten…

Den drehencoder benötige ich leider, denn ich möchte mit dem motor ein band aufwickeln.
wobei sich der abrollumfang ständig durch viele einflüsse ändert, möchte ich die tatsächliche länge messen

Den drehencoder benötige ich leider, denn ich möchte mit dem motor ein band aufwickeln.
wobei sich der abrollumfang ständig durch viele einflüsse ändert, möchte ich die tatsächliche länge messen

Motor und Encoder sind also nicht mechanisch verbunden?

drehencoder (KY-040)

Der wird nicht lange leben.
Und dich mit Interrupts versorgen, so dass dir schwindelig wird. (und der Stepper Lib auch)

combie:
Motor und Encoder sind also nicht mechanisch verbunden?

der encoder liegt auf dem band auf, welches der motor aufwickelt

combie:
Motor und Encoder sind also nicht mechanisch verbunden?
Der wird nicht lange leben.
Und dich mit Interrupts versorgen, so dass dir schwindelig wird. (und der Stepper Lib auch)

ja das denke ich auch, deshalb werde ich bald wahrscheinlich auf ein inkrementenrad mit induktivsensor umsteigen

spe1sesalz:
Der Drehencoder bekommt 2 int pins, welchen vorteil hat es wenn ich den motor auch an diese anschließe?
oder würdet ihr sagen verschwendung? gibt ja nur 6 stück..

Was willst Du beim Motor mit den Interrupt-Pins? der braucht doch Ausgänge. Oder verstehe ich da was grundsätzlich falsch?

drehencoder (KY-040)

combie:
Der wird nicht lange leben.

Dieser Encoder ist für die Dateneingabe gebaut und nicht für die Drehwinkelerfassung.
Für die Drehwinkelerfassung ( = Länge) brauchst Du einen anderen, teureren Encoder oder Du machst es über die Ansteuererung der Schrittmotore.
Grüße Uwe

Und ganz wichtig: suche nach einem OPTICAL Encoder. Der Benötigt zwar eine Betriebsspannung, hat aber intern keine Mechanischen Schalter (die nur eine sehr begrenzte Anzahl Schaltzyklen übrleben) sondern Optische detektoren. Dann solltest Du auch jeh nach Geschwintigkein, mit der der Encoder angetrieben wird, evt. einen mit Kugellagern (Ball Bearing), anstelle von Gleitlagern wählen, die mit Kugellagern sind dann natürlich nocmals etwas teurer, können aber höhere Drehzahlen.
Auch wichtig: achte darauf, dass der Encoder KEINE Rastung hat. Die mit Rastung sind nur für Handbetrieb geeignet.

LG Stefan

Serenifly:
Man braucht keine externen Interrupts. Man kann Pins auch regelmäßig mit einem Timer-Interrupt auslesen.

Wobei ein Timer-Interrupt ja auch irgendwie ein Interrupt ist :wink:

spe1sesalz:
OK, der schrittverlust würde bedeuten er verliert seine position ?
Wenn der drehencoder ein ende vorgibt ist das dann nicht irrelevant?

Ich meinte nicht, der Motor verliert Schritte, sondern der Drehencoder verzählt sich.

spe1sesalz:
Den drehencoder benötige ich leider, denn ich möchte mit dem motor ein band aufwickeln.
wobei sich der abrollumfang ständig durch viele einflüsse ändert, möchte ich die tatsächliche länge messen

Dann würde ein DC-Motor zusammen mit dem Drehencoder genügen.

Dazu noch'n Spruch: Wer mißt, mißt Mist, wer viel mißt, mißt viel Mist.

spe1sesalz:
sehr guter spruch!

Der von mir ernannte Forums-Philosoph combie hat die besseren und wechselt gelegentlich.

In meiner Schulzeit wurden die Naturwissenschaften eher trocken präsentiert. Durch einen von mir erworbenen Filmvorführschein durfte ich bei der Kreisbildstelle Filme ausleihen. Dadurch bekam ich Tipps auf gute Filme, die ich an die Lehrer weitergab, weshalb wir vermutlich mehr Filme gesehen haben. Manchmal ging es in den Projektionsraum, weil andere Klassen mitgeschaut haben. Damals wuchs vermutlich meine Begeisterung für gut gemachte wissenschaftliche Filme, die ich immer noch gerne sehe, heute mit unglaublich anschaulichen Animationen. Und da benötigt man schon viel Vorstellungskraft.

Beispielsweise "Der Stoff, aus dem der Kosmos ist" von Brian Greene kam mal auf ARTE, ein Parforceritt durch die Physik.

Wobei ein Timer-Interrupt ja auch irgendwie ein Interrupt ist

Da ist zumindest die Häufigkeit planbar.

Hardware Interrupts können so schnell aufeinander folgen, dass dazwischen nur Platz für 1 einzelnes ASM Statement ist.

Forums-Philosoph

Danke für die Blumen!

Seitenreload machen, dann wechseln die Sprüche.
Oder Bild im eigenen Fenster öffnen, dann wechselt es automatisch

Wickeln geht vermutlich nur in eine Richtung, weshalb ein Encoder möglicherweise nicht nötig ist, wenn der zu viele Interrupts auslöst. Eine schwarz/weiße Scheibe mit Reflexlichtschranke oder ein Hallsensor dürften für das Zählen von Umdrehungen genügen.

Man kann natürlich auch einen Sensor wie in #10 beschrieben verwenden und nur ein Signal auswerten.

Deltaflyer:
Und ganz wichtig: suche nach einem OPTICAL Encoder. Der Benötigt zwar eine Betriebsspannung, hat aber intern keine Mechanischen Schalter (die nur eine sehr begrenzte Anzahl Schaltzyklen übrleben) sondern Optische detektoren. Dann solltest Du auch jeh nach Geschwintigkein, mit der der Encoder angetrieben wird, evt. einen mit Kugellagern (Ball Bearing), anstelle von Gleitlagern wählen, die mit Kugellagern sind dann natürlich nocmals etwas teurer, können aber höhere Drehzahlen.
Auch wichtig: achte darauf, dass der Encoder KEINE Rastung hat. Die mit Rastung sind nur für Handbetrieb geeignet.

LG Stefan

Ich denke das probiere ich aus, Danke!

spe1sesalz:
Ich denke das probiere ich aus, Danke!

Ich hoffe, dass Du damit Dein Problem gelöst bekommst. Bei den OPTICAL Drehencodern hast Du noch nen weiteren Vorteil: diese encoder Prellen NICHT, dadurch müssen sie also beim einlesen nicht erst Zeitkostend entprellt werden, können also schneller eingelesen werden. Du solltest jedoch eine méglichst Kurze verbindung zwischen Encoder und Arduino verwenden, und /oder ein abgeschirmtes Kabel benutzen. Nicht dass Du dir auf dem Weg zwischen Arduino und Encoder Störungen einfängst.
Je nachdem welchen Encoder du Einsetzen möchtest, suche dir auf jedenfall auch das Datenblatt dazu, und schaue nach, was für Ausgänge der Encoder hat. (Digital / OpenColector NPN , PNP)
Bei OpenColector (NPN) musst Du evt. je nach Leitungslänge anstat des Arduino-Internen PullUp, einen kleineren externen PullUp-Widerstand verwenden, damit Du mehr Signal zu Stör-Abstand bekommst. Bei OpenColector (PNP) musst du eh einen externen PullDown-Widerstand verwenden, dessen Wert sich auch etwas nach der Leitungslänge richtet, da der Arduino keine integrierten PullDown besitzt.

LG Stefan