PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Fast Mode Plus Fm+ Spannungen



Hellmut
11.04.2011, 17:16
Hallo Freunde

Wie ich an anderer Stelle hier im Forum bereits bejhandelt habe, setze ich in meinem "schwimmenden Roboter" eine größere Anzahl Feuchte- und temperatursensoren von Sensirion ein, STS21 (Temperatur) SHTS21 (Feuchte plus Temperatur) die nur eine feste IP-Adresse besitzen. Ich habe mich daher entschlossen USB Hubs von nxp.com einzusetzen.

Nun habe ich in einem Webinar (http://www.eetimes.com/electrical-engineers/education-training/webinars/4213771/Fast-Mode-Plus-I2C-bus-Adding-value-to-your-designs) von NXP bei EEETimes zu I2C Fast mode Plus 2 Bauteile kennengelernt, den Buffer P82B96 und den Hub PCA9646 die nach dem Webinar Fm+ Funtionalität haben und bei welchen man den I2C-Bus auch mit Spannungen bis 15V betreiben kann. Hier noch der Link zu den Folien (http://seminar2.techonline.com/~additionalresources/nxp_mar3011/nxp_mar3011.pdf) des Webinars als PDF, Folie 21 zeigt was ich möchte!

Da ich im Rumpf eine Menge elektromagnetische Störungsquellen habe möchte ich die Sterntopologie wie folgt implementieren:

Master uC: 5V mit I2C 5V Pullups
5x den Hub PCA9646D
Zwischen dem Hub und dem Buffer 12V I2C Bus Fm+
Buffer: P82B96
I2C Bus zwischen Buffer und Sensor 3V normaler I2C Bus
Sensor z. B. SHTS21.

Jetzt schaue ich in die Datenblätter und sehe den I2C bus unter elektrischen Daten nur bis max. 7V, also 5V charakterisiert.

Kennt jemand das Thema I2C Fm+ und die Fähigkeit bis 15V betrieben zu werden?

Auch stört mich am Buffer P82B96 das es sich um ein Dual Buffer handelt, ich brauch e doch nur einen einfachen, oder?

Schon Mal Danke

Hellmut

Klebwax
11.04.2011, 19:57
Nun habe ich in einem Webinar (http://www.eetimes.com/electrical-engineers/education-training/webinars/4213771/Fast-Mode-Plus-I2C-bus-Adding-value-to-your-designs) von NXP bei EEETimes zu I2C Fast mode Plus 2 Bauteile kennengelernt, den Buffer P82B96 und den Hub PCA9646 die nach dem Webinar Fm+ Funtionalität haben und bei welchen man den I2C-Bus auch mit Spannungen bis 15V betreiben kann.
.
.
.
Kennt jemand das Thema I2C Fm+ und die Fähigkeit bis 15V betrieben zu werden?

Auch stört mich am Buffer P82B96 das es sich um ein Dual Buffer handelt, ich brauch e doch nur einen einfachen, oder?


Hallo,

ich benutze den P82B96. Der hat nichts mit Fast mode zu tun, den gibt's schon lange. So einfach ist das mit den Spannungen auf dem I2C Bus heute nicht mehr. Die Spannung auf den Signalleitungen darf nicht höher sein, als es die angeschlossenen Chips vertragen. Wenn da ein 1,8V Baustein dabei ist, dann nicht mehr als 1,8V. Für ein an dem gleichen Bussegment angeschlossenen 5V Chip wird dann der High-Pegel nicht erreicht und die Übertragung geht nicht.

Als Lösung bieten sich Buffer an, die auf beiden Seiten unterschiedliche Spannungen vertragen. Ihr innerer Aufbau ist leider nicht trivial, da es sich um Open-Collector Signale handelt. Einer von diesen Buffern ist der P82B96. Auf der einen Seite verträgt er sogar bis zu 15V. Das bedeuted, daß man ein Bussegment mit 15V mit einem Segment mit 5V oder 3,3V koppeln kann.

Nun gibt es keine I2C Bausteine mit 12 oder 15V. Man kann aber mit einem zweiten Buffer wieder von 12V auf 5V herunter gehen. Wann ist soetwas sinnvoll? Wenn man den Bus über ein längeres Kabel leiten will, oder wenn das Kabel zwar kurz, die Umgebung aber sehr gestöhrt ist. Es wird von Experimenten berichtet, bei denen Kabellängen von über 100m erreicht wurden. Dabei sollte man aber die eine Signalleitung mit GND und die andere mit VCC verdrillen. (Und da es zwei Signale sind, braucht man einen Dual Buffer).
Wie schnell das ganze dann geht, hängt natürlich von den Bausteinen und der Kabelkapazität ab. In den Standardspecs steht was von 400pF, mit Buffer kanns auch mehr werden.

MfG Klebwax

Hellmut
12.04.2011, 15:01
Hallo Klebwax

Erstmal danke für deine Antwort. Ich habe darauf das Datenblatt nochmals exakt durchgeschaut, wie auch die Folie in dem Webinar. Ich muss also offensichtlich die B82B96 Buffer auf beiden Seiten des "Verlängerungsbusses" haben. Was mir aber noch nicht klar ist, ist warum der Buffer den Eingangs- und den Ausgangsdatenpfad für den "lokalen I2C-Bus" getrennt auf unterschiedliche Pins gelegt hat! Wenn ich die Unterlagen richtig verstehen muss ich die beiden über unterschiedliche Pins geführten Datenpfade och wieder brücken und dann mit SDA, bzw. SCL des I2C-Bauteils, in meinem Fall den STS21 oder SHT21 auf der einen seite und dem Hub-IC auf der anderen Seite verbinden! Habe ich das richtig gesehen?

Aber wenn dem so ist, dann brauche ich auch nicht den PCA9546D, sondernder PCA9518A wäre hinrichend, richtig!

Klebwax
12.04.2011, 22:37
Ich muss also offensichtlich die B82B96 Buffer auf beiden Seiten des "Verlängerungsbusses" haben. Was mir aber noch nicht klar ist, ist warum der Buffer den Eingangs- und den Ausgangsdatenpfad für den "lokalen I2C-Bus" getrennt auf unterschiedliche Pins gelegt hat! Wenn ich die Unterlagen richtig verstehen muss ich die beiden über unterschiedliche Pins geführten Datenpfade och wieder brücken und dann mit SDA, bzw. SCL des I2C-Bauteils, in meinem Fall den STS21 oder SHT21 auf der einen seite und dem Hub-IC auf der anderen Seite verbinden! Habe ich das richtig gesehen?

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

Hellmut
12.04.2011, 23:29
Erstmal, nochmals tausend Dank! Wo fage ich an?

18537

18538

Keine Ahnung warum hier die Bilder so klein erscheinen? Man kann aber bei Flickr.com die orioginal Bilder mit hoher Auflösung sehen.

Das sind Bilder von den Platinchen die ich für die Sensoren in der Fassung der Deckbeleuchtungskörper meines Seglers gemacht habe. Damit man ein Gefühl für die Größe bekommen kann, im oberen Bild habe ich mit der Linse die Platine so vergößert das man die Pads für das 3x3mm Gehäuse mit 6 Pins des Sensors erkennen kann. Links von den Gehäuse kommt der 100nF Kondensator für den sensor rein, und wenn man die originalbilder ansieht, dann kann man rechts von der Position des Sensors die "Pads" als Verbreiterungen der Leitungen erkennen. es kommen nach den Applikationsdaten vom Sensorhersteller 5k Widerstände als Pull-ups zum Einsatz. Einmal im 0603-Gehäuse zwischen der oberen Leiterbahn und der 2., und einmal ein 1206 zwischen der oberen und er 3. Leiterbahn. Mit dem "großen" 1206 überbrücke ich die Leiterbahn 2! Die 4 großen kreisförmigen Pads, 4mm Durchmesser, nehmen die 0,5mm Durchmesser Messingdrähte auf, über die ich die Anschlüsse zu einem "Knotenpunkt" querab von der Fassung unter Deck führe. Geht der sensor kaputt, so kann ich die Platine austauschen, an die wartung ist also gedacht worden. Nach den hier erhaltenen Inputs wird am Knotenpunkt eine kleine Platine mit dem P82B96D Buffer-Baustein kommen, sowie Klemm-Schraubverbindungen, einerseits für den Anschluss der Sensor-Platine, 4 Leitungen, andererseits für das verdrillte 4-polige Kabel.

Zentral wird ein mega8 einen Hub verwalten, der in Sterntopologie, 20 I2C-Verlängerungsbusse bereitstellt. Dort kann ich dann per Jumper jeweils entscheiden zu welcher Spannung ich jeden der 20 I2C-Busse verbinde, also 3V, 5V und 12V. Ich habe jetzt einen Baustein von TI gefunden der preiswerter ist und 8:1 Switch-Fnktionalität bietet die über 3 Adressbits selektriert werden können. setze ich den ein so wird die zentrale Hub.Platine 24 Sekundär-I2C Busse bieten. Ich plane 16 indirekte Deckbeleuchtungskörper mit 1W HB LEDs gelb dafür einzusetzen. Hinter jeder dieser LEDs kommt ein Wärmesensor der aufpasst das die LED nicht zu warm wird und so das heller stellen begrenzt.

18539

Hier eine Skizze die so eine Decksbeleuchtung zeigt.

Als Spannungsquelle im Modell verwende ich 12 LiFePO4 Akkuzellen a 16Ah. da ich an dem Projekt noch länger tätig bin, habe ich für den Bau der 2 Akkuboxen und für die Bauphase 12 Fake-Akkuzellen identischer Abmasse wie das Original gebaut und durch das Füllen von Langlöchern mit Blei auch das Gewicht exakt erreichen können. Hier das Bild:

18540

Meine Spannungsquelle im Boot wird also Spannungen bereitstellen die zwischen 24V, Akkuzellen leer und 39,6V, Akkuzellen voll, schwanken wird. daher plane ich für die Versorgung der Sensoren und der I2C-Busse Linearwandler einzusetzen, z. B. 7805 und 7812, bei den 3V werde ich vermutlich einen programmierbaren nehmen. Ich hoffe meinKonzept ist klar und ich denke es ist genau das was du vorschlägst Klebwax, nur nehme ich einen I2C 8:1 switch.

Deinen Vorschlag mit den Analogmultiplexern kannich allerdings an anderer Stelle nutzen. Ich werde, basierend auf dem LT6802-1, eine BMS, Battery Monitoring System, implementieren. Hier bin ich faul gewesen und hab mir den internen Balancer von Akkumatik dafür gekauft. Nun werde ich solche analogen Multiplexer dafür verwenden die Balancer-Leitungen zu multiplexen. Ich werde die Balancer-Karte im Modell als BMS einsetzen und kann diese gleichzeitig auch als Balancerkarte verwenden. So brauche ich nur die Leitung im Ladegerät vom internen Prozessor zur internen Balancerkarte umschalten und diesen Bus mit weniger Leitungen als ein 12S1p Akkupack ins Modell führen. Trotzdem möchte ich die Wahl haben den internen BMS/Balancer oder den externen im Ladegerät zu verwenden und so werde ich die Balancer-Leitungen analog multiplexen, vermutlich auch den internen Prozessor-Anschluss des Balancers in der Akkumatik. So kann ich wahlweise mit meinem setup, oder mit einem standard setup die Akkuzellen laden.

Klebwax
14.04.2011, 22:15
Meine Spannungsquelle im Boot wird also Spannungen bereitstellen die zwischen 24V, Akkuzellen leer und 39,6V, Akkuzellen voll, schwanken wird. daher plane ich für die Versorgung der Sensoren und der I2C-Busse Linearwandler einzusetzen, z. B. 7805 und 7812, bei den 3V werde ich vermutlich einen programmierbaren nehmen. Ich hoffe meinKonzept ist klar und ich denke es ist genau das was du vorschlägst Klebwax, nur nehme ich einen I2C 8:1 switch.

Hallo,

das ist ja ein tolles Projekt, Hut ab!

Ich würd das mit den Linearreglern nochmal überdenken. Bei dem großen Unterschied zwischen Eingang und Ausgang und der großen Variation der Eingangsspannung würde ich Schaltregler nehmen. Man kann sowas selber bauen, oder, wie ich das mache, fertig von Recom nehmen. Erstens vertragen die deine knapp 40V (ein 7805 nicht) und müssen nicht die Differenz zwischen Eingangs- und Ausgangsspannung mal Ausgangsstrom als Leistung in Wärme umwandeln. Bei Akkubetrieb sollte man immer auf den Stromverbrauch achten.

Was sind das eigentlich für dicke LiFe Zellen?

MfG Klebwax

Hellmut
15.04.2011, 07:46
Hallo Klebwax

Hier der Link (http://www.stefansliposhop.de/liposhop/lifepo4/lifepo4-16000mah-10c-headway::815.html?refID=gb) zu einer Stelle it Info zu den LiFePO4-Zellen.

Wie schon gesagt, das projekt ist recht komplex, weshalb die Informationen etwas bruchstückhaft bleiben. Ich setze eine ganze Reihe Schrittmotoren ein, weshalb eine hohe Spannung an Board wünschenswert ist. Auch setze ich Elektrobremsen ein, die 24V angelegt bekommen müssen damit sie lösen und die keine 39,6V vertragen. Ich werde daher einen Schaltregler an Bord einsetzen, designed wird es mit der Software auf der Webseite von National Semiconductor. Diesen schaltregler werde ich so dimensionieren, dass er mir 10A bei 24VDC bereitstellt. Von diesen 24VDC hole ich mir per Linearregler die 12V, die 6V, die 5V, die 3,3V und die 3,0V. Da diese kleinen Spannungenaußer bei den 6V für herkömmliche Servos, keine leistungshungrige Verbraucher angeschlossen habe, ist die in Wärme gewandelte Energie nur gering. Linearregler haben aber doch die Eigenschaft stabile und störungsunanfällige Spannungsquellen zu sein.

Allerdings bin ich mir über die Schaltregler noch nicht klar, ob diese nicht eine Dauerlast haben müssen, damit sie funktionieren. Ich denke da an meine Arbeit beim Unbau eines PC-Schaltmetzteils. Dort habe ich ja die Halogen-Glübirne an die 5V anschliessen müssen damit das Schaltnetzteil funktioniert! Ich hoffe die Linearregler werden bei dem zu entwicklenden 24VDC Schaltnetzteil hinreichend sein.

Hier (http://igminisail.de/them-07cs.htm) übrigens der Link zu einen Baubericht zum Bau meines Seglers.