Forum: Mikrocontroller und Digitale Elektronik ESP - Arduino -Level Converter


von ESPnewbie (Gast)


Lesenswert?

Hallo,

ich weiß das hier schon immer mal wieder über die Level-Konvertierung 
zwischen ESP8266 und Arduino diskutiert wurde.

Ich habe in meiner Bastelkiste zwei unterschiedliche I2C-LevelConverte 
gefunden. Der Erste arbeitet mit einem Mosfet und einem Spannungsteiler
(ähnlich diesem http://letsmakerobots.com/node/39234)

und der Zweite hat in etwa folgenden Aufbau. 
https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide

Meine Frage ist jetzt, warum bekomme ich mit dem ersten Konverter das 
Serial-Interface ans laufen und mit dem Zweiten nicht??

Ich hoffe ihr könnt mich aufklären.

Habt Dank!
Peter

von Klaus (Gast)


Lesenswert?

ESPnewbie schrieb:
> Ich habe in meiner Bastelkiste zwei unterschiedliche I2C-LevelConverte
> gefunden.

Der ESP hat aber nicht I2C sondern UART. Vom ESP zum Arduino solltes es 
einfach so gehen, Schaden kann das nicht anrichten. Und andersherum tuts 
ein einfacher Spannungsteiler, Kolban schlägt 10k zu 22k vor.

http://neilkolban.com/tech/esp8266/

MfG Klaus

von DokuLeseVerweigerer (Gast)


Lesenswert?

Klaus schrieb:
> Der ESP hat aber nicht I2C sondern UART
Einspruch!
Er kann schon beides.

von ESPnewbie (Gast)


Lesenswert?

ja das mit I2C und UART ist mir klar ... aber müsste das nicht bei der 
Pegelwandlung egal sein?

von DokuLeseVerweigerer (Gast)


Lesenswert?

Nein!
Deine I2C Wandler sind Bidirektional.
UART Wandler Unidirektional.
I2C Ports arbeiten Open Drain, Uart Ports PushPull.

Wenn die Pullups genügend klein sind, mag das sogar funktionieren.
Darin werden sich deine LevelShifter vermutlich unterscheiden.

von Sascha (Gast)


Lesenswert?

Also aus eigener Erfahrung kann ich sagen dass der ESP an den UART 
Eingängen auch 5V verträgt. Aber das garantiert dir der Hersteller 
nicht, ist also die Bastellösung für Schmerzfreie.

Der 1-BJT Minimalpegelwandler für I2C müsste ja rein theoretisch auch 
funktionieren, man lässt einfach die Pull-Ups weg.

von avr (Gast)


Lesenswert?

Sascha schrieb:
> Also aus eigener Erfahrung kann ich sagen dass der ESP an den UART
> Eingängen auch 5V verträgt. Aber das garantiert dir der Hersteller
> nicht, ist also die Bastellösung für Schmerzfreie.

Wie wärs wenn du in Zukunft die Pfuschlösungen einfach für dich behälst? 
Wenn der Hersteller nicht sagt, dass die Ports 5V tolerant sind, dann 
ist die Wahrscheinlichkeit sehr klein, dass es doch so ist. Und kaputt 
ist nicht unbedingt "der ESP geht gar nicht mehr", sondern eher "er hält 
seine Spezifikationen nicht mehr ein". Wenn etwas kaputt gegangen ist, 
kann es gut sein, dass du es nicht bemerkt hast oder es erst nach 
längerer Zeit zu schäden kommt. Kaputte ICs zu debuggen macht jedenfalls 
Spaß, deswegen würde ich allgemein von so etwas abraten.

Sascha schrieb:
> man lässt einfach die Pull-Ups weg

I²C ohne Pullups? Wie soll das gehen?

Bei I²C, 5V <-> 3,3V und Avrs kann man übrigens einfach die Pullups an 
die 3,3V anschließen. Ein 5V Avr erkennt 3V als High.

von Peter B. (funkheld)


Lesenswert?

Am Arduino nur der Softuart, ansonsten der TX0 und RX0  wenn der 
USBanschluss abgezogen ist.

-------------------------------
Also aus eigener Erfahrung kann ich sagen dass der ESP an den UART
Eingängen auch 5V verträgt.
-------------------------------

von ESPnewbie (Gast)


Lesenswert?

Habe ich das jetzt richtig verstanden, das man einfach auf den 
I2C-Level-Converter ein paar Widerstände (Pull-Ups) auslötet und das 
Teil kann auch für die UART-Schnittstelle verwendet werden?

Und danke für eure Hilfe
Gruß Peter

von Klaus (Gast)


Lesenswert?

avr schrieb:
> Ein 5V Avr erkennt 3V als High.

avr schrieb:
> Wie wärs wenn du in Zukunft die Pfuschlösungen einfach für dich behälst?

Mfg Klaus

von DokuLeseVerweigerer (Gast)


Lesenswert?

ESPnewbie schrieb:
> Habe ich das jetzt richtig verstanden, das man einfach auf den
> I2C-Level-Converter ein paar Widerstände (Pull-Ups) auslötet und das
> Teil kann auch für die UART-Schnittstelle verwendet werden?

Unsinn!

von avr (Gast)


Lesenswert?

Klaus schrieb:
> avr schrieb:
>> Ein 5V Avr erkennt 3V als High.
>
> avr schrieb:
>> Wie wärs wenn du in Zukunft die Pfuschlösungen einfach für dich behälst?
>
> Mfg Klaus
Im Gegensatz zu seiner Aussage steht das im Datenblatt!

von DokuLeseVerweigerer (Gast)


Lesenswert?

avr schrieb:
> Im Gegensatz zu seiner Aussage steht das im Datenblatt!
Ja?
Wo?


Bisher habe ich nur sowas gefunden:
Vcc * 0,7 = 3,5V

Atmel garantiert, dass ein High bei 3,7V erkannt wird.

von DokuLeseVerweigerer (Gast)


Lesenswert?

> 3,7V
3,5V

von avr (Gast)


Lesenswert?

DokuLeseVerweigerer schrieb:
> avr schrieb:
>> Im Gegensatz zu seiner Aussage steht das im Datenblatt!
> Ja?
> Wo?

Wo wohl? Sicher nicht unter Pinout und sicher auch nicht unter Memory 
Programming. Wenn du das richtige Kapitel gefuden hast, steht es gleich 
auf der ersten Seite.

DokuLeseVerweigerer schrieb:
> Bisher habe ich nur sowas gefunden:
> Vcc * 0,7 = 3,5V

Quelle? Ich habe mal in die Datenblätter vom Atmega168/PA/PB 
reingeschaut. Bei allen gilt mindestens:

VCC = 1.8V - 2.4V   0.7VCC
VCC = 2.4V - 5.5V   0.6VCC

von Matthias D. (Firma: ESRA) (madias)


Lesenswert?

Hab mir diesbezüglich vor ein paar Monaten einmal die hier bestellt:
http://www.aliexpress.com/item/20pcs-lot-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V/32310611638.html
20 STK für knapp 5.5 Euro und seitdem habe ich Ruhe in allen Belangen 
(AVR<>ARM<>ESP's<>SD-Card<>Displays 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
Noch kein Account? Hier anmelden.