Für ein Hobbyprojekt habe ich mir die verfügbare Dokumentation (v2) zum Sensorbus sowie diverse andere im Internet verfügbare Dokumente angesehen. Allerdings scheint es gewisse Unklarheiten bezüglich der elektrischen Spezifikationen zu geben.
1) Maximalpegel des seriellen Sensorsignals
Zwar sind unter "Kenndaten" ein maximaler Low-Pegel und ein minimaler High-Pegel angegeben, aber es ist unklar, welche Maximalspannung auf der Signalleitung zugelassen ist. Es spricht viel dafür, daß der Bus für eine Spannung von 3.3V ausgelegt ist, aber die Spezifikation der High-/Low-Pegel würden auch mit 5V oder mehr erfüllt.
Um den Eingang mit einer geeigneten Zener- bzw. ESD-Diode zu sichern, wäre es hilfreich zu wissen, ob die zulässige Grenze knapp über 3.3V (z.B. 3.6V) oder knapp über 5V (z.B. 5.5V) liegt.
2) Ausgangsbeschaltung der Sensoren
Aufgrund der Informationen über die Diodenschaltung der PC-Schnittstelle usw. gehen ich davon aus, daß der Bus ähnlich wie I2C konzipiert und jeder Teilnehmer idealerweise einen Open-Drain-Ausgang und einen Pullup-Widerstand (gegen 3.3V) haben sollte. Leider ist diesbezüglich nichts spezifiziert. Das führt dazu, daß im Netz diverse Implementierungen kursieren, die während der aktiven Phase den High-Pegel aktiv mit einer Push-/Pull-Stufe treiben (und mangels Spezifikation der Spannung könnte der High-Pegel durchaus auch 5V sein). Das könnte selbst Sensoren mit Open-Drain-Ausgang beschädigen, falls sie nicht mit einem seriellen Widerstand bestückt sind, der den Strom auf einen zulässigen Wert begrenzt.
-> Wäre es nicht sinnvoll, die Maximalspannung am Sensorbus (z.B. 3.3V), die Art des Ausgangs (Open Drain) und den ungefähren Wert des Pullup-Widerstandes vorzugeben, um Wildwuchs bei den Sensoren und die eventuelle Beschädigung von Sensoren zu vermeiden? Gibt es zumindest Richtwerte für eine konforme Implementierung?
Davon abgesehen gibt es auch Unklarheiten bezüglich des Protokolls
3) Konfiguration von Sensoren.
Die Dokumentation sagt dazu "Ist der Sensor nicht an die Sensorkette angeschlossen, sind auch andere Befehle, z.B. zur Parametrierung, möglich. Diese dürfen sich allerdings nicht mit den Befehlen des MSB überschneiden.". Nun weiß der Sensor ja nicht, daß er sich nicht in einer Sensorkette befindet. Wenn man also keine Schalter o.ä. für einen Programmiermodus benutzen möchte, muß man aus den Signalen am Sensorbus darauf schließen, ob man mit einem Programmieradapter oder dem Bus verbunden ist.
Es wäre insofern hilfreich gewesen, eine expliziten Befehl zu definieren, der auf dem Sensorbus niemals geschickt werden kann und der explizit nur von einem Programmieradapter bei nur einem verbundenen Sensor geschickt werden darf.
In der jetzigen Situation kann man sich jeden Befehl zwischen 0x10 und 0x59, zwischen 0x5b und 0x7f oder zwischen 0x90 und 0xff aussuchen, was wiederum die Gefahr birgt, daß der gewählte Befehl in einer neuen Version der Spezifikation als reserviert definiert wird.
4) Änderung der Werteklasse zur Laufzeit
Wenn ein Sensor mehrere Werte liefern kann, wäre es u.U. nützlich sie zeitlich zu multiplexen, also zum Beispiel abwechselnd eine Temperatur und eine Spannung auf der gleichen Adresse zu schicken. Technisch ist das natürlich möglich, weil die Werteklasse ja Teil der Antwort des Sensors ist. Aber ist das auch eine offiziell unterstützte Funktionalität? Also ist sichergestellt, daß der Empfänger Wert und Werteklasse konsistent umschaltet (und nicht beispielsweise eine Spannung beim Umschalten fälschlich als Temperatur anzeigt)?