I2C, 5V und Spannungsteiler

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

t0mk
Beiträge: 265
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 22 Mal

I2C, 5V und Spannungsteiler

Beitrag von t0mk » 26.06.2024, 23:23

Ich versuche ein OLED-Display an einem Arduino Nano ans Laufen zu bringen. Die Betriebsspannung des Display ist mit 3.3V/5V angegeben. Da es auch hier im Forum schon mal Zweifel gab, ob 5V wirklich spezifikationskonform sind, ist am 5V Pin noch ein 3.3V LDO zwischengeschaltet. Damit auch noch die beiden Signalleitungen (SDA/SCL, angeschlossen an A4/A5) mit den entsprechenden Pegeln laufen, habe ich Spannungsteiler mit je einem 1K und 0,47K Widerständen zwischengeschaltet:
Spannungsteiler.jpg
Spannungsteiler.jpg (13.32 KiB) 338 mal betrachtet
Das Ergebnis ist, der Arduino-Beispiel-I2C-Scanner-Sketch findet das Display nicht, andere Test-Sketches können dem Display keine Ausgabe entlocken. Der Nano lässt sich ohne Probleme flashen und ander Pins scheinen auch zu funktionieren, also gehe ich davon aus, dass das Ding in Ordnung ist.

Zum Testen habe ich das Display an einem Arduino Uno ohne Spannungsteiler aber mit 3.3V laufen lassen und siehe da, das Display funktioniert.

Die Frage ist nun, müssen die Signalpegel überhaupt konvertiert werden? Das Ding läuft zwar offenbar auch ohne, aber ist das dann noch spezifikationskonform? Und warum funktioniert das nicht mit den Spannungsteilern? Mache ich irgendwas verkehrt oder funkioniert diese Art der Pegelkonvertierung nicht mit den I2C-Signalen? Es handelt sich um dieses Display:
https://www.az-delivery.de/products/0-9 ... ed-display

HMSteve
Beiträge: 541
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 96 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von HMSteve » 27.06.2024, 06:50

Dein Schaltbild ist vermutlich unvollstaendig, da es oft noch pull-up Widerstaende auf den Boards gibt, dann sieht Dein Spannungsteiler ganz anders aus, zudem muesstest Du ihn in bidirektional denken, was auch zeigt, dass das so nicht ohne Weiteres geht. Als simple, oft funktionierende Loesung werden Serienwiderstaende in den Verbindungen der Kommunikationspartner von einigen k empfohlen, haengt aber vom internen Design der ICs ab.
Ich wuerde Dir eine Pegelwandlung per Mosfet empfehlen, nur ein Bauteil je Leitung mehr und funktioniert sicher. Dedizierte Level Shifter ICs gibts zwar, halte ich hier aber fuer uebertrieben.

Viele Gruesse,
Stephan

t0mk
Beiträge: 265
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 22 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von t0mk » 27.06.2024, 07:23

Du hast Recht, ein Pull-Up sitzt auf dem Display-PCB, damit sieht die Schaltung so aus:
Spannungsteiler2.jpg
Spannungsteiler2.jpg (17.44 KiB) 303 mal betrachtet
Hier werden die Pegel ja nach demselben Prinzip gewandelt, zum Teil auch mit Pull-Up Widerständen, und es scheint zu funktionieren. Was ist in meinem Fall anders? Zur Not muss ich natürlich zu was anderem greifen oder die Wandlung ganz lassen, aber ich würde gerne der Sache hier auf den Grund gehen.

rentier-s
Beiträge: 409
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 72 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von rentier-s » 27.06.2024, 08:17

Für sämtliche meiner PicoW Basteleien verwende ich 3,3V<->5V Pegelwandler. Unter anderem betreibe ich damit Ultraschall-Sensoren, ein LCD Display und I2C Messverstärker.

5 St kosten bei ebay 4€, funktionieren einwandfrei auch bei höheren Frequenzen und man hat immer saubere Pegel, ohne rum rechnen zu müssen. Sind 4 Kanäle auf einem kompakten Modul.
t0mk hat geschrieben:
26.06.2024, 23:23
Die Frage ist nun, müssen die Signalpegel überhaupt konvertiert werden? Das Ding läuft zwar offenbar auch ohne
Man sollte meinen Erfahrungen nach immer genau auf die Angaben achten. Ich habe zum Beispiel zufällig USS Module mit 3,3V erwischt, haben wunderbar funktioniert. Bei der nächsten Bestellung dummerweise nicht geschaut und 5V Module bestellt, und dann ewig rum probiert und gewundert, warum die keine brauchbaren Messwerte liefern. Das LCD Display hat testweise am Steckboard mit 3,3Vcc funktioniert, bis 3m mehr Leitung dazu kamen, um es am gewünschten Standort zu betreiben, dann erschienen bei jedem dritten Schreibvorgang nur wirre Zeichen.

HMSteve
Beiträge: 541
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 96 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von HMSteve » 27.06.2024, 08:30

t0mk hat geschrieben:
27.06.2024, 07:23
Du hast Recht, ein Pull-Up sitzt auf dem Display-PCB, damit sieht die Schaltung so aus:
Spannungsteiler2.jpg

Hier werden die Pegel ja nach demselben Prinzip gewandelt, zum Teil auch mit Pull-Up Widerständen, und es scheint zu funktionieren. Was ist in meinem Fall anders? Zur Not muss ich natürlich zu was anderem greifen oder die Wandlung ganz lassen, aber ich würde gerne der Sache hier auf den Grund gehen.
Im verlinkten Beispiel sind das unidirektionale Wandlungen. Wie gesagt, Mosfet ist simpel und billig, siehe bspw: https://learn.sparkfun.com/tutorials/b ... -guide/all

Viele Gruesse,
Stephan

Benutzeravatar
stan23
Beiträge: 2070
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 608 Mal
Danksagung erhalten: 346 Mal
Kontaktdaten:

Re: I2C, 5V und Spannungsteiler

Beitrag von stan23 » 27.06.2024, 09:08

Stephan hat recht, unidirektional funktioniert nur bei SPI.
I2C hingegen hat eine bidirektionale Datenleitung.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

dondaik
Beiträge: 12983
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1672 Mal
Danksagung erhalten: 227 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von dondaik » 27.06.2024, 11:48

ich schließe sie einfach mit 4 drähten an an arduino und co an
sie bekommen Vcc ( mal 3.3 mal 5V ) und i2c direkt.... es es mir noch keines gestorben
Zuletzt geändert von dondaik am 27.06.2024, 14:59, insgesamt 1-mal geändert.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Matsch
Beiträge: 5695
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 125 Mal
Danksagung erhalten: 798 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von Matsch » 27.06.2024, 12:33

Hasadeur!

TomMajor
Beiträge: 1800
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 177 Mal
Danksagung erhalten: 401 Mal
Kontaktdaten:

Re: I2C, 5V und Spannungsteiler

Beitrag von TomMajor » 27.06.2024, 12:34

Wie Stephan und Marco bereits schrieben, der Spannungsteiler funktioniert nicht weil SDA bidirektional ist.
Bei SCL würde es vermutlich gehen, solange wir ein 1-Master System haben was hier der Fall ist.

Hier ist die Standard-Schaltung für Pegelwandlung für I2C gezeigt:
https://github.com/TomMajor/SmartHome/t ... sor-boards

und beim AskSin Analyzer XS Board sind solche "fertigen" Levelshifter zu sehen:
https://github.com/TomMajor/SmartHome/t ... -XS#aufbau
https://www.ebay.de/itm/166398329183
Viele Grüße
Tom

Meine Entwicklungen: TomMajor/SmartHome / RM AddOn: HB-TM-Devices-AddOn / Platinen: PCB / UniSensor: HB-UNI-Sensor1

t0mk
Beiträge: 265
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 22 Mal

Re: I2C, 5V und Spannungsteiler

Beitrag von t0mk » 27.06.2024, 17:18

TomMajor hat geschrieben:
27.06.2024, 12:34
Wie Stephan und Marco bereits schrieben, der Spannungsteiler funktioniert nicht weil SDA bidirektional ist.
Danke, das ist der entscheidende Unterschied, der mir vorher nicht bewusst war. Mit dem Levelshifter funktioniert es nun!
dondaik hat geschrieben:
27.06.2024, 11:48
ich schließe sie einfach mit 4 drähten an an arduino und co an
sie bekommen Vcc ( mal 3.3 mal 5V ) und i2c direkt.... es es mir noch keines gestorben
Ich habe versucht, zu klären, ob 5V spezifikationskonform sind oder nicht, da die allermeisten Videos und Tutorials tatsächlich die Dinger direkt mit 5V laufen lassen. Ich glaube, dass 5V VCC tatsächlich OK sind, da auf dem Display-PCB ein Bauteil ist, das wie ein LDO aussieht, und die meisten Händler tatsächlich sowas wie "3.3V/5V" oder "3.3V ~ 5V" angeben. Aber ich kann auf dem Display-PCB keine Bauteile erkennen, die auf eine Pegelwandlung hindeuten würden und laut dem Datasheet des SSD1306-Controllers ist der nicht 5V tolerant. Also verhält es sich hier tatsächlich wie mit dem CC1101 und flashen mit dem USBASP: kann gut gehen, muss es aber nicht :)
TomMajor hat geschrieben:
27.06.2024, 12:34
und beim AskSin Analyzer XS Board sind solche "fertigen" Levelshifter zu sehen:
https://github.com/TomMajor/SmartHome/t ... -XS#aufbau
Apropos: warum hast du hier 2 LEDs an demselben Pin hängen? Oder sollte die 2. LED gegen D9 gehen? Der scheint aber nicht von der SW benutzt zu werden, zumindest habe ich die entsprechende Stelle auf die Schnelle nicht gefunden.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“