Ja so ist es. Warum die getrennt sind, weiß ich auch nicht. Ich verwende den Chip auch mit 3,3V auf beiden Seiten. Der Grund ist, daß der I2C Bus eine Platine verläßt. Auf dieser Platine wird er von einem FPGA erzeugt, dem teuersten, empfindlichsten und , weil BGA, am schwierigsten zu reparierenden Baustein. Die andere Platine hat keinen Buffer, sie ist insgesamt aber billiger als das FPGA.
Ich weiß ja nicht, wie weit du in der Realisierung des Projekts schon fortgeschritten bist. Ich mache hier mal einen Vorschlag, der möglicherweise zu spät kommt. Vorneweg, ich bin seit langem I2C Bus Fan.
Analoge Signale durch eine "feindliche" stöhrende Umbebung zu schicken, um sie zentral auszuwerten, ist nicht mehr zeitgemäß. Kleine µC sind so klein (SOT23-6) und so billig (1-2€) daß es geschickter ist, vor Ort zu messen und die Daten digital an den Zentralprozessor zu schicken. Trotzdem sollte der Aufwand für die Verdrahtung nicht wesentlich größer sein, als ein abgeschirmtes Sensorkabel. Mein Vorschlag wäre, einen I2C-ähnlichen Bus zu benutzen. Ähnlich, weil sein High-Pegel 12V ist, vom Protokol ist er voll I2C. Die Verbindung zu einem Sensor ist also ein 4-Adriges Kabel mit GND, 12V, SCL und SDA.
Kleiner Einschub: in einem Batteriegespeisten System (einem Roboter im weitesten Sinn) gibt es möglicherweise keine festen 12V. Deswegen setze mal in Gedanken wenn ich 12V schreibe 8V bis 15V ein, je nach Ladezustand des Akkus.
Die 12V benötigt man als Referenz für den I2C Bus, sie können aber auch den Sensor oder sogar kleine Aktuatoren versorgen. Ein 5V Sensor sieht dann so aus: Für die Daten ein Buffer 82B96 und den Sensor mit einem 78L05, wenn er wenig Strom verbraucht, oder einem Schaltregler, wenn er mehr braucht, aus den 12V versorgen. Über einen einfachen Pfostenstecker kann man 0,5 bis 1A schicken, das sind 5 bis 10W, das reicht schon für einen Aktuator.
Auf dem Kabel sollten dann jeweils ein Signal und eine Versorgung verdrillt werden. Am Sensor sollte man dann 12V und GND mit 100nF abblocken.
Jetzt zur Zentrale. Eigentlich können alle Sensoren an einen Bus angeschlossen werden. Hat man aber Sensoren, die mehrfach vorkommen, aber eine feste Adresse haben (dein Problem), muß man die Busse so aufteilen, daß auf jedem Bus keine Adresse doppelt vorkommt. Für jeden Bus gibt es einen eigenen 82B96 Buffer. Wenn der zentrale µC nicht genügend I2C Interfaces hat, muß man den Bus multiplexen. Da die Signale bidirektional sind, funktionieren nur Analogschalter. Ein 2 fach 1 zu 4 Multiplexer (4052 als CD oder 74HC) passt da gut. Man benötigt zusätzlich zu den 2 I2C Datenleitungen 2 Ausgänge zur Steuerung des Multiplexers. Braucht man mehr unabhängige Busse, dann zwei 4051 1 zu 8 Multiplexer und 3 Ausgänge. So kann man schon relativ einfach ein komplexes Sensor/Aktuator Netzwerk aufbauen.
Ich hoffe, das Konzept ist einigermaßen verständlich rübergekommen. Wenn du Fragen hast, nur zu. Solange ich Zeit habe, antworte ich gern, wenn ernsthaft diskutiert wird.
MfG Klebwax
Lesezeichen