Wie lang darf der I2C-Bus werden?

Uwe H.

Neues Mitglied
27. Juli 2011
264
0
0
Hinter die Grenze :-)
Sprachen
  1. BascomAVR
  2. ANSI C
  3. Assembler
Grüßt euch :)

Ich sitz grad mit ner Luftröhrenentzündung zu Hause und da ich nix anständiges zu lesen hab, verzichte ich aufs Liegen und verkabel lieber einen Schaltschrank :) Wegen einer Konzeptänderung stellt sich hier eine kleine Frage für mich:

Im Schrank kommunizieren fünf Controller per I2C miteinander. Die Trägerplatine ist ca. 300mm lang, also ungefähr 350mm Leitungslänge zwischen den fünf uCs. Als Leitung auf der Platine dient Kupferdraht 0,384 mm2, alles gelötet, ohne Steckberbinder. Jetzt kommen noch vier PCA9555N dazu, die ursprünglich neben den uCs liegen sollten, also ohne nennenswerte Leitungsverlängerung. Nun hat es sich so ergeben, das die PCAs im Schrank eine Etage tiefer rutschen, um die Verkablung zu reduzieren. Damit verlängert sich die Busleitung nun auf schätzungsweise 800-1000mm. Wie siehts da mit der Stabilität aus...?

Vom Gefühl her würde ich sagen, dass das noch geht. Ich habe schonmal I2C über drei Meter Flachbandkabel am laufen gehabt und das ohne jegliche Störung. Nur will ich hier auf Nummer sicher gehen, da das System für einen Kunden ist und Probleme hier nicht auftauchen dürfen. Ich hab zwei P82B715 hier und kann die Strecke zu den PCAs darüber laufen lassen. Nur weiss ich nicht, ob das wirklich Sinn macht....

Grüße, Uwe
 
Hi Uwe,

also von Gefühl her würde ich auch sagen das es klappt. I2C ist allerdings nicht unbedingt tolerant gegenüber Einstreuungen. Wenn man also die beiden Leitungen gegen Einstreuungen schützt dann würde ich da kein Problem sehen. Wenn da allerdings von Dimmern oder anderen Teilen hochfrequente Einstreuungen reinkommen können dann wär ich evt vorsichtiger. Bei kurzen Längen könnte man den Bus über ne Twisted-Pair verlegen. Jeweils Signal und GND zu einem Paar zusammen und dann nen Gesamtschirm. Müßte man sehen wie das dann mit dem maximalen Bustakt aussieht, ob man dann noch auf 400kHz kommt.

Gruß
Dino
 
Grüß Dich Dino :)

Dimmermodule sind drin, genauer gesagt Phasenabschnitts-Steuermodule. Die I2C-Leitung liegt in der Nähe der Module, hat aber gut 5-8 cm Abstand. Von den Wechselstromleitungen ist der Abstand gut 20cm. Ab wann wirken sich Einstreuungen denn aus, sprich welche Abstände?

Wo wir grad dabei sind, ich hab noch ne zweite Frage: Ich wollte hier BS170er Fets einbauen. Die Dinger nutze ich zum ersten Mal. Irgendwo hab ich gelesen, dass es sich empfieht, das Gate mit 10kOhm nach Masse zu verlinken (Pull-down), weil durch den niedrigen Tresh-hold von 0,8V es sein kann, dass der Fet nicht abschaltet.
 
Hallo Uwe!

Mit deinen 80 - 100cm Leitung für den I2C-Bus.....
da würde ich doch besser die P82B715 zwischenschalten, wenn du die jetzt sogar schon da hast.

Es kommt natürlich auf die BUS-Geschwindigkeit an, ob es zu sporadischen Störungen kommt oder nicht.
Allerdings sind sporadische Störungen in Kundenanlagen genau das, was man garantiert nicht möchte. :cool:

Also ich würde an deiner Stelle daher auf Nummer Sicher gehen und die 715er mit einbauen!

Grüße,
Cassio
 
Hi Uwe,

Dimmermodule sind drin, genauer gesagt Phasenabschnitts-Steuermodule. Die I2C-Leitung liegt in der Nähe der Module, hat aber gut 5-8 cm Abstand. Von den Wechselstromleitungen ist der Abstand gut 20cm. Ab wann wirken sich Einstreuungen denn aus, sprich welche Abstände?
bei den kleinen Abständen würde ich auch lieber die P82B715 mit reinbauen (wie Cassio schon sagt). Man könnte auf die Art evtl sogar über Stecker die Module trennbar machen. Wär für den Servicefall recht angenehm.

Wo wir grad dabei sind, ich hab noch ne zweite Frage: Ich wollte hier BS170er Fets einbauen. Die Dinger nutze ich zum ersten Mal. Irgendwo hab ich gelesen, dass es sich empfieht, das Gate mit 10kOhm nach Masse zu verlinken (Pull-down), weil durch den niedrigen Tresh-hold von 0,8V es sein kann, dass der Fet nicht abschaltet.
Würde ich auch machen. So 10k sind OK. Ich hab das ähnlich den normalen Transistoren gemacht, allerdings mit anderen Werten. Nen 470 Ohm als Vorwiderstand um den Ladestrom des Gates zu begrenzen (entlastet den ATmega-Pin) und dann vom Gate nen 10k oder sowas nach GND um Störungen abzuhalten oder im Programmierfall (Ausgang des Megas hochohmig) sicher zu sperren.

Gruß
Dino
 
Alles klar, dann mach ich das so. Danke Cassio :)

Nochmal zurück auf die BS170er...: Ich hab grad mal testweise zwei angeklemmt. Simple Schaltung mit LED als Last. Was soll ich sagen... Die LED leuchtet die ganze Zeit, egal ob am Gate Strom ist oder nicht. Den zweiten BSEr *lol* hab ich dann mit Pulldown nach Masse gemacht. Hat genau 5 Sekunden funktioniert. Jetzt leuchtet auch hier die LED im Dauerbetrieb. Der einzige Unterschied ist, dass sie mit Gatestrom heller leuchtet. Hab ich was verkehrt gemacht? Hab mich und auch die Schreibtischunterlage geerdet vor Berührung.


Zusatz:

Hab das Ganze mit einem Lüfter wiederholt. Hier schaltet er ab. Lag das an der LED?
 
Hallo Uwe!

Der BS170 ist schei....en empfindlich!
Wenn er erst mal eingebaut ist, dann funktioniert er super....
aber bei Testaufbauten mit fliegenden Drähten oder in Breadboards ist das etwas anderes.

Wenn du mit dem 10K zu GND klar kommst würde ich den auch empfehlen.
Ich habe auch schon 100k bzw. 120k genommen, was auch gut funktioniert hat (wenn man keine schnellen Reaktionszeiten benötigt).

Dei Sache mit der LED finde ich aber seltsam. :hmmmm:
Ich steuer damit auch LED`s oder sogar noch weniger Last (< 1mA) und den Effekt habe ich dabei noch nicht gehabt.

Grüße,
Cassio
 
Hi Uwe,

bei mir kamen die BS170 leider bei Reichelt in ner normalen Plastiktüte (50Stk) als Schüttware. Die BS250 waren gegurtet und in ner rosanen ESD-Tüte. Von den BS170 hab ich bis jetzt 3Stück als Schrott gehabt. Ich kann aber leider nicht sagen ob die schon vorher hin waren oder das Leben erst bei mir ausgehaucht haben. Zwei sind auf jeden Fall draufgegangen wie ich sie wieder ausgelötet hab um sie auf der Platine an eine andere Stelle zu setzen. Also von der ESD-Empfindlichkeit sind das totale Mimosen. Sowas hab ich eigentlich mit MOSFETs sonst noch nie gehabt. Mal sehen ob ich mir da mal andere unempfindlichere raussuche. Meine kleinen Leistungsmosfets (IRLU2905,3410,...) haben da noch nie rumgezickt. Die sind auch in einer ähnlichen Gehäusegröße ;) aber ne Ecke teurer.

Gruß
Dino
 
Nee, bei mir waren die Dinger in der rosa Tüte und gegurtet mit Aluband. Wie sieht es denn aus, wenn die Dinger hopps gehen? Bei mir ist im Ruhezustand Kriechstrom zu verzeichnen, deswegen ging die LED nicht aus. 1,2mA fliessen bei abgeschaltetem Gate. Jetzt hab ich den DRITTEN BSEler genommen, der funzt anscheinend. Laut Multimeter kein Kriechstrom bis in den uA-Bereich. Sind die Sch...ßteile echt so empfindlich...

Vielleicht sollte ich lieber BC547 reinpacken statt die Fets....


Was noch interessant ist: Ich hab über 8mA Gatestrom. Die Last liegt bei 10mA. Das ist ja fast ne Direktverbindung, ist das normal?
 
Hi Uwe,

Bei mir ist im Ruhezustand Kriechstrom zu verzeichnen, deswegen ging die LED nicht aus. 1,2mA fliessen bei abgeschaltetem Gate. Jetzt hab ich den DRITTEN BSEler genommen, der funzt anscheinend. Laut Multimeter kein Kriechstrom bis in den uA-Bereich. Sind die Sch...ßteile echt so empfindlich...
wenn du das Gate offen hast dann wirkt es wie ne Antenne und fängt sich jeden Mist ein. Es kann sein das er dann langsam anfängt durchzusteuern. Oder wenn du mit dem Finger in die Nähe des Gates kommst dann steuert er durch und speichert die Ladung auf dem Gate bis zum Sanktnimmerleinstag (bleib also durchgesteuert). Das Gate ist ja an sich nen Kondensator mit richtig guter Isolierung. Nur leider nicht so toll spannungsfest :rolleyes:

Laut Datenblatt : Absolute Maximum Ratings ... Gate-Source-Voltage : +/-20V ... => danach ist er hin.
Mehr hält die Isolierschicht vom Gate nicht aus.

Gruß
Dino
 
Ok, der Sicherheit halber werd ich BC547er einbauen. Ich muss etwa 70 Stück einlöten, wenn da jeder zweite hopps geht, krieg ich noch nen dickeren Hals, als ich eh schon hab wegen der blöden Entzündung :)

Kann ich die eigentlich mit 10kOhm an der Basis treiben, wenn der LastStrom bei 10-12 mA liegt? 10k ist etwas hoch, ich weiss. Es geht mir darum, die Ports höchstmöglich zu entlasten. Bei 10k fliessen ca. 0,5 mA, Spannungsabfall am Transi ist 0,05 Volt
 
Last- und Steuerspannung sind 5V. Gate ist mit 10kOhm nach Masse entladen. Trotzdem hält das Gate an
dann ist er hin. Gate entladen = Kanal gesperrt. Wenn nicht dann kannst du ihn beerdigen :(
Nennt man dann glaube ich Feinschluß oder hochohmiger Schluß. Im Gegensatz zum Kurzschluß.

Tja ... Mimosen.

Gruß
Dino
 
Dachte ich mir... und ich hab mir extra ne neue ESD-Matte für meinen Schreibtisch gegönnt :-(

Dino, les mal meine letzte Frage über deiner letzten Antwort. Du bist doch Experte für solche Sachen :)
 
Dachte ich mir... und ich hab mir extra ne neue ESD-Matte für meinen Schreibtisch gegönnt :-(
ich muß mir da auch noch was überlegen ... ärger dich nicht drüber ...

Dino, les mal meine letzte Frage über deiner letzten Antwort. Du bist doch Experte für solche Sachen :)
sollte meiner Meinung nach passen. Ich hab mal mit 4,7k angesteuert. Das läuft recht gut. Problem ist dann aber die Abschaltzeit :p
Bei 1mA ist die Basis übersättigt und er braucht schon ein paar Microsekunden um wieder zu sperren (die Basis zu entladen). Mit den 10k sollte es gut laufen. Theoretisch könntest du sogar noch bis 22k hoch.

Was hast du denn genau für BC547er? A, B oder C-Typen ? Ich hab hier wegen der Verstärkung nur noch C-Typen weil ich die sowieso eher als Schalter verwende.

Rechne mal beim C-Typ mit mindestens 420facher Verstärkung. 12mA / 420 = 29µA Basisstrom :p

Gruß
Dino
 
Ich benutze genauso nur C-Typen, weil ich in meinen Schaltungen die Dinger auch nur als Schalter einsetze.

Falls Du ne Lösung zu den BSlern finden solltest, dann lass mich es wissen :) Hab die Dinger grad tief unten im Schrank vergraben. Naja, waren ja nicht teuer. Ich hab auch andere Fets hier, aber im Hinblick auf die einzubauende Stückzahl und den letztendlichen Einsatzzweck (Solid-State schalten) ist es mir schade, die hochwertigen Fets zu verbraten.
 
Jungs, kann sich mal einer den Abschnitt zum Thema Pull-ups im Datenblatt des P82B715 ansehen? Wenn ich das richtig verstehe, kann man entweder einen Pullup an SDA verwenden, sofern das Bussystem in seiner Länge nicht verändert wird oder jede Sektion einzeln berechnen... Hat einer von euch Erfahrung damit und kann mir was dazu sagen? Reicht hier der Standard-10k oder muss ich die gesamte Leitung berechnen?
 
Hallo Uwe!

Ich zieh mir das Datenblatt gleich noch mal.... moment!

Bei deiner Bus-Länge denke ich aber nicht, dass du da extra etwas berechnen musst, allerdings wäre 10k für den "Hauptstrang" wohl etwas viel.
Ich schaue aber noch mal.....

Bis gleich,
Cassio
 
Hallo Uwe!

Jetzt weiß ich auch wieder, warum mir die 10k so viel vorkamen.....
Die haben im Datenblatt den L-Bus künstlich mit 3nF raufgesetzt. Darum benötigen die auch nur 330Ohm als PullUp.
Ist natürlich eine gute Lösung, wenn man den Bus nicht bis zu jeder Kleinigkeit ausrechnen möchte.
Die "Terminierst" den Bus mit C und R absichtlich höher und so fallen die kleinen Differenzen bei den tatsächlichen Leitungslängen nicht ins Gewicht.

Wenn du also den L-Bus mit 1nF absichtlich herauf setzt, dann nimmst du 1K PullUp Widerstände und solltest keine Probleme haben.
Den S-Bus, bei jedem Teilnehmer kannst du ja mitteln..... je nach Gegebenheiten in deiner Anlage dann 20K bis 33K.

Ach so....
Im Datenblatt ist zwar immer nur von einem PullUp an SDA die Rede, aber das Selbe gilt auch für den SCL!


Wenn du noch etwas warten kannst dann frage ich StevieL morgen mal, was er dazu meint.
Der hat mit den P82B715 und P82B96 schon mal gearbeitet.

Grüße in die Nacht....
Cassio
 
Hallo Cassio, sicher kann ich noch bis morgen warten. Ich habe gestern noch die I2C-Verbindungen zwischen den uCs ausgelötet und beschlossen, dass jeder uC einen P82B715 erhält. Die Trägerplatinen der uCs liegen auch nicht unbedingt weit weg von den Phasenabschnittsmodulen und ein paar Relays befinden sich auch in der Nähe. Deshalb lieber jedes Risiko ausschalten. Später, wenn alles eingebaut ist, wird es schwer, noch was zu ändern.

Also, jetzt sieht die Sache so aus, dass von jedem uC eine sehr kurze Lötbrücke von 2-5cm an den P82B715 geht. Ich muss also auch hier Pullups setzen?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)