Forum: Mikrocontroller und Digitale Elektronik Probleme mit Netzteilen


von Sascha B. (bruegae)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein Problem mit der Stromversorgung einer meiner 
selbstgelöteten Platinen. Die Platine soll direkt an eine passende 
Stromversorgung angeschlossen werden. Ich möchte keinen Spannungswandler 
verwenden, der Spannung in Wärmer verheizt. Es soll eine "IoT" Platine 
werden, die 24/7 läuft und möglichst wenig Strom verbraucht.

Ich habe ein Netzteil (1), regelbar mit 3V/1,2A und ein zweites (2) mit 
fixen 3,3V/1A. Mit (1) funktioniert meine Platine wunderbar, mit (2) 
startet die Platine maximal jedes zweite Mal nach dem Einstecken der 
Stromversorgung sauber.

Zu meiner Platine (siehe auch angehängtes Bild):
-ATmeag32 mit 100nF und 1µF Keramik direkt an GND/VCC, 10µF Elko auch 
möglichst dicht dran.
- 2 Sensoren: Temperatur MCP9808 und Luftfeuchtigkeit SHT31
- Ein ESP8266-01 WLan Modus. Das ist ja ziemlich empfindlich, daher hat 
es ein 100µF Elko direkt an VCC bekommen.

Ich vermute, dass der ATmega nicht sauber startet. Der ESP macht anhand 
des blinkens seiner Activity-LED nicht den eindruck, wie als würde er 
abschmieren und dauernd neustarten.

Hat jemand eine Idee, was das Problem sein könnte? Netzteile "auf gut 
Glück" kaufen ist nämlich doof...

von Stefan F. (Gast)


Lesenswert?

Ich hatte mal ein ähnliches Problem in einer sehr ähnlichen Anwendung: 
Atmega 168 mit ESP-01 Modul und ein Handyladegerät + LF33CV 
Spannungsregler.

Folgendermaßen habe ich es gelöst: Beim AVR habe ich den Brown-Out 
Detektor eingerichtet und die längste mögliche Startup-Time per Fuse 
eingerichtet. Dadurch statete der AVR zuverlässig.

Beim ESP habe ich den Reset Eingang mit einem AVR Pin verbunden. Auf dem 
AVR startet das Programm, macht eine Sekunde Sleep und erst danach darf 
der ESP starten.

Die Beschaltung des reset Pins macht es mir außerdme möglich, den ESP zu 
überwachen und zu resetten, falls er mal hängt. Bei einer frühen 
Firmware Version war das mehrmals täglich nötig. Die letzten Module, die 
ich im vergangenen Sommer gekauft hatte, leifen aber mehr als eine Woche 
ohne Reset durch. Danach habe ich aufgehört, sie zu beobachten.

Wenn du sicher bist, dass bei dir nur der AVR zickt, dann müsste die 
Kombination "Brown-Out" + längste Startp-Time genügen. Falls nicht, 
könntest du dessen Reset Pin mit 10k Ohm + 10µF beschalten, damit er 
noch später startet. Aber mach einen Jumper dazwischen, denn manche ISP 
programmer versagen, wenn am Reset Pin ein dicker Elko hängt.

von ESPduino (Gast)


Lesenswert?

Also seit die Arduino IDE die ESP (mit Plugin) direkt unterstützt und 
man das nur noch im Bibliotheksverwalter zum download markieren muss 
programmiere ich die ESP immer direkt. Der hat um längen mehr Power als 
der AVR der ihn sonst per Terminal steuert und gerade bei kleinen 
Projekten braucht man auch nicht mehr IO-Pins...

von Manfred (Gast)


Lesenswert?

Sascha B. schrieb:
> startet die Platine maximal jedes zweite Mal nach dem Einstecken der
> Stromversorgung sauber.
Ich verstehe nicht, warum Du die Lötseite spiegelverkehrt abbilden 
musstest.

Wie ist der Reset-Pin vom AT328 beschaltet - mir scheint er offen zu 
sein?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Schlimmer noch: er hat am ISP Stecker weder GND noch VCC angeschlossen!

von Thomas E. (thomase)


Lesenswert?

Sascha B. schrieb:
> -ATmeag32 mit 100nF und 1µF Keramik direkt an GND/VCC, 10µF Elko auch
> möglichst dicht dran.

Da fehlt aber noch einer auf der anderen Seite an AVcc.

Sascha B. schrieb:
> Ich habe ein Netzteil (1), regelbar mit 3V/1,2A

Der Atmega32 läuft nur mit >4,5V.

von Dietrich L. (dietrichl)


Lesenswert?

Thomas E. schrieb:
> Der Atmega32 läuft nur mit >4,5V.

Das Datenblatt sagt etwas anders:

DC Characteristics:
TA = -40°C to 85°C, VCC = 2.7V to 5.5V

Lediglich bei >8MHz gilt >4,5V, Sascha verwendet aber einen 3,6864MHz 
Quarz.

von Cyblord -. (cyblord)


Lesenswert?

Nein im Datenblatt steht eindeutig:

Operating Voltages
– 2.7V - 5.5V for ATmega32L
– 4.5V - 5.5V for ATmega32

Wenn er also nicht die L Variante hat, gehen 3,3V nicht.

> DC Characteristics:
> TA = -40°C to 85°C, VCC = 2.7V to 5.5V


Das was du da zitierst ist die Stromaufnahme, genauer die Bedingungen 
unter denen sie gemessen wurde. Das sagt NICHTS über die Funktionalität 
unter diesen Bedingungen aus.

: Bearbeitet durch User
von Pete K. (pete77)


Lesenswert?

AREF beschaltet?

Liefert das Netzteil denn auch "gesiebte/stabile" Gleichspannung?

Wie hoch ist die Spannung, auf der 3/3.3V Seite, wenn Du das Netzteil 
anschließt? Evtl. kann Dein Netzteil in Wirklichkeit nur 300mA.

Kabel getauscht?

von Cyblord -. (cyblord)


Lesenswert?

Und WENN der Controller dann mal die korrekte Spannung erhalten hat, 
diese durch MESSEN verifizieren und auch den RESET Pin messen und 
testweise hart auf VCC legen.

von Pete K. (pete77)


Lesenswert?

Sascha B. schrieb:
> Ich habe ein Netzteil (1), regelbar mit 3V/1,2A und ein zweites (2) mit
> fixen 3,3V/1A. Mit (1) funktioniert meine Platine wunderbar, mit (2)
> startet die Platine maximal jedes zweite Mal nach dem Einstecken der
> Stromversorgung sauber.

Also wenn die Platine mit 3V läuft und mit 3V3 nicht, dann denke ich 
nicht, dass wir hier ein Problem mit "korrekten Spannungen" haben.

von (prx) A. K. (prx)


Lesenswert?

Was auf dem Netzteil draufsteht ist nicht zwangsläufig auch das, was aus 
dem Netzteil rauskommt.

von Dietrich L. (dietrichl)


Lesenswert?

Cyblord -. schrieb:
> Nein im Datenblatt steht eindeutig:
>
> Operating Voltages
> – 2.7V - 5.5V for ATmega32L
> – 4.5V - 5.5V for ATmega32

Ja, das habe ich jetzt auf der ersten Seite unter "Features" auch 
gefunden. Komischerweise habe ich aber unter "Electrical 
Characteristics" nichts dazu gefunden.

Cyblord -. schrieb:
> Das was du da zitierst ist die Stromaufnahme, genauer die Bedingungen
> unter denen sie gemessen wurde. Das sagt NICHTS über die Funktionalität
> unter diesen Bedingungen aus.

Das ist aber äußerst merkwürdig, dass das Datenblatt Angaben macht zu 
einer Betriebsart, bei der µC nicht mehr funktionieren muss...

von R. R. (elec-lisper)


Lesenswert?

Dietrich L. schrieb:
> Cyblord -. schrieb:
>> Das was du da zitierst ist die Stromaufnahme, genauer die Bedingungen
>> unter denen sie gemessen wurde. Das sagt NICHTS über die Funktionalität
>> unter diesen Bedingungen aus.
>
> Das ist aber äußerst merkwürdig, dass das Datenblatt Angaben macht zu
> einer Betriebsart, bei der µC nicht mehr funktionieren muss...

Noch dazu steht ja drüber:
1
TA=-40°C to 85°C, VCC = 2.7V to 5.5V (Unless Otherwise Noted)
2
                                     ^^^^^^^^^^^^^^^^^^^^^^^^

Und Icc wurde bei Atmega32 (ohne L) immer nur bei 5V gemessen
im Datenblatt.

von Sascha B. (bruegae)


Lesenswert?

Vielen Dank für die zahlreichen Antworten!

Stefan U. schrieb:
> Folgendermaßen habe ich es gelöst: Beim AVR habe ich den Brown-Out
> Detektor eingerichtet und die längste mögliche Startup-Time per Fuse
> eingerichtet. Dadurch statete der AVR zuverlässig.
>
> Beim ESP habe ich den Reset Eingang mit einem AVR Pin verbunden. Auf dem
> AVR startet das Programm, macht eine Sekunde Sleep und erst danach darf
> der ESP starten.

Die längste Startup-Time hatte ich schon. Nun habe ich noch ein sleep zu 
Beginn des Programms eingebaut und siehe da... die Platine startet 
zuverlässig! Ich brauche nichtmal den ESP am booten zu hindern.
Dieses Verhalten verstehe ich aber nun doch nicht ganz. Ist das Netzteil 
derart schwachbrüstig und die Kondensatoren ziehen noch derart Strom, 
dass der ATmega bei der Initialisierung (in meinem Fall UART und TWI, 
dann warten bis der ESP 'ready' ist) ins Straucheln gerät?


Thomas E. schrieb:
> Da fehlt aber noch einer auf der anderen Seite an AVcc.
Verständnisfrage von mir als nicht-Elektroniker: Warum kann AVcc nicht 
den Keramik auf der anderen Seite (1cm Kabel entfernt) mitnutzen?


Cyblord -. schrieb:
> Operating Voltages
> – 2.7V - 5.5V for ATmega32L
> – 4.5V - 5.5V for ATmega32
>
> Wenn er also nicht die L Variante hat, gehen 3,3V nicht.
Ich verwende tatsächlich die nicht-L Variante. Ich habe allerdings 
mehrfach im Internet gelesen, dass sich beide Varianten nicht 
unterscheiden sollen. Das deckt sich auch soweit mit meinen Erfahrungen.
Intel produziert auch nicht 50 verschiedene CPUs (innerhalb einer 
Generation), sondern nur wenige. Verschiedene Produkte entstehen dann 
durch testen der produzierten Chips. Ist bei der Produktion eines 
Quadcore mal ein Staubkorn auf den Wafer geraten und dadurch ein Core 
kaputt, wird noch ein Core per Software deaktiviert und das Teil als 
Dualcore verkauft. Gleiches gilt für die Taktfrequenz. Hier kauft man 
nur eine Zusicherung, dass mit einem bestimmten Takt die CPU dauerhaft 
läuft. Übertakten geht ja immer und von Chip zu Chip auch 
unterschiedlich viel. Man verkauft die CPUs wohl aus Qualitätsgründungen 
nicht mit Takt am Limit.
Lange Rede kurzer Sinn: Ich hatte bisher immer Glück mit meinen ATmegas 
non-L und 3,3V ;)

Pete K. schrieb:
> Wie hoch ist die Spannung, auf der 3/3.3V Seite
Wenn meine Platine läuft und der ESP fleißig sendet, zeigt schwankt mein 
Multimeter zwischen 3,2-3,3V. Eine andere Messmöglichkeit habe ich 
leider nicht.

von Stefan F. (Gast)


Lesenswert?

> Ist das Netzteil derart schwachbrüstig

Bei manchen Netzteilen steigt die Spannung im Einschaltmoment nicht 
kontinuierlich an, sondern sie steigt an, sackt dann wieder etwas ab, 
und steigt dann erneut an bis auf den Soll-Wert.

Wenn der AVR vor dem Absacker startet, kann es passieren, dass in der 
Abschaker-Phase die Spannung zu gering wird, als dass er vernünftig 
läuft.

Dein zusätzlicher SLeep am Anfang hat warscheinlich bewirkt, dass die 
Platine am Anfang noch nichts tut, was eine stabile Spannungversorgung 
erfordert.

von Dietrich L. (dietrichl)


Lesenswert?

Sascha B. schrieb:
> Die längste Startup-Time hatte ich schon. Nun habe ich noch ein sleep zu
> Beginn des Programms eingebaut und siehe da... die Platine startet
> zuverlässig!

Das riecht etwas mehr nach Zufallsergebnis als nach zuverlässiger 
Lösung.

Hast Du das eigentlich mal ausprobiert:

Stefan U. schrieb:
> Wenn du sicher bist, dass bei dir nur der AVR zickt, dann müsste die
> Kombination "Brown-Out" + längste Startp-Time genügen.

Denn "Brown-out Detection" ist genau für den Fall gemacht, um bei 
Spannungseinbrüchen von Vcc einen sauberen Reset zu erzeugen.

Aus dem Datenblatt:
"Brown-out Detection
ATmega32 has an On-chip Brown-out Detection (BOD) circuit for monitoring 
the VCC level during operation by comparing it to a fixed trigger level. 
The trigger level for the BOD can be selected by the fuse BODLEVEL to be 
2.7V (BODLEVEL unprogrammed), or 4.0V (BODLEVEL programmed). The trigger 
level has a hysteresis to ensure spike free Brown-out Detection. The 
hysteresis on the detection level should be interpreted as VBOT+ = VBOT 
+ VHYST/2 and VBOT- = VBOT - VHYST/2.
The BOD circuit can be enabled/disabled by the fuse BODEN. When the BOD 
is enabled (BODEN programmed), and VCC decreases to a value below the 
trigger level (VBOT- in Figure 19), the Brown-out Reset is immediately 
activated. When VCC increases above the trigger level (VBOT+ in Figure 
19), the delay counter starts the MCU after the Time-out period tTOUT 
has expired."

Du müsstest also über die Fuses BODEN einschalten und den BODLEVEL auf 
2,7V einstellen.

von Thomas E. (thomase)


Lesenswert?

Sascha B. schrieb:
> Verständnisfrage von mir als nicht-Elektroniker: Warum kann AVcc nicht
> den Keramik auf der anderen Seite (1cm Kabel entfernt) mitnutzen?

Weil der für die andere Seite ist. Stützkondensatoren gehören an jeden 
Spannungsanschluß. Stattdessen kannst du den völlig überflüssigen 1µF 
weglassen.

: Bearbeitet durch User
von Arduinoquäler (Gast)


Lesenswert?

Thomas E. schrieb:
> Warum kann AVcc nicht
>> den Keramik auf der anderen Seite (1cm Kabel entfernt) mitnutzen?

Ich denke das kann man ohne Probleme so machen.

Aber was mir gar nicht gefällt (und was vielleicht Probleme
macht) ist die fehlende kurze Anbindung der Quarz-Last-Cs
an die Prozessor Masse. Soweit ich das erkennen kann geht die
Masse dafür einen weiten Umweg.

Welchen Wert haben die Quarz-Last-Cs?

von Thomas E. (thomase)


Lesenswert?

Arduinoquäler schrieb:
> Ich denke das kann man ohne Probleme so machen.

Hier geht es nicht darum, was du denkst, sondern was zu einem 
vernünftigen Schaltungsdesign gehört. Auch auf Lochraster. Gerade auf 
Lochraster. Das ist Stand der Technik und keine Diskussionsgrundlage 
oder Verhandlungsmasse.

: Bearbeitet durch User
von Arduinoquäler (Gast)


Lesenswert?

Thomas E. schrieb:
> Hier geht es nicht darum, was du denkst, sondern was Stand der Technik
> ist.

Nö, es geht darum dass es bei ihm sicher funktioniert.
Und dieser Aspekt macht sicherlich keine Probleme.

Wenn du diskutieren willst was Stand der Technik ist dann
mach doch deinen eigenen Thread dazu auf.

von Thomas E. (thomase)


Lesenswert?

Arduinoquäler schrieb:
> Wenn du diskutieren willst was Stand der Technik ist dann
> mach doch deinen eigenen Thread dazu auf.

Darüber wird nicht diskutiert. Und mit dir schon gar nicht.

von Arduinoquäler (Gast)


Lesenswert?

Thomas E. schrieb:
> Das ist Stand der Technik und keine Diskussionsgrundlage
> oder Verhandlungsmasse.

Nachdem Motto: mach es so wie ich, der grosse Thomas Eckmann
es dir sage oder stirb.

von Thomas E. (thomase)


Lesenswert?

Arduinoquäler schrieb:
> Nachdem Motto: mach es so wie ich, der grosse Thomas Eckmann
> es dir sage oder stirb.

Du hast es verstanden.

von Cyblord -. (cyblord)


Lesenswert?

Sascha B. schrieb:

>> Wenn er also nicht die L Variante hat, gehen 3,3V nicht.
> Ich verwende tatsächlich die nicht-L Variante. Ich habe allerdings
> mehrfach im Internet gelesen [bla bla bla].

Wenn du den Controller absichtlich außerhalb der Spec nutzt, dann kann 
es gut gehen, aber bei dir geht es nicht gut also würde ich mir darum 
mal Gedanken machen.

WIE die Unterscheidung zustande kommt, brauchst du mir nicht erzählen. 
Nur warum ist dein non-L Typ ein solcher? Vielleicht weil er die Tests 
zum L-Typ nicht bestanden hat? Denk mal drüber nach.

Lange Rede kurzer Sinn, betreibe den Controller innerhalb seiner Specs 
und nutze einen L-Typ wenn du 3,3V hast oder lebe damit dass er evt. 
auch mal nicht geht, oder vielleicht auch nur bei 10 Grad Raumtemperatur 
mehr oder weniger rumzickt. Das kann leider alles passieren und dann 
schlägst du wieder hier auf.

von Thomas (kosmos)


Lesenswert?

oder nicht darauf getestet. Könnte auch sein das er keine 16 MHz 
geschaft hat und deswegen ein L wurde

von Sascha B. (bruegae)


Lesenswert?

Magnus M. schrieb:
> Schlimmer noch: er hat am ISP Stecker weder GND noch VCC
> angeschlossen!
GND am ISP hatte ich tatsächlich vergessen. Danke.


Dietrich L. schrieb:
> Das riecht etwas mehr nach Zufallsergebnis als nach zuverlässiger
> Lösung.
> Du müsstest also über die Fuses BODEN einschalten und den BODLEVEL auf
> 2,7V einstellen.
Ja, das Sleep stellt mich auch auch nicht 100% zufrieden, weil es eben 
nicht garantiert den Worst-Case abfängt. Ich habe nun noch den Brown-Out 
auf 2,7V aktiviert. Damit habe ich nun aber nun das Problem, dass der 
ATmega garnicht mehr startet. Falsch machen kann man da ja eigentlich 
nix... Aber scheinbar ja doch. :/ 3,3V liegen jedenfalls an Vcc an und 
da misst der Brown-Out laut Datenblatt.


Thomas E. schrieb:
> Weil der für die andere Seite ist. Stützkondensatoren gehören an jeden
> Spannungsanschluß. Stattdessen kannst du den völlig überflüssigen 1µF
> weglassen.
Gibt es ein gutes Buch (oder eine andere Quelle), das solche Grundlagen 
für Schaltungen erklärt? Am besten mit Beispielen und mit Erklärungen 
warum man das in dem jeweiligen Fall genau so macht.

von Sascha B. (bruegae)


Angehängte Dateien:

Lesenswert?

Arduinoquäler schrieb:
> Aber was mir gar nicht gefällt (und was vielleicht Probleme
> macht) ist die fehlende kurze Anbindung der Quarz-Last-Cs
> an die Prozessor Masse. Soweit ich das erkennen kann geht die
> Masse dafür einen weiten Umweg.
Ah, da lagen wahrscheinlich die Kabel ungünstig. Habe noch ein Bild 
angehängt. Kurzer gehts (fast) kaum.
Wobei ich das bisher auch nicht wusste, dass man darauf achten sollte. 
Wieder was gelernt. Danke :)

Arduinoquäler schrieb:
> Welchen Wert haben die Quarz-Last-Cs?
Die im Datenblatt verlangten 22pF.

von Stefan F. (Gast)


Lesenswert?

Besonders bei der GND Leitung und ganz besonders am Quarz sollte man 
Ring-  und Bogenförmige Leitungsverläufe vermiden. Besser alle GND 
Leitungen sternförmig an einem Punkt zusammen laufen lassen - soweit es 
machbar ist.

von Patrick (Gast)


Lesenswert?

Ich sehe da keinen Kondensator am Reset-Anschluss (für hardwaremäßigen 
Power-On-Reset), oder irre ich mich? Wenn du den ein wenig größer als 
die normalen 100n machst, hast du einen längeren Reset und kannst somit 
evtl. deine Probleme beseitigen

von BastlerRedbull (Gast)


Lesenswert?

Ich weiß nicht ob so ein Lochraster Drahtverhau wirklich das richtige 
ist. Die gekreuzten Leitungen streuen ganz gut in der Gegend herum. Bei 
den paar Bauteilen hat man noch schnell ein Layout erstellt. Grosse 
Masseflaechen und saubere Leiterbahnfuehrung.

Gruss

von R. R. (elec-lisper)


Lesenswert?

BastlerRedbull schrieb:
> Die gekreuzten Leitungen streuen ganz gut in der Gegend herum.

Das hängt ja eher von der Datenrate ab die er mit den Komponenten
fährt. Ich würde jetzt mal ganz naiv sagen, wenn er mit Datenraten
um die 9600 bit/s arbeitet, sollte das alles doch recht unkritisch sein?

: Bearbeitet durch User
von Sascha B. (bruegae)


Lesenswert?

Patrick schrieb:
> Ich sehe da keinen Kondensator am Reset-Anschluss (für hardwaremäßigen
> Power-On-Reset), oder irre ich mich?

Das rote ist es. 47nF

Robin R. schrieb:
> Ich würde jetzt mal ganz naiv sagen, wenn er mit Datenraten
> um die 9600 bit/s

Der ATmega unterhält sich mit dem ESP8266 mit 115200 baud.
Bisher hatte ich jedenfalls keine Probleme. Die Platine läuft (mit einem 
gescheiten Netzteil) stabil über Tage hinweg problemlos. Länger habe ich 
noch nicht getestet.

von Stefan F. (Gast)


Lesenswert?

> Ich weiß nicht ob so ein Lochraster Drahtverhau
> wirklich das richtige ist.

Es muss nicht immer eine Platine sein. Die ersten Computer waren voll 
von handgemachten Drahverhauen (schreibt man das so) und die hatten auch 
funktioniert.

von Harald W. (wilhelms)


Lesenswert?

Sascha B. schrieb:

> Gibt es ein gutes Buch (oder eine andere Quelle), das solche Grundlagen
> für Schaltungen erklärt?

Bücher sind nicht alles. Die meisten Menschen lernen Grundlagen
mit Hilfe einer einschlägigen Ausbildung. :-)

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.