Forum: Mikrocontroller und Digitale Elektronik Einstecken eines USB-Adapter lässt µC abstürzen.


von Peter (wokinloksar)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Schaltung mit einem Atmega328P (Arduino Pro Mini), die mit 
einem eigenen Netzteil versorgt wird. Ein MIC29302A versorgt die gesamte 
Schaltung. Zwischen den beiden Steckleisten, in die das Board 
eingesteckt wird, ist ein 100n Kondensator und ein 10µ Elko direkt 
zwischen GND und Vcc.
Unweit des Boards (2cm)  gibt es dann noch einen 100µ Elko.
Der MIC29302A hat die im Datenblatt empfohlenen 10µ und 22µ 
Tantal-Kondensatoren direkt an Ein- und Ausgang.

Zu Diagnosezwecken wird gelegentlich ein USB-Serial-Adapter 
angeschlossen.
Dabei stürzt der µC hin und wieder ab.

Ich habe mir die Sache nun mal angesehen, und stelle fest, dass im 
Moment des Einsteckens, vielmehr im Moment, wenn die Masse des 
USB-Wandlers Verbindung zur Schaltung bekommt, starke Spannungspeaks 
auftreten.
Obwohl das Steckernetzteil, das die Schaltung versorgt und der PC, über 
den die seriellen Daten ausgelesen werden sollen in der selben 
Steckdosenleiste stecken, messe ich zwischen der Schaltungsmasse und der 
USB-Masse 120V.

Das Oszi zeigt, dass die Spannung zunächst um 6V, manchmal auch um 8V 
ansteigt oder abfällt, um sich dann innerhalb von 1µSec einzupegeln.

Bei jedem zweiten oder dritten Einstecken stürzt der µC ab.

Das Oszi wurde direkt an den GND und Vcc Pins des Arduino angeschlossen.
Es spielt auch keine Rolle, ob der Adapter zuerst an das USB-Kabel 
angeschlossen wird und dann der sechspolige Stecker auf die Steckleiste 
der Schaltung gesteckt wird, oder ob der Wandler erst mit der Schaltung 
verbunden wird und dann das USB-Kabel eingesteckt wird.
Das Problem lässt sich auch dadurch nachstellen, dass der USB Stecker 
mit seinem Masserand einfach an eine beliebige Massestelle der Schaltung 
herangeführt wird.

Die Bilder der Peaks zeigen auch, dass es entweder einen 
Spannungsanstieg oder einen Spannungsabfall gibt, was vermutlich daran 
liegt, dass entweder eine positive oder negative Halbwelle der 
Brummspannung auf Masse einwirkt.

Wie kann ich das in den Griff bekommen? Ich vermute mal mit irgendeiner 
Hoch-/Tiefpasskombination am USB-Massepin. Ich bin hier aber nicht 
besonders bewandert.
von Nemopuk (nemopuk)


Lesenswert?

Das unterschiedliche GND Potential kommt vermutlich von den 
Entstör-Kondensatoren in einem Netzteil. Das ist erst mal normal, 
deswegen haben USB Stecker eine vorauseilende Masse, die das ableitet.

Nicht in Ordnung ist, dass dein Mikrocontroller dabei abstürzt. Offenbar 
bewirkt der Stromfluss auf der GND Leitung irgendwo einen unzulässigen 
Spannungsabfall.

Zeige uns den Schaltplan, das Layout und Fotos von der Leitungsführung. 
Dann kann dir wahrscheinlich geholfen werden.

Sagt dir "Sternförmige Leitungsführung" etwas? Wenn nicht, google 
danach.
: Bearbeitet durch User
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Ein USB DVB-T Stick liess bei mir auch den PC abstuerzen. Schuld war der 
Inrush-Current. Begrenzt habe ich den mit 1m USB-Verlaenderungskabel vom 
TEDI.

Vielleicht ist das bei Dir auch so.
von Helmut -. (dc3yc)


Lesenswert?

Peter schrieb:
> Obwohl das Steckernetzteil, das die Schaltung versorgt und der PC, über
> den die seriellen Daten ausgelesen werden sollen in der selben
> Steckdosenleiste stecken, messe ich zwischen der Schaltungsmasse und der
> USB-Masse 120V.

Hast du diese Spannung niederohmig gemessen (z.B. mit einem Duspol)? 
Wenn nein, sind das Leckströme/spannungen der Entstör-Cs. Die würde bei 
niederohmiger Messung zusammenbrechen.
von Nemopuk (nemopuk)


Lesenswert?

Dieter D. schrieb:
> Schuld war der Inrush-Current.
> Vielleicht ist das bei Dir auch so.

Wohl kaum, weil:

Peter schrieb:
> Das Problem lässt sich auch dadurch nachstellen, dass der USB Stecker
> mit seinem Masserand einfach an eine beliebige Massestelle der Schaltung
> herangeführt wird.
von Bauform B. (bauformb)


Lesenswert?

Der Fehler liegt ganz klar bei den Netzteilen ohne PE-Anschluß. Ja, die 
sind billiger und in einem von 1000 exotischen Spezialfall stört die 
PE-Verbindung, aber normalerweise ist mit PE alles viel einfacher.
: Bearbeitet durch User
von Peter (wokinloksar)


Lesenswert?

Helmut -. schrieb:
> Hast du diese Spannung niederohmig gemessen (z.B. mit einem Duspol)?
> Wenn nein, sind das Leckströme/spannungen der Entstör-Cs. Die würde bei
> niederohmiger Messung zusammenbrechen.

Nein, hochohmig. Da ich auch nichts spüre, wenn ich beide Massen mit den 
Händen berühre, ist schon klar, dass die Spannung niederohmig 
zusammenbricht.
Sie reicht jedoch aus, um zu den Spannungspeaks zu kommen.
Hab nun spasseshalber doch mal einen Duspol genommen. Ohne die Prüftaste 
zu drücken, leuchtet die Glimmlampe, die beim Drücken verlöscht.

Das Drücken löst allerdings auch keinen Spannungspeak aus. Habe nun mal 
einen Pol vom Duspol mit Krokoklemmen an die Schaltungsmasse geklemmt, 
den anderen an den unverbundenen USB-Stecker.  Wenn ich den nun 
anstecke, während der Duspol bereits niederohmig brückt, geht auch alles 
klar.

Demnach könnte eine Lösung sein die Gehäusemasse der USB Verbindung auf 
einer Seite niederohmig mit der jeweiligen Masse zu verbinden, so dass 
beim Einstecken zunächst die Masse niederohmig verbunden wird, und erst 
mit dem Verbinden der inneren Massepins die Verbindung ohne Widerstand 
stattfindet.
von Nemopuk (nemopuk)


Lesenswert?

Dein Test mit dem Dyspol bestätigt meine Annahme. Schau dir meinen 
Beitrag an und beantworte ihn.
Beitrag "Re: Einstecken eines USB-Adapter lässt µC abstürzen."

Peter schrieb:
> Demnach könnte eine Lösung sein...

Das wäre ein Workaround, der die eigentliche Fehlerursache nicht behebt. 
Ich befürchte, dass du bald noch weitere Instabilitäten haben wirst, 
solange die eigentliche Ursache nicht behoben ist.
: Bearbeitet durch User
von Peter (wokinloksar)


Lesenswert?

Nemopuk schrieb:
> Zeige uns den Schaltplan, das Layout und Fotos von der Leitungsführung.
> Dann kann dir wahrscheinlich geholfen werden.

Ist ein älteres Projekt. Die Schaltung ist bis auf die seriellen Pins in 
2k-Silikon vergossen, weil im Ausseneinsatz.  Schaltplan müsste ich 
suchen, was ich da noch an Notizen habe.

Mir geht es hier nun einzig darum, den µC nicht abstürzen zu lassen, 
bevor ich Daten ausgelesen habe.

Mit dem voreilenden Widerstand am Gehäuse habe ich wohl bereits auch 
einen Lösungsansatz.
von Peter (wokinloksar)


Lesenswert?

Bauform B. schrieb:
> Der Fehler liegt ganz klar bei den Netzteilen ohne PE-Anschluß. Ja, die
> sind billiger und in einem von 1000 exotischen Spezialfall stört die
> PE-Verbindung, aber normalerweise ist mit PE alles viel einfacher.

Auch das löst tatsächlich das Problem. Bin nun testweise auf ein altes 
Notebook-Netzteil umgestiegen, das mit 16V noch mit dem Spannungsregler 
verträglich ist. Das hat PE, wie auch der PC, an den das 
USB-Verlängerungskabel führt. Mal sehen, was ich an 7-10V Netzteilen mit 
PE finden kann.
von Nemopuk (nemopuk)


Lesenswert?

Peter schrieb:
> Die Schaltung ist bis auf die seriellen Pins in 2k-Silikon vergossen,
> weil im Ausseneinsatz.

Vielleicht kannst du wenigstens den GND Eingang (Netzteil) mit dem GND 
Ausgang (USB) über einen dicken Draht verbinden. Dann fließt der 
Entladestrom beim Verbinden an der Schaltung vorbei.
von Jens B. (dasjens)


Lesenswert?

Peter schrieb:

> Hab nun spasseshalber doch mal einen Duspol genommen. Ohne die Prüftaste
> zu drücken, leuchtet die Glimmlampe, die beim Drücken verlöscht.
>
> Das Drücken löst allerdings auch keinen Spannungspeak aus.

Wie denn auch, Du verbindest ja die beiden Punkte.
von Karl B. (gustav)


Lesenswert?

Bei mir reicht es, zum Beispiel im Testaufbau eines LCD den Pin Enable 
mit der Schraubenzieherspitze anzutippen, um ein Weiterrücken des 
Cursors mit Anzeige von "Hieroglyphen" zu produzieren.
Dieser Eingang ist darauf optimiert, auf Flanken zu reagieren. Ein 
sogenater "transition state input". Also völlig normal.

Genauso könnte es sich beim Arduino Prozessor verhalten. Er reagiert 
empfindlich auf Schaltflanken jeglicher Art, die letztendlich das 
Programm aus dem Takt bringen können, seien sie nun auf induktivem Wege 
über Leitungen auf die Ports gelangt, oder auf der Speisespannung 
kurzzeitig vorhanden.
Hier spielt das Schaltungslayout auch eine entscheidende Rolle.

Sowas war früher bei Commodore- oder Amiga-Computern auch sehr oft 
festzustellen. Da brauchte man nur das Blechgehäuse eines 
Peripheriegerätes, einer "Bastelschaltung", mit dem Schraubenzieher 
anzutippen, und der Absturz folgte.
Bin eigentlich sehr zufrieden mit den Arduinos. Habe festgestellt, dass 
die GPS-Uhr sogar mit 3 AA-Batterien läuft. Da ist zwischen USB-5V und 
Prozessor 5V noch eine Schottky-Diode als Verpolschutz verbaut. Obwohl 
ich "hinter" dieser Diode anschließe, funktioniert die Schaltung ohne 
Probleme mit nur 4,5V statt der geforderten 5V. Und wenn ich den 
Schiebeschalter
für die Spannungsversorgung kurz hintereinander betätige, stürzt mit 
nichts ab. (Keine Brownout Level detection)

Evtl. hast Du bei Deinem Programm bei den Fuses die Brownout-Detection 
eingestellt?

Mit den SNTs bin ich vorsichtiger geworden, seitdem ich Mosfets damit 
gekillt hatte.(Leider ESD-Schutz 'mal nicht angewendet.) Habe mir für 
die offen fliegende Verdrahtung Trafo Netzeile gebastelt mit und ohne 
Stabilisierung. Oder arbeite ganz mit Batterien oder LiIons.

Aber auch bei Anschluss an den PC über USB, woher auch der Arduino seine 
5V bezieht, hat es noch keinen Absturz geschilderter Art gegeben.

Die Shields bieten ja zumindest zwei Möglichkeiten der 
Spannungsversorgung.
Ein Anschluss hat ja einen Stabilisator schon eingebaut. Bei der anderen 
Auswahl muss die Spannung bereits stabilisiert sein.
Evtl. ist da etwas vertauscht worden. So schnell gehen die Prozessoren 
nicht kaputt, dass man das sofort merken würde.

ciao
gustav
: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

Wenn du da ein Netzteil mit Eurostecker/Schutzklasse 2 hast dann schwebt 
das Potential am Ausgang, du könntest GND deiner Schaltung hochohmig 
(>100kOhm mit PE verbinden) damit du auf dem gleichen Potential liegst. 
Als galvanisch getrennt dürfte es dann aber nicht mehr gelten. Bei 
Schuztkleinspannung muss der Isolationswiderstand 250 kOhm betragen 
ansonsten 1 MOhm.

Ein Netzteil mit Schuko Stecker leitet meist das hochfrequente Zeug über 
einen Kondensator gegen PE ab. Verhindert jetzt nicht dein Problem, ist 
aber abstrahlungsmäßig besser.

Aber generell solltest du deine Schaltung so auslegen, das die mit 
diesem kurzen Impuls zurechtkommt.

Eine Schottky Diode von GND nach VCC würde den negativen Impuls schonmal 
auf -0,3V begrenzen und der Rest dürfte mit einer Speicherdrossel 
zwischen 4,7 µH und 22 µH abzufangen sein.

Ansonsten prüfe mal die Resetschaltung, nicht das die zu hochohmig 
ausgelegt ist hier kannst du ruhig 4,7 kOhm und 100 nF.

Brownout Detektor kannst du ja auch noch runtersetzen nicht das der bei 
4,7V anschlägt und der µC auch noch mit 2,7V zurechtkommt.
von Manfred P. (pruckelfred)


Lesenswert?

Peter schrieb:
> Ist ein älteres Projekt. Die Schaltung ist bis auf die seriellen Pins in
> 2k-Silikon vergossen, weil im Ausseneinsatz.  Schaltplan müsste ich
> suchen, was ich da noch an Notizen habe.

Wenn Du das deshalb nicht ändern kannst, hilft und schützt eine 
galvansche Trennung mit ADuM3160. Gibt es als fertige Boards um 10 Euro, 
siehe vor 9 Jahren:

Beitrag "Re: Benötigt man für µC Boards (Arduino, Launchpad, Raspberry Pi) eine galvanische Trennung für USB?"
von Gerhard O. (gerhard_)


Lesenswert?

Moin,

Bei einem STM32 Sensor Firmenprojekt vor langer Zeit gab es zwischen PC 
und Messgeräten arge Stromschleifen die vernünftige Analog Messungen und 
Untersuchungen mit Netz verbundenen Messgeräten (Oszi) verhinderten. Ich 
half mir damals die serielle Diagnostik Schnittstelle mittels Bluetooth 
und HC05 drahtlos zu machen und die Probleme waren dann alle weg.

Gerhard
: Bearbeitet durch User
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.