Forum: Mikrocontroller und Digitale Elektronik ESP32 und ADS1115/MCP4725: 5Vcc für ADC und DAC möglich?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ganz kurze Frage, vielleicht kann und mag mir jemand langes 
Datenblatt-Lesen ersparen.

Wenn ich den ADS1115 ADC und MCP4725 DAC via I2C zusammen mit einem 
ESP32 verwende, der an 3,3V läuft - können ADC und DAC dann trotzdem mit 
5V betrieben werden (so daß man deren Funktionen im Bereich 0..5V 
verwenden kann) oder ist man auf 3,3V limitiert?

Danke!

von Joachim S. (indoctius)


Lesenswert?

Der DAC benötigt auf der digitalen Seite einen H-Pegel von 0,7xVcc, 
somit sollte es nur mit Pegelwandler 3,3 - 5V sicher funktionieren. Ob 
auf der 5V-Seite 1 oder mehr I2C-Bausteine genutzt werden sollte egal 
sein.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Das war meine erste Überlegung, 5/3,3 sind 0,66. Also wenn es überhaupt 
funktioniert, dann sehr grenzwertig und evtl. störanfällig.

Die andere Überlegung, den I2C mit 5V betreiben - aber mag der ESP32 
einen 5V I2C an seinen Pins?

Wenn nicht, betreibe ich die Logik komplett mit 3,3V. Das sollte auch 
funktionieren, aber dann muss ich zu messende Spannungen auf 3,3V für 
Vollausschlag herunterteilen und nicht auf 5V, evtl. wirken sich 
Störungen auf diese Messgrößen dann stärker aus. Werde ich ausprobieren 
müssen.

von Dieter S. (hotsystems)


Lesenswert?

Genau für diese Anwendung wurden doch I2C-Levelshifter gebaut.
Damit funktioniert das problemlos. Der ESP32 hat auf seiner Seite die 
3,3V und die andere Seite seine 5Volt.

von Joachim S. (indoctius)


Lesenswert?

Den Messbereich des ADC mittels Spannungsteiler auf maximal 3,3V 
anzupassen sei das eine, bleibt aber noch die Frage ob dann die 
Ausgangsspannung des MCP4725 mit max. 3,3V reicht.
Wie hoch ist denn die Versorgungsspannung deiner Schaltung? Wenn diese 
schon 5V beträgt und dann für den ESP auf 3,3V geregelt wird ist doch 
höchstens der Platzbedarf ein Argument gegen eine Pegelanpassung.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> bleibt aber noch die Frage ob dann die Ausgangsspannung
> des MCP4725 mit max. 3,3V reicht.
Ja, sie reicht. Die DAC-Ausgangsspannung wird mit einer relativ hohen 
Spannung (max. 300..400V, normal vielleicht 100..150V) verglichen, die 
ich auch messen muss. Die beiden Messspannungen nach dem Spannungsteiler 
(einmal für den ADC, einmal für einen TL494 PWM-Regler, der die 
DAC-Spannung als Sollwert bekommt) müssen dann nur auf 3,3Vmax 
heruntergeteilt werden und nicht auf 5Vmax.

> Wie hoch ist denn die Versorgungsspannung deiner Schaltung?
36V -> 12V -> 5V -> 3,3V.

Die 36V kommen aus dem Akku, die 12V brauche ich für den PWM-Regler und 
die Ansteuerung der FETs, 5V für ACS712 Stromwandler (erzeugt 
Messbereich 0..30A in 2,5..0,52V für den ADC), 3,3V für den ESP (macht 
sich das Board selbst aus 5V).

> Wenn diese schon 5V beträgt und dann für den ESP
> auf 3,3V geregelt wird ist doch höchstens der Platzbedarf
> ein Argument gegen eine Pegelanpassung.
Das Ganze soll ein 1kW 36V PV-Lader werden, im zweiten Schritt 4kW. Ich 
weiß nicht genau, wie stark die Störungen durch die bis zu 30 Ampere und 
geschalteten 300..400V auf der eigenen Platine werden, dazu der ESP32 
mit seinem WiFi-Sender. Messspannungen von bis zu 5V anstatt 3,3V hätten 
evtl. einen besseren Störabstand gehabt.

von Alexander (alecxs)


Lesenswert?

Dieter S. schrieb:
> Genau für diese Anwendung wurden doch I2C-Levelshifter gebaut.
> Damit funktioniert das problemlos. Der ESP32 hat auf seiner Seite die
> 3,3V und die andere Seite seine 5Volt.

I2C sind auch nur zwei Pins.

von Obelix X. (obelix)


Lesenswert?

Ben B. schrieb:
> Wenn ich den ADS1115 ADC und MCP4725 DAC via I2C zusammen mit einem
> ESP32 verwende, der an 3,3V läuft - können ADC und DAC dann trotzdem mit
> 5V betrieben werden (so daß man deren Funktionen im Bereich 0..5V
> verwenden kann) oder ist man auf 3,3V limitiert?

Nicht lange Schnacken - Pegelwandler einsetzen fertig.

von Rainer W. (rawi)


Lesenswert?

Ben B. schrieb:
> Die andere Überlegung, den I2C mit 5V betreiben - aber mag der ESP32
> einen 5V I2C an seinen Pins?

Beim I2C-Bus ist der H-Pegel rezessiv, d.h. kommt über Pull-Up 
Widerstände. Die begrenzen folglich den Strom bei H-Pegel. Falls der 
ESP-Eingang gegen Überspannung geschützt ist, wird darüber der Pegel am 
Pin begrenzt und es fließt ein Strom in den ESP. In den GPIO sollte 
normalerweise im Betrieb kein statischer Strom fließen, weil das ein 
Anzeichen für eine ansprechende Überspannungsschutzschaltung ist (es sei 
denn, man will die Schutzschaltung gezielt nutzen). Nimm also relativ 
große Pull-Up Widerstände (4.7kΩ .. 10kΩ) damit der Strom ggf. klein 
bleibt und miss bei H-Pegel die Spannung auf dem I2C. Dann kannst du dir 
deine Frage selber beantworten.

Ob der Hersteller garantiert, dass der ESP32 an seinen GPIOs 5V 
verträgt, sollte im Datenblatt unter Absolute Maximum Ratings 
spezifiziert sein.

von Christoph M. (mchris)


Lesenswert?

>Falls der
>ESP-Eingang gegen Überspannung geschützt ist, wird darüber der Pegel am
>Pin begrenzt und es fließt ein Strom in den ESP.

Der wird dann aber auch die Spannung am I2C begrenzen und das könnte ja 
dann zu wenig für die DACs sein.

von Rainer W. (rawi)


Lesenswert?

Christoph M. schrieb:
> Der wird dann aber auch die Spannung am I2C begrenzen ...
Richtig und da lt. Datenblatt die GPIOs max. 3.6V vertragen, lautet die 
klare Antwort: Nein, der ESP32 mag keine 5V am GPIO. Nur mit anständigem 
Pegelwandler wird das eine saubere Lösung, wenn man ADS1115 ADC und 
MCP4725 unbedingt mit 5V betreiben will. Aber die arbeiten ja auch mit 
weniger.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Obelix X. schrieb:
> Nicht lange Schnacken - Pegelwandler einsetzen fertig.

Kann man zwar auch diskret mit Mosfets zurechtbasteln, aber das hier 
kommt von denen, die sich mit I2C auskennen:

https://www.nxp.com/products/interfaces/ic-spi-i3c-interface-devices/ic-bus-repeaters-hubs-extenders/level-translating-ic-bus-repeater:PCA9517

von Dieter S. (hotsystems)


Lesenswert?

Alexander schrieb:
> I2C sind auch nur zwei Pins.

Ach ja...?
Habe ich irgendwo was anderes geschrieben ?

von Christoph M. (mchris)


Lesenswert?

Rainer W.
>Richtig und da lt. Datenblatt die GPIOs max. 3.6V vertragen,
Joachim S:
>Der DAC benötigt auf der digitalen Seite einen H-Pegel von 0,7xVcc,

5V*07=3.5V .. es würde knapp reichen.

von Alexander (alecxs)


Lesenswert?

Das ging an Ben. Zur Betonung, es sind nur zwei Pins. Da ist ein 
bidirektionaler Pegelumsetzer schnell dazwischen gebastelt. Schien mir 
irgendwie untergegangen zu sein. Es ist die saubere Lösung und kostet 
nichts.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Alles gut, ich versuche es mit dem reinen 3,3V-Design.

Wenn ich Probleme mit den Störungen bekomme, kann ich immer noch einen 
Levelshifter reinbauen und es mit 5V versuchen. Ich lasse mir etwas 
Platz auf der Platine, so daß dafür ggf. noch an den I2C drankomme.

Im Internet liest man dazu bekanntlich wieder alles. Von "ja kein 
Problem" bis "bläst dem ESP die Lichter aus" war viel dabei, daraufhin 
habe ich die Frage gestartet.

Danke nochmal!

von Rainer W. (rawi)


Lesenswert?

Harald K. schrieb:
> Kann man zwar auch diskret mit Mosfets zurechtbasteln, aber das hier
> kommt von denen, die sich mit I2C auskennen:

Früher (tm) konnte man das auch in Europa noch mit einem MOSFET und zwei 
Widerständen aufbauen. Heute kommt so etwas als Modul fürs Steckbrett 
aus China.
https://www.amazon.de/dp/B0DG56CK3K

: Bearbeitet durch User
von Dieter S. (hotsystems)


Lesenswert?

Ben B. schrieb:
> Wenn ich Probleme mit den Störungen bekomme,

Warum solltest du Störungen bekommen ?
Bei richtiger Verdrahtung und kurzem I2C-Bus mit korrekten Pullups 
sollte es ohne Störungen funktionieren. Und das auch bei einheitlichen 
3,3Volt.
Die beschriebenen Levelshifter sind nur erforderlich, wenn da 
Spannungsdifferenzen zwischen Controller und Sensoren zu überwinden 
sind.

von Alexander (alecxs)


Lesenswert?

Die sind aber teuer die Du rausgesucht hast.

https://www.amazon.de/dp/B082F6BSB5

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Um die Störungen des I2C mache ich mir recht wenig Sorgen, der muss 
nicht mit hoher Geschwindigkeit laufen.

Ich mache mir eher Gedanken darüber wie sich 1000W auf die 0..3,3V 
Messspannung auswirken, wenn man sie mit 50kHz von 100..150V mit StepUp 
auf etwa 400V und dann mit einem ungeregelten Wandler auf 36V herunter 
transformiert. Ich rechne zwar damit, daß von den 16 Bit des ADC nur 14 
wirklich nutzbar sind, aber so viel schlechter oder verrauschter sollte 
es dann doch nicht werden.

von Dieter S. (hotsystems)


Lesenswert?

Ben B. schrieb:
> Ich mache mir eher Gedanken darüber wie sich 1000W

Dann solltest du das auch gleich so beschreiben.
Und da solltest du möglich Störungen gleich an der Quelle eindämmen.

von Manfred P. (pruckelfred)


Angehängte Dateien:

Lesenswert?

Ben B. schrieb:
> mag mir jemand langes Datenblatt-Lesen ersparen.

Faulsack!

Der ADS1115 läuft hier an einem Arduino mit 3,3 Volt. Seine Referenz 
erzeugt er intern selbst, den Eingang auf 2048mV Vollausschlag gesetzt, 
sind die Meßwerte sehr genau.

MCP4725 habe ich nur in einem 5V-System laufen.

Harald K. schrieb:
> Kann man zwar auch diskret mit Mosfets zurechtbasteln, aber das hier
> kommt von denen, die sich mit I2C auskennen:

Auch die FET-Schaltung kommt "von denen, die sich mit I2C auskennen", 
Philips 1997.

Wenn es ein IC sein soll, schaut man zum Texas TXS0102. Beim Ali gab es 
billig Platinchen mit TXS0108E, aber 8 Kanäle braucht man kaum.

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
Noch kein Account? Hier anmelden.