Sebjob Posted September 13, 2024 at 06:01 PM Share Posted September 13, 2024 at 06:01 PM 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. Quote Link to comment Share on other sites More sharing options...
borg Posted September 16, 2024 at 07:16 AM Share Posted September 16, 2024 at 07:16 AM 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. Quote Link to comment Share on other sites More sharing options...
Sebjob Posted September 17, 2024 at 02:48 PM Author Share Posted September 17, 2024 at 02:48 PM 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. Quote Link to comment Share on other sites More sharing options...
MatzeTF Posted September 17, 2024 at 03:02 PM Share Posted September 17, 2024 at 03:02 PM 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. Quote Link to comment Share on other sites More sharing options...
photron Posted September 17, 2024 at 04:44 PM Share Posted September 17, 2024 at 04:44 PM 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 Quote Link to comment Share on other sites More sharing options...
Sebjob Posted September 18, 2024 at 02:44 PM Author Share Posted September 18, 2024 at 02:44 PM 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. Quote Link to comment Share on other sites More sharing options...
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.