Benutzer:Malzeit/Serial-IO-Expander
Der Serial-IO-Expander stellt alle wichtigen Mittel zur Verfügung um eine Schnittstelle zwischen der elektronischen Welt und dem PC zu bilden. Die Kommunikation erfolgt über die serielle Schnittstelle (USB mit eigenen Treiber wäre nur unnötiger Aufwand). Für Ein- und Ausgabe stehen digitale Ports mit zur Verfügung und negative Flankenerkennung vereinfacht die Nutzung von Tastern. Ein besonderes Merkmal bildet der D/A-Wandler, um den sich vergleichbare Projekte gerne drücken und natürlich steht auch ein A/D-Wandler zur Verfügung. Das nächste Highlight stellt das Konzept zur Kommunikation über die serielle Schnittstelle dar, bei der ein Augenmerk auf schnelle und zuverlässige Kommunikation liegt.
Übersicht
Port #1 und Port#2 verfügen über je 4 digitale Ein- und Ausgänge. Port #3 ist der analoge Eingang für 0..12V und liefert als Spannung 5 V und 12 V. Der analoge Ausgang stellt auch 5 V und 12 V am Stecker bereit und die Ausgangsspannung hat den Bereich 0..12V.
Serielle Kommunikation
Der IO-Expander kennt drei Befehle, die ID programmieren (wird später noch erklärt) sowie die IO auslesen und schreiben. Unmittelbar nach dem Schreiben der antwortet der Serial-IO-Expander in dem er den aktuellen Zustand der IO zurückmeldet.
Aufbau der Telegramme
Alle Werte hexadezimal in Kleinbuchstaben: "0123456789abcdef"
- PC -> IO-Expander
>xx,xx,x,xx,xxx,xxx,xxx,xxx+xx\r 1 * * *
- Header ">"
- ID, zwei Zeichen
- Version, zwei Zeichen
- Packet-Counter, ein Zeichen
- 2x Digital Ausgänge a 4-Bit, zwei Zeichen
- 4x Analog Ausgänge a 12-Bit, jeweils drei Zeichen
- 1x Prüfsumme, (+xx) zwei Zeichen
- 1x Footer, "\r" -> binär 0x0d
- IO-Expander -> PC
#xx,xx,x,xxx,xx,xx,xx,xxx,xxx,xxx,xxx,xxx,xxxx+xx\r 1 * * * * *
- Header "#"
- ID, zwei Zeichen
- Version, zwei Zeichen
- Packet-Counter, ein Zeichen
- Zeit zwischen letztem Paket in ms, drei Zeichen
- Status-Bits für IO-Expander
- 2x Digitale Eingänge a 4-Bit, zwei Zeichen
- 2x Digitale Eingänge Flankenerkennung (fallend) a 4-Bit, zwei Zeichen
- 4x Analog Ausgänge a 12-Bit, jeweils drei Zeichen
- Interne 12 V Spannungsüberwachung a 12-Bit, drei Zeichen
- Frequenzzähler (TODO)
- 1x Prüfsumme, (+xx) zwei Zeichen
- 1x Footer, "\r" -> binär 0x0d
- ID-Programmierung (PC -> IO-Expander)
>ff,xx,xx
- Header ">"
- ID "ff"
- Version
- Zu programmierende ID
Die ID innerhalb von 30 Sekunden nach dem Reset programmiert werden, danach aktiviert sich eine Sperre.
- Prüfsumme
Dir Prüfsumme entsteht aus der Quersumme des binären ASCII-Wertes aller Zeichen ohne Header bis vor dem "+" der Prüfsumme.
Ablauf
TODO
Aufbau
TODO
Anwendungsbeispiel
TODO Perl, nicht optimal Perl für kleine Helfer-Programme innerhalb von Linux&Co konzipiert
Features
- Serielle Schnittstelle mit 8 Bit, keine Parität und 1 Stopbit
- 8 digitale Ein- sowie 8 digitale Ausgänge
- 4 analoge Ausgänge
- 4 analoge Eingänge
Alternativen
- USB IO Expander
- CompuLAB von AK Modul-Bus (Dokumentation)
- SISO und weitere AK Modul-Bus Geräte
- Reichelt bietet verschieden Lösungen z. B. von Meilhaus, siehe » Messtechnik » PC-Messtechnik und » Diverses » Bausätze
- ...
Dateien
TODO
- disable Taster
- Frequenzzähler
- ausführliche Fehlerbehandlung
- Umsetzung in C (wird wahrscheinlich keine Zeit vorhanden sein :-\)
[[Kategorie:Projekte]]