Forum: Mikrocontroller und Digitale Elektronik ESP8266-01S & Arduino Nano - Stromversorgung vermurkst?


von Tuck I. (tuckito)


Angehängte Dateien:

Lesenswert?

Hi zusammen,

auf meiner Platine (Plan angehängt), ist ein ESP8266-01S über einen 
Logic Level Converter mit einem Arduino Nano verbunden.
Die Stromversorgung ist über ein 5V Mean Well Schaltnetzteil realisiert, 
an dem der Arduino direkt angeschlossen ist. Der ESP bekommt seine 3,3V 
über ein AMS1117 Modul.
Die beiden Kondensatoren sind gegen den Hunger des ESP, einmal Elko 
einmal Keramik.

Mein Problem:
ich möche den Status des ESP über dessen TX-Pin auslesen, bekomme aber 
nur verschiedene Sonderzeichen oder ausschliesslich Fragezeichen 
angezeigt.
Sofern ich jedoch das 5V Netzteil abziehe und alles über die USB Buchse 
des Arduino versorge, bekomme ich meine korrekte Ausgabe am ESP.

Die Ausgabe über den TX Pin lese ich mit einem FTDI Adapter dessen 
Baudrate mit der des ESP übereinstimmt. Es wurden verschiedene Baudraten 
ausprobiert.
Über USB Port des Arduino gespeist ist alles ok, über das 5V Netzteil 
nicht.

Kann die Stromversorgung bei der Festlegung der Baudrate 
dazwischenfunken?

Aus der uart.cpp des Esp8266 Arduino Cores:

uart_set_baudrate(uart_t* uart, int baud_rate)
{
    if(uart == NULL)
        return;

    uart->baud_rate = baud_rate;
    USD(uart->uart_nr) = (ESP8266_CLOCK / uart->baud_rate);
}

von Stefan F. (Gast)


Lesenswert?

Tuck I. schrieb:
> Sofern ich jedoch das 5V Netzteil abziehe und alles über die USB Buchse
> des Arduino versorge, bekomme ich meine korrekte Ausgabe am ESP.

Der Unterschied ist, dass die Versorgungsspannung des AVR bei USB ein 
paar hundert Millivolt geringer ist.

Bist du sicher, dass dein Pegelwandler funktioniert? Kontrolliere HIGH 
und LOW Pegel an den Ausgängen.

Benutzt du auf dem AVR SoftwareSerial? Die funktioniert nach meinem 
Kenntnisstand nicht mit 115200 baud. Versuche mal maximal 38400 baud.

von Tuck I. (tuckito)


Lesenswert?

Der Wandler funktioniert, sofern ich alles über einen Arduino versorge.
Lesen will ich ausschliesslich am ESP.
Also jetzt mal den Arduino von der Funktion her aussen vorgelassen, ich 
bekomme die Sonderzeichen am ESP.

Edit: am ESP messe ich direkt an VCC/GND 3,32V, wenn ich das 5V 
Netzzteil verwende.

: Bearbeitet durch User
von Brain 2.0 (Gast)


Lesenswert?

Mit einem I2C-Levelshifter habe ich auch Probleme bei der Verbindung per 
UART zu einem 5V Atmega. Deshalb verwende ich für die UART zwischen 
einem ESP-01 und dem Atmega nur Spannungsteiler mit Widerständen. Das 
funktioniert problemlos.

von EAF (Gast)


Lesenswert?

Was ich nicht in dem Zusammenhang verstehe:
Laut Plan verwendest du GPIO0 GPIO2 für die Serielle.
Wobei der ESP eigentlich GPIO1 GPIO3 dafür vorgesehen hat.

Tuck I. schrieb:
> Logic Level Converter
Da hätte ich auch schon mal gerne gewusst, was das für ein Levelshifter 
ist....

von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Die beiden Kondensatoren sind gegen den Hunger des ESP, einmal Elko
> einmal Keramik.

Auch wenn du es nicht für nötig hältst: dein Spannungsregler
braucht auch am Eingang einen fetten Elko sonst kann er am
Ausgang nicht korrekt stabilisieren. Ein Elko im speisenden
Netzteil kann normalerweise nicht diesen Elko ersetzen.

Die Ausgangs-Kondensatoren müssen nahe am Spannungsregler
platziert sein.

von Tuck I. (tuckito)


Lesenswert?

EAF schrieb:
> Was ich nicht in dem Zusammenhang verstehe:
> Laut Plan verwendest du GPIO0 GPIO2 für die Serielle.
> Wobei der ESP eigentlich GPIO1 GPIO3 dafür vorgesehen hat.

GPIO0 und 2 kann man sicher für i2c hernehmen.

EAF schrieb:
> Da hätte ich auch schon mal gerne gewusst, was das für ein Levelshifter
> ist....

https://www.ebay.de/itm/253048505379
Ohne genaue Infos, vermutlich genau wie der Sparkfun mit mehreren 
BSS138.
10k Pull-Ups sind ebenfalls auf dem Platinchen.

hard worker schrieb:
> Auch wenn du es nicht für nötig hältst: dein Spannungsregler
> braucht auch am Eingang einen fetten Elko sonst kann er am
> Ausgang nicht korrekt stabilisieren. Ein Elko im speisenden
> Netzteil kann normalerweise nicht diesen Elko ersetzen.


Es handelt sich um dieses Modul
https://cdn.shopify.com/s/files/1/1509/1638/files/AMS1117_Stromversorgungsmodul_3.3V_Datenblatt_9ad4555d-ea29-4360-8636-370433b21853.pdf?13805590412618064847
Ich habe noch andere Regulatoren, jedoch hatte ich dieses Modul 
verwendet, weils rumlag und ich dachte, dass es ein toller Zweck dafür 
wäre...
Ich finde keine Info, welche Kondensatoren da verlötet wurden, Ja man 
könnte sie auslöten, aber dann bekomme ich die nie wieder so drauf.

Habe gerade noch einen 1000uF an den Eingang des Reglers gehängt.
Kein Unterschied.

hard worker schrieb:
> Die Ausgangs-Kondensatoren müssen nahe am Spannungsregler
> platziert sein.

Also hinten und vorne zwei so große Kondensatoren?
Ein 1000uF ist direkt am Eingang des ESP ca. 2cm vom Regler entfernt.

von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Also hinten und vorne zwei so große Kondensatoren?

Nein, hinten (Ausgang) reicht 10 bis 47uF. Datenblatt des
Reglers lesen und Vorschläge beachten.

Ein (sehr) grosser Elko am Ausgang macht das Regelverhalten
zunichte oder verschlechtert es deutlich.

von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Es handelt sich um dieses Modul

Du hast einen Spannungsregler gezeichnet, meinst aber ein Modul.
Das ist extrem irreführend.

Tuck I. schrieb:
> Ich finde keine Info, welche Kondensatoren da verlötet wurden

Auf jeden Fall keine grossen Elkos. Das mag für einen Mini-
Controller gerade noch gut sein aber du willst ja einen
Stromfresser versorgen.

Nachdem deine Angaben so "präzise" sind darf man schon auch
mal am Aufbau zweifeln.

von Tuck I. (tuckito)


Lesenswert?

Ich bin bisl blind, auf der Platine steht ja vorni und hinten je 104 und 
106, also ein 100nF und ein 10uF sind schon verbaut.

: Bearbeitet durch User
von Tuck I. (tuckito)


Lesenswert?

hard worker schrieb:
> Tuck I. schrieb:
>> Es handelt sich um dieses Modul
>
> Du hast einen Spannungsregler gezeichnet, meinst aber ein Modul.
> Das ist extrem irreführend.

Das stimmt, aber ich hatte Modul geschrieben und dass Kondensatoren 
drauf sind. Ja das Bild ist irreführend.

: Bearbeitet durch User
von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Ein 1000uF ist direkt am Eingang des ESP ca. 2cm vom Regler entfernt.

Das ist jedenfalls genau nicht zielführend, wie vorher bereits
beschrieben.

von Tuck I. (tuckito)


Lesenswert?


von Brain 2.0 (Gast)


Lesenswert?

Tuck I. schrieb:
> GPIO0 und 2 kann man sicher für i2c hernehmen

Dann ist deine Beschreibung im Eingangspost auch irreführend. Da habe 
ich UART zum Atmega rausgelesen. I2C sollte so funktionieren.

von Tuck I. (tuckito)


Lesenswert?

ESP <- i2c -> Arduino
ESP TX -> nur für Serial Out. Völlig unabhängig von der Verbindung zum 
Arduino.

Brain 2.0 schrieb:
> Da habe
> ich UART zum Atmega rausgelesen.

Tuck I. schrieb:
> ich möche den Status des ESP über dessen TX-Pin auslesen, bekomme aber
> nur verschiedene Sonderzeichen oder ausschliesslich Fragezeichen
> angezeigt.

Es geht um den TX Pin am ESP, den ich für die Serielle Ausgabe nutzen 
will um etwas "zu sehen".

Wenn ich das nächste Mal sowas wie den i2c Teil weglasse, dann gibts 
wieder mecker warum nciht alles angegeben wurde :-)

von EAF (Gast)


Lesenswert?

Tuck I. schrieb:
> GPIO0 und 2 kann man sicher für i2c hernehmen.

Ah, ja ....
Interessante Taktik!
Über die serielle reden, einen UART Pegelwander malen, aber I2C 
verwenden

Dann auch noch:
Es fehlt das Wichtigste im Plan!
Das was die Probleme macht.
Der Anschluss des TTL USB Wandlers.

Ich behaupte:
Dort hast du vergessen GND zu verbinden, deswegen siehts du auch was, 
wenn der Arduino am PC hängt. Und siehst nix/Schrott, wenn der Arduino 
vom PC ab ist.

von Stefan F. (Gast)


Lesenswert?

Deine Beschriftung Rx und Tx und die Begriffe uart, FTDI und 
Baudrate deuten auf UART Kommunikation hin. Jeder muss also davon 
ausgehen, dass deine beiden Mikrocontroller per UART kommunizieren.

Nun soll das jedoch eine I2C Kommunikation sein, aber um die geht es 
gar nicht. Sondern es geht um eine UART Kommunikation, die in deinem 
Schaltplan nicht eingezeichnet ist.

Willst du uns verarschen?

Hast du den GND Anschluss deines FTDI Adapters mit deiner Schaltung 
verbunden? Sind die Kabel auch wirklich heile (nicht innen drin 
gebrochen)?

von EAF (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Nun soll es im I²C gehen.
Nein, das verstehst du nicht, es geht sehr wohl um die UART!
Er zeigt nur nicht das was die Probleme macht, die UART Verbindung, 
sondern ganz was anderes, die I2C Verbindung.
Das mit der Levelshifter Beschriftung ist natürlich auch nur eine 
Nebelkerze.
Ihm sieht da seinen I2C LEvelshifter vor sich liegen.
Aber wie dürfen uns mit einem gemalten UART Levelshifter begnügen.

von Stefan F. (Gast)


Lesenswert?

Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz.

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz.

Die hochohmigen Pull-Ups mit gerade mal 10kΩ bei 3.3V sind daran sicher 
nicht ganz unbeteiligt. Ein Oszi verrät mehr.

von Brain 2.0 (Gast)


Lesenswert?

Tuck I. schrieb:
> Wenn ich das nächste Mal sowas wie den i2c Teil weglasse, dann gibts
> wieder mecker warum nciht alles angegeben wurde :-)

Die gibt es nur , wenn deine Beschreibung unverständlich ist.
Und das ist hier def. der Fall.
Ein deutliches Schaltbild wäre da sehr hilfreich.

von hard worker (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Diese Levelshifter funktionieren übrigens nicht zuverlässig mit 400 kHz.

Da diese Levelshifter auf der Basis der BSS138 FETs aufgebaut
sind gibt es keinen Grund warum sie in ihrer Funktion auf
400KHz oder weniger beschränkt sein sollen. Bei I2C sind allein
die Pullups massgeblich für die maximale Frequenz verantwortlich.
Bei höherfrequenten Anwendungen wie SPI sind nur die (niedrigen)
Längswiderstände (die die FETs bilden) die frequenzbeschränkenden
Elemente einer Pegelanpassung.

Aber sicherlich liegt die Frequenzgrenze der BSS138-Levelshifter
nicht bei 400KHz oder darunter. Herr Frings.

von Tuck I. (tuckito)


Lesenswert?

Ich denke ich verstehe die Aufregung, ich werde den Plan korrigieren.
"I2C-sicher" hatte ich gerade bei Reichelt gelesen. Ich war die ganze 
Zeit davon ausgegangen, dass er einfach dafür gedacht ist. War wohl ein 
Irrtum.
Wegen den Pullups und der Frequenz: Ich habe beim ESP und den Arduinos 
die internen Pullups deaktiviert, weil ich ohne irgendwas zu berechnen 
davon ausgegangen war, dass die 10K Ohm auf beiden Seiten ausreichen.
Meine Verbindung funktioniert nur bei 100KHz.
Aber wie gesagt, mir geht es darum, dass ich am ESP mit einem FTDI 
Adapter ncihts auslesen kann.
Ich bin dann mal am Plan.

von Wolfgang (Gast)


Lesenswert?

Tuck I. schrieb:
> Ich habe beim ESP und den Arduinos
> die internen Pullups deaktiviert, weil ich ohne irgendwas zu berechnen
> davon ausgegangen war, dass die 10K Ohm auf beiden Seiten ausreichen.

S.55
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Ich war die ganze Zeit davon ausgegangen, dass er einfach
> dafür gedacht ist. War wohl ein Irrtum.

Dein Irrtum besteht darin dass du meinst der Levelshifter sei
auf irgendeine Art von Schnittstelle beschränkt. Das ist nicht
der Fall, jedenfalls nicht bei zwei Teilnehmern mit 3.3V/5V
Digitalpegeln.

Wenn etwas nicht funktioniert liegt es an etwas Anderem.

Ausserdem scheinst du meinen Beitrag vorher nicht gelesen
oder nicht verstanden zu haben.

von Tuck I. (tuckito)


Angehängte Dateien:

Lesenswert?

hard worker schrieb:
> Ausserdem scheinst du meinen Beitrag vorher nicht gelesen
> oder nicht verstanden zu haben.

Ich gehe davon aus du meinst das Thema mit den Elkos?

Da der erste Plan so herrlich war, habe ich einen neuen Plan erstellt.
Ist der übersichtlicher? Ich meine das ernst, ja der erste Plan war 
hingeschludert.
Das ist der aktuelle Zustand.

von Tuck I. (tuckito)


Lesenswert?

Tuck I. schrieb:
> Ist der übersichtlicher?

EAF schrieb:
> Ich behaupte:
> Dort hast du vergessen GND zu verbinden, deswegen siehts du auch was,
> wenn der Arduino am PC hängt. Und siehst nix/Schrott, wenn der Arduino
> vom PC ab ist.

Stefan ⛄ F. schrieb:
> Hast du den GND Anschluss deines FTDI Adapters mit deiner Schaltung
> verbunden?

Holy Cow
Es funktioniert.....

von EAF (Gast)


Lesenswert?

Tuck I. schrieb:
> Ist der übersichtlicher?

Dein FTDI hat keine GND Verbindung!

von Tuck I. (tuckito)


Lesenswert?

Eigentlich hatte er die, aber die Klemme lag daneben.
Die eine Verbindung zum FTDI im Plan und das erneute Querlesen hat mich 
dann doch darauf gebracht.

: Bearbeitet durch User
von hard worker (Gast)


Lesenswert?

Tuck I. schrieb:
> Ich gehe davon aus du meinst das Thema mit den Elkos?

Was ist an "meinen Beitrag vorher" nicht zu verstehen?

von Manfred (Gast)


Lesenswert?

Tuck I. schrieb:
> einen neuen Plan erstellt.
> Ist der übersichtlicher?

Diese Darstellung mit mehreren Kästchen ohne Verbindungswege ist modern, 
ich kann sie nicht leiden. Für mich ist Deine erste Darstellung, die Du 
"hingeschludert" nennst, verständlicher.

von EAF (Gast)


Lesenswert?

Manfred schrieb:
> Für mich ist Deine erste Darstellung, die Du
> "hingeschludert" nennst, verständlicher.

Beiden Darstellungen ist gemeinsam, dass sie die Problemstelle geschickt 
ausblenden. Auf diesem Wege war es dann möglich, die Verwirrung, auf ein 
solche hohes Niveau hin zu optimieren.

von Helmut -. (dc3yc)


Lesenswert?

Ich würde noch CH-PD und RST auf definiertes Potential legen und nicht 
offen lassen.

von EAF (Gast)


Lesenswert?

Helmut -. schrieb:
> Ich würde noch CH-PD und RST auf definiertes Potential legen und nicht
> offen lassen.

Alle relevanten Leitungen sind auf dem 01 Board mit 12K Pullup oder 
Pulldown versehen.
Das sollte reichen.
Kann allerdings auch nicht schaden, diese noch etwas "stronger" zu 
machen, gerade bei längeren Anschlusskabeln.

von Oliver S. (phetty)


Lesenswert?

Mal eine laienhafte blöde Frage:
Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur 
als Funkmodul zu benutzen?

von my2ct (Gast)


Lesenswert?

Oliver S. schrieb:
> Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur
> als Funkmodul zu benutzen?

Das ist hier gar nicht das Thema. Es geht um die serielle Verbindung 
zwischen ESP8266 und PC über USB

von EAF (Gast)


Lesenswert?

Oliver S. schrieb:
> Mal eine laienhafte blöde Frage:
> Wieso lässt du deinen Code nicht direkt auf dem ESP laufen statt ihn nur
> als Funkmodul zu benutzen?
Deine Fantasie geht mit dir durch.

Das ist gar nicht der Fall!
Wenn der ESP nur ein Funkmodul wäre, z.B. mit der AT Software, dann 
bräuchte/könnte er keine I2C Anbindung.

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.