I²C-Bus: Kann ich zwei Sensoren mit einem "Y-Kabel" anschließen?

Servus Leute!

Fröhliche Weihnachten erstmal.... :D Ich hoffe, Euer Christkind war brav zu Euch.

Ich habe diese Frage zwar schon an anderer Stelle gestellt, aber scheinbar in der falschen Rubrik.
Das Thema ist hier wohl besser aufgehoben, denke ich.

Ich habe einen F4 Flight-Controller mit inem Anschluss für einen I2C Bus und zwei externe Sensoren (Barometer und GPS).

Kann ich diesen Bus mit einer "Y-Verkabelung" anschliessen? Sollte ja, gehen, oder?

Ich hab das mal grob skiziert (nur die I2C Anschlüsse, der Rest ist ja klar):
i2c.jpg
 
Servus Rudy!

Danke für die schnelle Antwort, das habe ich verstanden.

Mir ging es aber hier in erster Linie um die physikalische Verdrahtung.

Ich habe gelesen, dass manche das so machen, wie ich skizziert habe. An anderer Stelle lese ich was von Pullups?
Jetzt bin ich verwirrt, ob ich das einfach so anlöten kann, oder noch etwas "dazwischen" brauche...
 
Die simple Antwort: ja geht.
Die komplizierte hat (wie du schon bemerkt hast) was mit den pull-ups, sowie Kapazitäten auf der Leitung sowie Sauberkeit der Flanken zu tun, ist aber an der Stelle egal: wenn's dann nicht funktioniert, kann man sich ja immernoch damit befassen.
 
Halt, Stop, Moment!

Ich habe noch mal ein wenig nachgelesen:
Anscheinend ist es so, dass ohne Pullups wohl der Bus gar nicht funktioniert, bzw. die beiden Slaves (Baro und GPS) keinen Mucks machen.

Daher noch mal die Frage:
wenn ich 1K Ohm als Widerstände nehme, einen an die SDA Leitung und einen an die SCL Leitung - schalte ich dann einfach beide gegen eine freie 5V-Leitung (also "Plus")?
 

wno158

User
Daher noch mal die Frage:
wenn ich 1K Ohm als Widerstände nehme, einen an die SDA Leitung und einen an die SCL Leitung - schalte ich dann einfach beide gegen eine freie 5V-Leitung (also "Plus")?
Ja - vorausgesetzt dass keiner der Beteiligten ein 3.3V-Gerät ist.

Zwei Dinge würde ich noch bedenken:
  • 1k scheint mir recht wenig (es sei denn das ist Fast I2C mit 400kHz); 4k7 oder 10k haben bei mir bisher gut funktioniert. Der Controller muss den fließenden Strom ja auch bereitstellen können.
  • Es könnte sein, dass einer der Busteilnehmer (Flightcontroller als Master) schon Pullups eingebaut hat - wenn die eingeschaltet sind brauchst Du extern vielleicht keine mehr. Ein Arduino (z.B.) arbeitet intern mit 20k oder größer - das reicht für ein paar cm Kabel in der Regel schon aus.

Faustregel: Je schneller der Bus und je länger die Kabel --> umso niedriger der Pullup. Wegen der Strombelastung von oben (10k) herantasten.

Gruß Walter
 
Danke Walter!

Beide Sensoren würde ich mit 3.3V betreiben wollen, da 5V schon ausserhalb der Spezifikationen der Sensoren liegt.
Das Barometer ist ein BME280, das GPS ein BN 880.
Beide funktionieren mit 3.3V

Da der FC nur 5V ausgibt, würde ich vorher mit Widerstand diese Spannung auf 3.3V oder 3V senken wollen.

Danach kämen dann jeweils die Pullups vom SCL und SDA an diese 3.3V Plus-Leitung, richtig?
Nehme ich dann 10K Ohm?
 

wno158

User
Hmmm - jein.
Das könntest Du erstmal so versuchen, aber die Sensoren werden m.E. dann weiter außerhalb der Spezifikation betrieben.

Was mich zögern lässt:
Die Sensoren sind 3.3V, der Controller scheint ein 5V-Device zu sein. Mit den Pull-Ups versuchst Du, den High-Pegel auf SDA und SCL auf 3.3V zu stellen. Wenn der FC da aber 5V ausgibt, passt das nicht zusammen.

Die korrekte Lösung wäre dann wohl der Einsatz von LevelShifter/Pegelwandler; die gibt es fertig als kleine Platinchen.
 
Deswegen würde ich ja vorher in die Plusleitung des 5V Anschlusses 100 Ohm einlöten, damit die Spannung auf ca. 3V läuft.

Würde es dann hinhauen?

PS: schon mal herzlichen Dank für's Mithelfen und Mitdenken
 
Hm, das lässt mich jetzt ein wenig ratlos zurück.

Wat mach ich denn nu?

(sorry, hinsichtlich I²C bin ich leider noch Laie)
 

wno158

User
Nicht verzagen!

Nicht verzagen!

Die LevelShifter sind einfach zu verschalten:
- beide Spannungen (HV = 5V, LV = 3.3V z.B. aus dem Spannungsteiler)
- die Nutzleitungen (im Falle I2C eben SDA, SCL).

Die Y-Weiche zu den beiden Sensoren kannst Du auf der LowVolt-Seite durchführen.
Und schon ist fertig!

Na gut, ich muss zugeben: Das wird wohl dieses Jahr nix mehr, weil kein normaler Mensch solche Teile einfach in der Grabbelkiste liegen hat.

In diesem Sinne: Frohes Rest-Fest und guten Rutsch!
 
Zuletzt bearbeitet:
Danke Dir noch mal ausdrücklich für's Dranbleiben.

Ich habe jetzt noch mal in die Datenblätter geschaut:
ich kann beide Sensoren mit 5V betreiben, daher reicht es doch, wenn ich bei ca. 20cm Gesamtkabellänge, jeweils SDA und SCL mit einem 5K1 Widerstand gegen die Plusleitung von 5V löte.

Ist das richtig?
 
Danke Walter!

Dir noch mal herzlichen Dank für Deine Geduld.

Ich probiere das mal aus, ich habe hier ein "Breadboard" liegen, damit mach ich erstmal einen Versuchsaufbau!

Dankeschön
sagt der olle Marc
 
Hast du es denn überhaupt probiert ohne die pullups?! ich kenne keinen FC der die nicht mit drauf hätte. Sogar die meisten Sensor Breakouts haben (dummerweise) schon welche drauf. Schließ halt erstmal an und schau obs ohne geht...
 
Hast du es denn überhaupt probiert ohne die pullups?! ich kenne keinen FC der die nicht mit drauf hätte. Sogar die meisten Sensor Breakouts haben (dummerweise) schon welche drauf. Schließ halt erstmal an und schau obs ohne geht...

Servus Simon!

Ich kann beides mal mit dem Breadboard testen, das ist ja das schöne an so einem Ding.
Ohne Pullups habe ich ja im Zweifelsfall einfach keine Kommunikation, wenn's wahr ist.

Momentan scheitere ich aber mit den Lötpads am Controller, manchmal hält der Lötzinn drauf, manchmal nicht. :mad:
Aber das ist ja ein anderes Thema....
 

wno158

User
Ansicht hell / dunkel umschalten
Oben Unten