Hier entsteht gerade ein Aufbau mit Arduino-Nano und mehreren I2C-Steinen. Ich nutze China-Platinchen, die neben dem eigentlichen IC auch dessen Grundbeschaltung mitbringen, kosten wenig und passen komfortabel auf eine Lochrasterplatte. In Summe habe ich fünf I2C-Steine: 2x MCP4725, 2x INA219 und Display mit PCF8574. Auf jeder dieser Platinchen sind 4k7 als PullUp an SDA / SCL vorhanden, in Summe komme ich also auf knapp 1k. Frage: So lassen oder einige runter, um die Last am Bus zu reduzieren? Einen Bus verstehe ich als gerade Linie, welche an beiden Enden terminiert wird. Kann ich nicht, es wird eher ein Stern oder gar Baum. Ich nehme an, dass das bei I2C kein Problem sein wird - die Gesamtlänge wird innerhalb des selben Gehäuses kleiner 30 cm sein?
Manfred schrieb: > Frage: So lassen oder einige runter, um die Last am Bus zu reduzieren? Einige runter, minimal etwa 4,7 kΩ. > Einen Bus verstehe ich als gerade Linie, welche an beiden Enden > terminiert wird. So hoch sind die Frequenzen nicht, dass man das hier als elektrisch lange Leitung betrachten müsste.
:
Bearbeitet durch Moderator
Schau mal da rein: http://www.ti.com/lit/an/slva689/slva689.pdf Ist eine AppNote von TI zur berechnung der WIderstände am I2C. Da gibt es auch ein schönes diagramm mit dem minimalen Widerstandswert in Abhängigkeit der Versorgungsspannung.
@ Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite >> Frage: So lassen oder einige runter, um die Last am Bus zu reduzieren? >Einige runter, minimal etwa 4,7 kΩ. I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V.
Falk B. schrieb: >> Einige runter, minimal etwa 4,7 kΩ. > > I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V. Würde ich trotzdem nicht völlig ausreizen.
@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite >> I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V. >Würde ich trotzdem nicht völlig ausreizen. OK, PI/2 kOhm ;-)
Falk B. schrieb: > PI/2 kOhm ;-) Wer soll den denn anfertigen? :-) Naja, irgendwelche der vielen Pullups muss er ohnehin runterlöten, und eigentlich genügt es, sie auf einem der Boards drauf zu lassen.
Jörg W. schrieb: > Würde ich trotzdem nicht völlig ausreizen. Ja, aber zu hoch ist auch ein Problem. Pauschal kann man das ja eh nicht wirklich sagen. Klar, man kann einen Wert in den Raum werfen und meist passt es auch mit 4.7 kΩ. Muss es aber nicht immer. Ich würde zunächst auch keinen Widerstand runter werfen sondern mir mit dem Oszi den Signalverlauf anschaun. Sinds vernünftige Rechtecke würde ich auch keinen Widerstand runter werfen.
Aber Vorsicht, zu groß dürfen die Widerstände nicht werden, das kann bei 400kHz probleme machen, wenn das Signal nicht schnell genug wieder den High Pegel erreicht. 4k7 sollten aber passen.
Layoutprofi schrieb: > 4k7 sollten aber passen. Hat der TE ja auch auf allen Platinen, er fragt sich nun nur, ob er auf der ein und anderen Platine die Pullups entfernen soll.
M. K. schrieb: > Layoutprofi schrieb: >> 4k7 sollten aber passen. > > Hat der TE ja auch auf allen Platinen, er fragt sich nun nur, ob er auf > der ein und anderen Platine die Pullups entfernen soll. Ja, das war nur für die obere Grenze des Widerstandwertes, die untere steht in dem oben verlinkten PDF.
@ M. Köhler (sylaina) >Hat der TE ja auch auf allen Platinen, er fragt sich nun nur, ob er auf >der ein und anderen Platine die Pullups entfernen soll. Die räumliche Anordnung der Pull-Ups ist bei I2C vollkommen egal. Ich würde sie an den Master machen und an allen Slaves entfernen. Dann kann man beliebig Slaves anstecken.
Falk B. schrieb: > Ich würde sie an den Master machen und an allen Slaves entfernen. Ich auch. Eigentlich ist es völlig widersinnig, dass diese Slave-Boards überhaupt mit Pullups ausgeliefert werden. Aber da hat wohl wer mal gehört, dass an I²C Pullups Pflicht sind, und da niemand nun weiß, ob außer ihn noch jemand auf die kluge Idee gekommen sein könnte, an diesem Bus hier welche vorzusehen, macht deshalb jeder welche drauf …
Jörg W. schrieb: > Einige runter, minimal etwa 4,7 kΩ. Wenn ich andere Threads interpretiere, sollten 10k nicht unterschritten werden. Layoutprofi schrieb: > Schau mal da rein: > Ist eine AppNote von TI zur berechnung der WIderstände am I2C. Danke, abgespeichert, schaue ich mir die Tage an, bevor ich weiter mache. Falk B. schrieb: > I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V. Danke, diese 3mA nehme ich mal als Hausnummer, die sich hier leicht umsetzen lässt. Grob über den Daumen kann ich drei 4k7 drauf lassen. Jörg W. schrieb: > Eigentlich ist es völlig widersinnig, dass diese Slave-Boards überhaupt > mit Pullups ausgeliefert werden. Ja und Nein: Arduino nutzt die Analog-Pims A4 / A5 für I2C, welche auf den Boards natürlich keinerlei Beschaltung aufweisen. Wenn ich nun als Heimwerker eine I2C-Device anklemme, tut mir der Chinese den Gefallen, die PullUps mitzuliefern. Auf den MCP4725-Boards gibt es sogar eine Wischbrücke, mit der man diese abtrennen könnte. Was ich hier treibe, liegt vielleicht geringfügig über dem typischen "Maker" - egal, das wird zur Funktion kommen!
Mein Standardwert ist 3k3 direkt am master, funktioniert auch bei 400kHz. In seltenen Fällen (Stromsparen nötig) denk ich da überhaupt noch nach. Ansonsten ist es einfach egal.
> Es wurde schon alles gesagt
Danke für Eure Antworten, speziell mit den AP-Notes zum Thema!
Der MultiSpeedI2CScanner von Rob Tillaart sieht alle Komponenten, ich
kann das Display beschreiben und mit dem D/A-Wandler Werte ausgeben.
Alles weitere wird sich zeitlich ziehen, aber ich bin guter Dinge.
Natürlich gab es erstmal Fehlersuche: Ein Lötfehler und eine falsche
Adresse, aber das muss wohl so sein :-(
Das Wifi Kit 8 Board verwendet 10k Ohm Pull-Up Widerstände bei 3,3V für das on-board Display. Das geht so gerade eben. Wenn man die Pins anfasst oder einige cm Draht anlötet, geht es schon nicht mehr.
Stefan U. schrieb: > Das Wifi Kit 8 Board verwendet 10k Ohm Pull-Up Widerstände bei 3,3V für > das on-board Display. Das geht so gerade eben. Wenn man die Pins anfasst > oder einige cm Draht anlötet, geht es schon nicht mehr. Generell baue ich gerne stromsparend, was nicht fließt, muß nicht weggekühlt werden und Temperatur ist Lebensdauer. Im konkreten Fall habe ich 5 Volt, Strom kommt aus der Steckdose und über 10 mW mehr oder weniger muß ich nicht nachdenken. Falk B. schrieb: > I2C muss min. 3mA gegen LOW ziehen können, dazu schaue ich in die Datenblätter, jawohl, alle drei beteiligten ICs definieren max. 0,4 V-low @ 3 mA bzw. min. 0,4 V @ 3 mA. Der Zollstock sagt mir, dass ich in Summe fast 50 cm Leitungslänge habe, also lege ich mich an die Unterkante mit etwa 1,5 kOhm. Wie gesagt: Thema erstmal erledigt!
Manfred schrieb: > Generell baue ich gerne stromsparend, was nicht fließt, muß nicht > weggekühlt werden und Temperatur ist Lebensdauer. Das ist bei I2C fast egal, da Strom nur fließt wenn die Pegel auf low liegen, also während der Datenübertragung. Da man I2C nahezu beleibig verlangsamen kann, kann man die Leitungslänge entsprechend ausdehnen. Hab letztens ein paar Sensoren an 10m geschirmten Cat-Kabel getestet (hohe Leitungskapazität), ging mit 10kHz problemlos und mit sauberem Signalbild. Wenn man es schnell bei großer Leitungslänge haben will, hilft ein Stromspiegel, die Pegel schnell wieder hochzuziehen: https://www.mikrocontroller.net/attachment/9856/consta1.jpg Allerdings benötigt der dauerhaft seine 1.5mA pro Leitung.
Karl schrieb: > Hab letztens ein paar Sensoren an 10m > geschirmten Cat-Kabel getestet Naja, mein Gefühl sagt mir, dass I2C nie für solche Abstände bestimmt war. Falk B. schrieb: > Ich > würde sie an den Master machen und an allen Slaves entfernen. Wenn ich die Slaves selber baue dann würde ich denen auch keine Pull-Ups spendieren. Wie gesagt,, in diesem Falle würde ich aber erstmal den Bus zusammen setzen und mir das Signalbild auf dem Oszi anschaun bevor ich den Lötkolben auspacke denn warum die Pull-Ups runter holen wenn das Signalbild gut aussieht? ;)
M. K. schrieb: > Naja, mein Gefühl sagt mir, dass I2C nie für solche Abstände bestimmt > war. I2C wird von VGA, DVI und HDMI für EDID verwendet. DVI kann bis 15m.
Karl schrieb: > I2C wird von VGA, DVI und HDMI für EDID verwendet. DVI kann bis 15m. I2C war ursprünglich nur für die Kommunikation von ICs auf einer Platine gedacht. Natürlich kann man es auch zweckentfremden. Bei DVI: Ist bei den 15 M wirklich noch ne vernünftige I2C Kommunikation mit inbegriffen? Naja, ich hab jedenfalls I2C noch nie auf diese Entfernungen benutzt und plane das auch nicht. Da würde ich dann doch andere Schnittstellen in Betracht ziehen.
M. K. schrieb: > Naja, mein Gefühl sagt mir, dass I2C nie für solche Abstände bestimmt > war. Dann weise dein Gefühl mal auf die Application Note AN10658 (Sending I2C-bus signals via long communications cables) von NXP hin. https://www.nxp.com/docs/en/application-note/AN10658.pdf Dort werden vom Erfinder des I2C Leitungslängen bis 120m für I2C-Kommunikation genannt.
> bis 120m
Wenn die Sender die Flankensteilheit begrenzen und die Empfänger kurze
Überschwinger raus filtern und die Taktrate dazu passend gering ist wird
das wohl gehen.
Aber wenn du heute einem Hobbybastler erzählst, dass deine Geräte mit
10kbit (wie bei Lego Mindstorms NXT) kommunizieren, erhältst du nur ein
müdes mitleidiges Lächeln.
Wenn auf einem Radiowecker "0,00003 GHz Taktfrequenz" stehen würde,
würde ihn niemand kaufen. So doof ist die Welt geworden, dank der
permanenten Gigantomanie.
Hallo, wenn ich dazu etwas beitragen darf. Die besagten 120m funktionieren auch nur mit Portexpander. Das sollte man fairerweise mit erzählen. I2C wurde schließlich für Kommunikation innerhalb eines Gerätes entwickelt. Also für kurze Kabellängen. Ansonsten gibts hier paar bessere Erklärungen mit Messbildern wie sich die Widerstandsgrößen auf das Signal auswirken. http://www.gammon.com.au/forum/?id=10896&reply=5#reply5
Wie niedrig die Pullups sein müssen, hängt auch von der Kapazitäten ab, die an SDA/SDC hängen. Je mehr Platinen und je länger die Leitungen sind, umso höher ist die Kapazizät und um so niedriger sind die benötigten Pullups. Bei einem Slave und kurzen Leitungen bzw. wenn der Slave auf der gleichen Platine wie der Master ist, mag 4k7 ok sein, bei 5 Platinen, die wie hier alle über Leitungen angebunden sind, wäre bei 5V eher 1k5 zielführend. Ich nehme für Platinenverbindungen immer Flachkabel, die abwechseld GND und Daten führen, also GND/SDA/GND/SDC/GND/+5V, die GND dürfen nur an der Seite des Masters verbunden werden, auf der Seite des Slaves ist nur 1x GND verbunden, die anderen offen. Und ich schaue mir immer die Flanken mit dem Oszi an und ändere die Pullups ggf.
Veit D. schrieb: > Ansonsten gibts hier paar bessere Erklärungen mit Messbildern wie sich > die Widerstandsgrößen auf das Signal auswirken. > http://www.gammon.com.au/forum/?id=10896&reply=5#reply5 Ohne Angaben zu Last/Leitungskapazität/Oszi-Eingang und zu Impedanzen der Ausgangsstufen ist das eine absolute Hausnummer.
Veit D. schrieb: > I2C wurde schließlich für Kommunikation > innerhalb eines Gerätes entwickelt. Also für kurze Kabellängen. So kenne ich das auch und ich finde schon 10m nicht mehr als kurz. Aber interessant ist das schon, dass auch so große Längen wie 120m, wenn auch mit speziellen Randbedingungen, gehen sollen.
:
Bearbeitet durch User
Edgardo schrieb: > 120m ? Fuer so etwas ist RS485 da, nicht I2C ! Bei RS485 brauchst Du aber intelligente Sensoren für die Kollisionserkennung. Bei I2C kannst Du beliebig dumme Sensoren an den Bus hängen, z.B. ein Eeprom oder eine RTC. Ja, heute wo man für eine blinkende LED einen Raspi benötigt kann man sich das nicht mehr vorstellen.
M. K. schrieb: > I2C war ursprünglich nur für die Kommunikation von ICs auf einer Platine > gedacht. Nein, eigentlich nicht. Er war für die Kommunikation zwischen den Platinen in einem Gerät gedacht. Er sollte die vielen Drähte z.b. zwischen dem Bedienteil mit den Stationstasten vorne und dem Hauptteil hinten, die sonst mit zentimeterbreiten Flachkabeln oder Kabelbäumen aufgebaut waren, reduzieren. > Natürlich kann man es auch zweckentfremden. Bei DVI: Ist bei > den 15 M wirklich noch ne vernünftige I2C Kommunikation mit inbegriffen? Über den I2C Bus wird die Monitorkennung gelesen. Zusätzlich werden auch 5V Übertragen. Wenn der Monitor alles richtig macht, kann der PC selbst dann, wenn der Monitor keine Betriebsspannung hat, seine technischen Daten auslesen. Wenn das nicht funktioniert, fällt der PC bei jedem Einschalten auf seine default Displayeinstellung zurück. Passiert das nicht, funktioniert der I2C Bus. MfG Klaus
Karl schrieb: > Bei RS485 brauchst Du aber intelligente Sensoren für die > Kollisionserkennung. Öhm, nein, braucht man nicht. Auch bei RS485 dürfen die Sensoren dumm wie Brot sein.
Jörg W. schrieb: > Falk B. schrieb: >>> Einige runter, minimal etwa 4,7 kΩ. >> >> I2C muss min. 3mA gegen LOW ziehen können, macht ~1k5 an 5V. > > Würde ich trotzdem nicht völlig ausreizen. Warum? Wir bewegen uns natürlich sauber in den Recommended operating conditions, setze ich mal voraus. Und weil ein niedrigerer Widerstand eine höhere Robustheit des Busses bedingt, nimmt man den kleinstmöglichen Wert. Das hat keinen Nachteil - der Hersteller garantiert uns die Funktion. Aber Vorteile - steilere Flanken, geringere Empfindlichkeit gegen Einkopplung. Ich denke, 2k oder 1k5 sind gute Werte. 1k5 sind nicht teurer als 4k7, und der zusätzliche Stromverbrauch ist möglicherweise sogar gleich (wenn man schneller kommuniziert, ist man auch schneller fertig). Die Abwärme ist jedenfalls kein sinnvolles Argument, die 17mW (1k5, 5V) pro Leitung tun niemanden weh.
achso schrieb: > nimmt man den kleinstmöglichen Wert. Das hat keinen Nachteil Energieverbrauch, wurde ja auch schon genannt. Ist aber mittlerweile alles ziemlich müßig, die Diskussion. Der TE hat ja seinen Weg gefunden.
Guten Abend, Ein Frohes Fest und schöne Feiertage.... ICh habe eine Schaltung mit einem ESP32 und einem IC Si4732 das IC Benötigt 3,3V und ist über einen I2c Bus mit dem ESP32 Verbunden, dieser Meldet (aus dem Display oben auf dem ESP das er keinen Kontakt mit dem IC hat.... Die Pullup Widerstände habe ich versehendlich (SMD 4r7) anstatt (4K7) genommen... war übernächtigt...mache ich nicht mehr. Die Richtigen Versorgungs Spannungen IC liegen an, Verbindungen sind Vorhanden, die anderen Teile sind Richtig Verlötet, meine Vermutung bevor ich den Lötkolben auspacke und anwerfe....könnte der kleine widerstand diesen Fehler verursachen... Ich habe sonnst immmer 4,7K genommen... weiss da jemand rat? die Linke platine so sollte er Fertig aussehen und Funktioniren. Rechts ist die Anzeige das er keinen Kontakt mit dem SI3545 hat
:
Bearbeitet durch User
Hans Werner A. schrieb: > weiss da jemand rat? > > So soll er aussehen..... Und wieso holst Du dafür diesen alten Thread aus der Versenkung?
Bei einem 6 Jahre alten THread solltest du nichts mehr neues einfügen. Steht ja auch so als Hinweis. Für Farbenblinde sogar in ROT! Aber ich würde sagen, dass entweder der ESP oder der andere IC sein Leben durch Überstrom ausgehaucht haben. Oder auch beide. Wenn du einen Oszi hast, kannst du das gut messen. Schreibe die beiden als Lehrgeld ab!
weil ich nach Hilfe gesucht hatte....! dann bin ich hier darauf gestoßen.... und habe angefangen zu schreiben. habe den wink mit dem zu alten thread nicht bemerkt...sorry! aber mal im Ernst....einer oder beide gehimmelt? bei zu kleinen Widerständen? mehr als 3,3 V ist eh nicht vorhanden und ich habe auch einen 9V Block mit weniger als 8V Betrieben da ja alles auf einen 1117 = 3Volt hinaus läuft kann doch eingendlich nix Passiert seina auser die Signale wie ich hier gelesen habe könnten unsauber werden und der ESP kann damit nix mehr anfangen?
Hans Werner A. schrieb: > einer oder beide gehimmelt? Könnte schon, ist ja praktisch ein Kurzschluss. Ist aber nicht unbedingt wahrscheinlich. Statt Kaffeesatz lesen -> messen. Und wenn du mehr Hilfe brauchst, dann bitte einen neuen Thread dafür.
Hans Werner A. schrieb: > bei zu kleinen Widerständen? > mehr als 3,3 V ist eh nicht vorhanden Bei 3,3V und 5x 4k7 fließen 3,5mA. Davon stirbt keine GPIO Ausgangsstufe. 4,7 Ohm dagegen sind bezogen auf die Grenzdaten dagegen faktisch ein Kurzschluss. Helmut -. schrieb: > Für Farbenblinde sogar in ROT! Nicht nur farbenblind :-( "Bitte das JPG-Format (nur) für Fotos und Scans verwenden!"
:
Bearbeitet durch User
Es wird nur den master (ESP) erwischt haben. Der slave hat nichts verstanden und demnach auch nicht geantwortet.
habe mit meinem kleinen Ozi gemssen... es liegen 3V an, kein Takt.... der IC hat ja auch einen Quarz wen der nicht Schwingt wird sich das IC auch nicht melden.... naja wer viel Mist mist mist oder so..... werde mal genauer durchmessen... nach den Feiertagen....das ist mehr ruhe... einen schönen Feiertag!
Hans Werner A. schrieb: > habe mit meinem kleinen Ozi gemssen... > es liegen 3V an, kein Takt.... Wo hast du gemessen und wie hast du versucht, den Takt zu erzeugen?
gemessen habe ich an den I2c Datenleitungen. Der Takt sollte eigenlich vom ESP kommen, der IC hat einen eigenen Quarz wenn der nicht tut ist da auch sense. Ich habe mir mal alle SMd Bauteile Ordendlich Bestellt und keine uralt Smd Teile....genommen... habe schon alle Teile Rausgelötet nur noch der Quarz, IC und 5Volt Regler sind drauf....
Hans Werner A. schrieb: > Der Takt sollte eigenlich vom ESP kommen, der IC hat einen eigenen Quarz > wenn der nicht tut ist da auch sense. Auf der I2C Taktleitung ist nur ein Takt zu erwarten, wenn die Software dafür sorgt, dass in dem Moment Daten über den Bus übertragen werden. Sonst ist da nichts zu erwarten.
eben! da nix kommt...ist sense! erstmal alles Verlötete überprüfen dann weiter!
Ich tippe da eher auf: Falsche Pins verwendet. Passiert ganz fix bei den ESP. Wie (fast?) immer: Code und Schaltplan geheim. Also selber suchen.
:
Bearbeitet durch User
Hans Werner A. schrieb: > da nix kommt...ist sense! > erstmal alles Verlötete überprüfen dann weiter! So wie du dich hier gibst: Erst mal alles wegschmeissen, neu kaufen und gaaaanz sorgfältig von vorne beginnen.
Warum soll ich mich den nicht so geben? Ist doch Schließlich mein Geld oder? diese 5€ an SMD Teilen... machen die Ganz auch nicht Fett. Aber meine Einstellung hat Früchte Getragen! hat den Kopf frei gemacht...mal nicht an diese platine Denken und ab in die Kiste. nun nach den Feiertagen (nicht 5€ ausgegeben...sondern nur 5Cent für 2 Widerstände a 4,7KOhm....das wars..... SDR Empfänger Funktioniert...! Hab nun doch noch ein Weihnachts Geschenk..lieber Spät als gar nicht.... So das wars! wie beendet man diesen Beitrag als Erledigt?
:
Bearbeitet durch User
der Schaltplan ist ganz am Anfang als PDF... den Code habe ich nicht, war Komplett als .bin zum Runterladen!
Hans Werner A. schrieb: > der Schaltplan ist ganz am Anfang als PDF... Wohl eher gleich nach den ersten 70% des Threads ... Hans Werner A. schrieb: > Angehängte Dateien:
Hans Werner A. schrieb: > Warum soll ich mich den nicht so geben? ----------------------^^^?--------------- Auch deshalb (wie auch schon Beiträge vorher): > Ist doch Schließlich > machen die Ganz auch nicht Fett. > diese platine Denken > SDR Empfänger Funktioniert...! > lieber Spät > diesen Beitrag als Erledigt OMG, SCNR, usw.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.