Sebjob Geschrieben September 13, 2024 at 18:01 Geschrieben September 13, 2024 at 18:01 Hallo zusammen, ich möchte die Position eines optischen Encoders (E38S6G5-600B-G24N) mit dem IO-16 2.0 Bricklet auslesen. Damit ich keine Schritte verliere, sollten die Eingänge als Interrupts genutzt werden. Laut Beschreibung des Bricklets sollte dies auch möglich sein. Es gibt auch einen Interrupt-Beispielcode. Dieser ist meines Erachtens aber nur eine normale Callback-Funktion. Ich habe es natürlich trotzdem getestet, aber festgestellt, dass Schritte beim Auslesen des Encoders verloren gehen. In der Doku des älteren IO-16 1.0 Bricklet habe ich eine Callback-Interrupt-Funktion gefunden, welche augenscheinlich so funktioniert wie ich es erwarten würde. Diese Funktion kann aber nicht für das IO-16 2.0 Bricklet genutzt werden. Ist die Beschreibung in der Doku falsch oder verwende ich die CALLBACK_INPUT_VALUE Funktion nicht richtig? Ich würde mich freuen wenn mir das jemand weiterhelfen könnte. Zitieren
borg Geschrieben September 16, 2024 at 07:16 Geschrieben September 16, 2024 at 07:16 Ich bin mir nicht 100%ig sicher ob ich die Frage richtig verstehe. Das Bricklet nutzt einen I2C-IO-Expander. Dieser wird ca. 1000x pro Sekunde per I2C ausgelesen. Falls das Signal deines Encoders eine Frequenz von mehr als 1kHz hat kann das Bricklet keine Callbacks/Interrupts für jeden Flankenwechsel erzeugen leider. Zitieren
Sebjob Geschrieben September 17, 2024 at 14:48 Autor Geschrieben September 17, 2024 at 14:48 Hallo borg, vielen Dank für deine Antwort. Mir fehlt leider der elektrotechnische Hintergrund, um meine Frage besser zu formulieren, aber deine Antwort hilft mir erstmal weiter. Das IO-16 Bricklet kann also Interrupts, nur eben nicht in der für meinen Encoder nötigen Frequenz. Da muss ich mir eine andere Lösung einfallen lassen. Vielleicht nen Arduino vorschalten. Mit dem hatte ich den Encoder bereits getestet und das hatte gut funktioniert. Möglicherweise kann ich die Winkelposition des Encoders vom Arduino berechnen lassen und dann per Analogsignal an ein Analog-IN Bricklet weiterleiten lassen. Zitieren
MatzeTF Geschrieben September 17, 2024 at 15:02 Geschrieben September 17, 2024 at 15:02 Wenn du die Position von einem neueren Arduino berechnen lassen und an ein Bricklet weitergeben lassen möchtest, empfehle ich dir das RS232 Bricklet 2.0, damit du die Daten digital übertragen kannst. Bei einem 3,3 V Arduino kannst du die Pins direkt verbinden, bei einem 5 V Arduino brauchst du einen Widerstand. Das klappt allerdings nicht mit alten Arduinos, die nur eine serielle Schnittstelle haben, die fest mit dem USB-Port verbunden ist. Zitieren
photron Geschrieben September 17, 2024 at 16:44 Geschrieben September 17, 2024 at 16:44 Laut Datenblatt ist der E38S6G5-600B-G24N ein Quadraturencoder, der mit bis zu 24V arbeiten kann. Dafür ist unser Industrial Counter Bricklet bestens geeignet: https://www.tinkerforge.com/de/doc/Hardware/Bricklets/Industrial_Counter.html#quadraturencoder-inkrementalgeber Zitieren
Sebjob Geschrieben September 18, 2024 at 14:44 Autor Geschrieben September 18, 2024 at 14:44 Hallo MatzeTF und photron, Danke für eure Beiträge, das sind beides gute Tipps. Ich werde mir mal ein Industrial Counter Bricklet bestellen und den Encoder damit auslesen. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.