Forum: Mikrocontroller und Digitale Elektronik Schaltung entwerfen: USB Daten und Stromleitungen erst aktivieren wenn externe 5V anliegen?


von Frank Z. (hardwarecop)


Lesenswert?

Hallo!

Für ein Projekt, dessen Steuerung ein Windows Programm über die USB 
Schnittstelle (Microcontroller: AVR; USB -> TTL Converter CH340G) 
übernimmt  und etwa 2-3 Ampere bei Vollast ziehen sollte suche ich eine 
Lösung, den Converter-Chip oder den USB Port nicht zu überlasten, falls 
nur ein USB-Stecker angeschlossen ist und nicht ein externes 
5V-Netzteil.

Aus Sicherheitsgründen - das wurde mir empfohlen auf EEStackexchange 
(das war mein erstes Problem: 
http://electronics.stackexchange.com/questions/185263/how-to-safely-connect-the-arduino-5v-pin-with-a-5v-wall-wart-and-usb-ttl-convert) 
, habe ich die 5V-Leitung des USB-Ports mit der ext. 5V eines Wall-Warts 
getrennt.

Meine Beobachtung ist bisher, dass wenn die ext. Stromversorgung weg 
ist, der Converter-Chip (logischerweise) noch komplett eingeschaltet 
ist, aber da VCC nirgendwo mit anderen Komponenten verbunden ist, der 
Rest der Schaltung versucht, 5V aus den Datenleitungen des Converters zu 
"drainen", so dass die Datenpins total überlastet werden - das ist 
sicherlich sehr ungesund, möglicherweise auch tödlich für den 
Converter-Chip.

Ich habe versucht, mit einem P-MOSFET die USB-Versorgungsspannung 
auszuschalten: Gate -> GND; Source USB-5V; Drain VCC des Converter-ICs. 
Funktioniert natürlich nicht, weil GND nicht getrennt wird. Invertiert 
N-Mosfet -> P-Mosfet funktioniert auch nicht. Es wird durchgeschaltet 
und der Converter bekommt seine 5V.


Frage: Mit welchem Schaltung(sansatz) kann ich sicherstellen, dass der 
USB-Converter aus ist, wenn keine externe 5V anliegen?

Oder könnt Ihr mir etwas anderes empfehlen, um die ICs auf der Platine, 
den Converter und den USB-Port des Rechners zu schützen - möglicherweise 
etwas komplett anderes?

Ein Schaltplan zum Projekt ist irrelevant - kann ich aber gerne 
Anhängen, falls es doch etwas bringen sollte.

Herzlichen Dank im Voraus für Antworten und Empfehlungen :)

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

Mach einen 10k Widerstand in die Leitung
uC-Tx zu CH340G-Rx. Dann sollte der Strom nicht mehr
reichen den am Leben zu halten.

von holger (Gast)


Lesenswert?

>Mach einen 10k Widerstand in die Leitung
>uC-Tx zu CH340G-Rx.

Upps, externe Spannung weg;) Also genau umgekehrt:

Mach einen 10k Widerstand in die Leitung
uC-Rx zu CH340G-Tx.

von jemand (Gast)


Lesenswert?

Die Datenpins kapazitiv einkoppeln? Soweit ich verstehe sind die 5V von 
USB eh schon außen vor (sprich nicht genutzt?).

von Frank Z. (hardwarecop)


Lesenswert?

holger schrieb:
> Mach einen 10k Widerstand in die Leitung
> uC-Tx zu CH340G-Rx. Dann sollte der Strom nicht mehr
> reichen den am Leben zu halten.

Danke Dir, Holger, für Deine Antwort!

"Schutzwiderstände" habe ich bereits im µC-Tx und Rx:

AVR Rx ----| 1K | ---- CH340G Tx
AVR Tx ----| 1K | ---- CH340G Rx

Ich stocke also einfach zusätzlich den CH340G TX -> AVR Rx Widerstand 
auf 10K?

Ergibt

AVR Rx ----| 10K | ---- CH340G Tx
AVR Tx ----| 1K | ---- CH340G Rx

Ich probiere das gleich mal aus!

: Bearbeitet durch User
von Frank Z. (hardwarecop)


Lesenswert?

jemand schrieb:
> Die Datenpins kapazitiv einkoppeln? Soweit ich verstehe sind die 5V von
> USB eh schon außen vor (sprich nicht genutzt?).

Ja, ich habe Befürchtungen, dass ein Kurzschluss entsteht wenn z.B. Ext. 
5V = 5.1V und PC USB = 4.9V. Außerdem könnte die USB-Schnittstelle 
niemals die gesamte Platine mit ihrem 500 mA versorgen - also habe ich 
die Verbindung einfach ganz aufgegeben so dass nur der Converter die 
USB-5V bekommt.

von Joachim B. (jar)


Lesenswert?

2 Dioden, eine vom USB in Richtung Arduino über FTDI möglicherweise und 
eine Diode von externen 5V zum Arduino.

so treffen sich die beiden 5V am Arduino und keine kann rückspeisen.

z.B. bei meinen wordclock

USB über FTDI oder direkt am Arduino kann den versorgen, dazu reicht es 
immer! aber zu den LEDs mit 4A Netzteil führt kein Weg die Diode sperrt.

Der Arduino läuft auch ohne USB weil er vom 5V 4A Netzteil über eine 
Diode Strom bekommt, klassische Dioden ODER Schaltung.

Wenn du vom USB die 5V trennst geht nix ohne externe Speisung.

: Bearbeitet durch User
von easylife (Gast)


Lesenswert?

versorge den ch340g einfach auch über das netzteil...?!

von jemand (Gast)


Lesenswert?

Also ganz verstehe ich das nicht... Die +5V vom USB versorgen garnichts? 
Dann koppel die 2 Datenleitungen von USB kapazitiv ein und alles ist 
gut?

von Frank Z. (hardwarecop)


Lesenswert?

Joachim B. schrieb:
> 2 Dioden, eine vom USB in Richtung Arduino über FTDI möglicherweise und
> eine Diode von externen 5V zum Arduino.
>
> so treffen sich die beiden 5V am Arduino und keine kann rückspeisen.
>
> z.B. bei meinen wordclock
>
> USB über FTDI oder direkt am Arduino kann den versorgen, dazu reicht es
> immer! aber zu den LEDs mit 4A Netzteil führt kein Weg die Diode sperrt.
>
> Der Arduino läuft auch ohne USB weil er vom 5V 4A Netzteil über eine
> Diode Strom bekommt, klassische Dioden ODER Schaltung.
>
> Wenn du vom USB die 5V trennst geht nix ohne externe Speisung.

@Joachim: Danke Dir für die Antwort bzw. für Deinen Vorschlag. Da ich 
nicht ganz kapiert habe wie ich genau jetzt die Diode anschließen soll, 
wäre es schön, wenn Du mir Deine Wordclock zeigst (Schaltung) - also wie 
Du das realisiert hast. Ich bin leider ziemlich unerfahren mit Dioden 
;-D
Ich habe ja in der Schaltung nicht nur nen Arduino IC sondern auch noch 
ne ganze Menge an ICs, die 5V benötigen vom ext. Netzteil.


jemand schrieb:
> Also ganz verstehe ich das nicht... Die +5V vom USB versorgen garnichts?
> Dann koppel die 2 Datenleitungen von USB kapazitiv ein und alles ist
> gut?

Kapazitiv koppeln, das höre ich fast zum ersten Mal. Wie könnte das denn 
hier gehen?

von Frank K. (fchk)


Lesenswert?

Eine einfache Möglichkeit besteht darin, USB plus CH340 galvanisch vom 
Rest zu trennen. Keine Masseschleifen, kein unzulässiger Stromfluss, 
alles sicher. Ein ADuM1402 würde für TXD+RXD+RTS+CTS reichen, ein 
Si8652ED-B-IS könnte zusätzlich noch ein Signal übertragen, dass die 
USB-Schnittstelle Strom hat und enumeriert worden ist (sofern der CH340 
so einen Pin hat).

Bei entsprechendem Layout (Luft- und Kriechstrecken beachten!) hat der 
Si8652ED-B-IS eine Spannungsfestigkeit von 5kV. Sollte reichen.

fchk

von easylife (Gast)


Lesenswert?

usb kapazitiv ist grober unfug. wenn der ch340 stromlos ist, fasst es 
die datenleitungen nicht an.

von jemand (Gast)


Lesenswert?

Kapazitiv einkoppeln: Einfach etwa 1µF (aus dem Bauch raus) Kerko 
(bspw.) in seriell in die Datenleitungen reinbauen. Vergleiche bspw. 
hier

https://www.pericom.com/assets/App-Note-Files/AN310.pdf

in figure 2, die coupling capacitors.

Hat den Vorteil, das nix mehr mit DC über deine DAtenleitungen ist.

von jemand (Gast)


Lesenswert?

easylife schrieb:
> usb kapazitiv ist grober unfug. wenn der ch340 stromlos ist, fasst
> es
> die datenleitungen nicht an.

Man kennt sein konkretes Problem nicht, ich würde davon ausgehen, dass 
hier ein Fehlverständnis von ihm vorliegt, aber technisch gesehen ist 
das weit von grobem Unfug entfernt.

Vllt macht sich der TO nochmal Gedanken wo die 2-3 A über die 
Datenleitungen herkommen sollen, klar ist mir das immer noch nicht. IdR 
sind Datenleitungen ja nur über Pull-Up/Down mit der Versorgung 
verbunden, die sollten alleine hochohmig genug sein zum strombegrenzen. 
Und 10k in der Datenleitung halte ich für eher gewagt,kommt abern 
atürlich auf Geschwindigkeit und Ströme an.

von Frank K. (fchk)


Lesenswert?

jemand schrieb:
> Kapazitiv einkoppeln: Einfach etwa 1µF (aus dem Bauch raus) Kerko
> (bspw.) in seriell in die Datenleitungen reinbauen. Vergleiche bspw.
> hier
>
> https://www.pericom.com/assets/App-Note-Files/AN310.pdf
>
> in figure 2, die coupling capacitors.
>
> Hat den Vorteil, das nix mehr mit DC über deine DAtenleitungen ist.

Das gilt nur für den USB3-Teil. USB2 ist nicht gleichspannungsfrei. 
Einfaches Beispiel: der 1.5k Widerstand an D+ oder D-, der ein 
Full/High-Speed oder ein Low-Speed Gerät signalisiert. Funktioniert mit 
kapazitiver Koppelung nicht.

fchk

von easylife (Gast)


Lesenswert?

usb 3 != 2 != 1

von Max D. (max_d)


Lesenswert?

Blöd nur, dass ne UART nich DC-frei is. Gibt lustige sporadische Fehler 
(oder quält wahlweise schön die parasitären Dioden in den Eingängen).
Optischer Koppler oder reiner Widerstand sind sinnvolle Lösungen.

von Frank Z. (hardwarecop)


Lesenswert?

jemand schrieb:
> easylife schrieb:
>> usb kapazitiv ist grober unfug. wenn der ch340 stromlos ist, fasst
>> es
>> die datenleitungen nicht an.
>
> Man kennt sein konkretes Problem nicht, ich würde davon ausgehen, dass
> hier ein Fehlverständnis von ihm vorliegt, aber technisch gesehen ist
> das weit von grobem Unfug entfernt.
>
> Vllt macht sich der TO nochmal Gedanken wo die 2-3 A über die
> Datenleitungen herkommen sollen, klar ist mir das immer noch nicht. IdR
> sind Datenleitungen ja nur über Pull-Up/Down mit der Versorgung
> verbunden, die sollten alleine hochohmig genug sein zum strombegrenzen.
> Und 10k in der Datenleitung halte ich für eher gewagt,kommt abern
> atürlich auf Geschwindigkeit und Ströme an.

2-3A über Datenleitungen? Gar nicht, die Stromversorgung sollte bis auf 
den CH340G ausschließlich über ein externes 5V-Netzteil erfolgen.

10K zwischen die Datenleitung zu hängen bringt nur, dass mein AVR nix 
mehr empfängt an Daten. Also wieder zurück zu 1K...

von jemand (Gast)


Lesenswert?

Frank K. schrieb:
> jemand schrieb:
>> Kapazitiv einkoppeln: Einfach etwa 1µF (aus dem Bauch raus) Kerko
>> (bspw.) in seriell in die Datenleitungen reinbauen. Vergleiche bspw.
>> hier
>>
>> https://www.pericom.com/assets/App-Note-Files/AN310.pdf
>>
>> in figure 2, die coupling capacitors.
>>
>> Hat den Vorteil, das nix mehr mit DC über deine DAtenleitungen ist.
>
> Das gilt nur für den USB3-Teil. USB2 ist nicht gleichspannungsfrei.
> Einfaches Beispiel: der 1.5k Widerstand an D+ oder D-, der ein
> Full/High-Speed oder ein Low-Speed Gerät signalisiert. Funktioniert mit
> kapazitiver Koppelung nicht.
>
> fchk

Sry, das ist korrekt, nicht bedacht... Vllt ist es zu spät für mich, ich 
sehe das Problem aktuell nicht?! Der CH340 läuft über USB Versorgung, ok 
soweit. Der Rest über externes NEtzteil, einzige Verbindung zwischen uC 
und CH340 sind RX/TX in denen aber schon 1k in Serie hängen? Da kommen 
ja eh maximal 5mA durch, wenn die Anschlüsse beim CH340 im deaktivierten 
Zustand hart auf 5V geschaltet wären.

Warum denn den CH340 nicht auch auf die externe Versorung wie bereits 
vorgeschlagen?

von Amateur (Gast)


Lesenswert?

Die heutigen Fets sind so gut, dass Du mit reinem Gewissen einen in die 
Versorgungsleitung der USB-Schnittstelle einschleifen kannst.

Vor den Fet stellst Du Deinen Entscheider für was anliegt.

von Frank Z. (hardwarecop)


Angehängte Dateien:

Lesenswert?

Frank K. schrieb:
> Eine einfache Möglichkeit besteht darin, USB plus CH340 galvanisch vom
> Rest zu trennen. Keine Masseschleifen, kein unzulässiger Stromfluss,
> alles sicher. Ein ADuM1402 würde für TXD+RXD+RTS+CTS reichen, ein
> Si8652ED-B-IS könnte zusätzlich noch ein Signal übertragen, dass die
> USB-Schnittstelle Strom hat und enumeriert worden ist (sofern der CH340
> so einen Pin hat).
>
> Bei entsprechendem Layout (Luft- und Kriechstrecken beachten!) hat der
> Si8652ED-B-IS eine Spannungsfestigkeit von 5kV. Sollte reichen.
>
> fchk

Hi Frank,

die Idee mit einem galvanisch getrennten ADuM1402 ist ausgezeichnet und 
genau das, was ich suche. Ich schaue mal wie ich das bei mir 
implementieren könnte. Ich bräuchte nur TXD, RXD und DTS (Reset über 100 
nF).

Bisher sieht die Schaltung wie angehängt aus.

Jetzt hänge ich (einfach) nen ADuM1402 zwischen CH340G und Arduino AVR 
(wie Beitrag "Frage zu Schaltplan für FT232R + ADuM1402")

von Frank K. (fchk)


Lesenswert?

Frank Z. schrieb:

> Jetzt hänge ich (einfach) nen ADuM1402 zwischen CH340G und Arduino AVR
> (wie Beitrag "Frage zu Schaltplan für FT232R + ADuM1402")

Genau. Den CH340 und die eine Seite des ADuM versorgst Du über VBUS vom 
USB, den Rest der Schaltung und die andere Seite des ADuM übers 
Netzteil.
Beachte auch, dass Du zwei getrennte GND's hast, die auf keinen Fall 
verbunden werden dürfen. Zwischen beiden Schaltungsteilen solltest Du 5 
bis 7mm Kriechstrecke vorsehen, d.h. ein 7mm breiter Streifen auf der 
Leiterplatte, der auf allen Lagen komplett frei von Kupfer und Bauteilen 
ist - einzige Ausnahme ist der ADuM, der als einziges Bauteil beide 
Bereiche miteinander verbindet. Das Layout aus dem von Dir verlinkten 
Beitrag ist zum Ko.... und eher als mahnendes Beispiel zu sehen, wie man 
es NICHT macht.

fchk

von Joachim B. (jar)


Lesenswert?

Frank Z. schrieb:
> @Joachim: Danke Dir für die Antwort bzw. für Deinen Vorschlag. Da ich
> nicht ganz kapiert habe wie ich genau jetzt die Diode anschließen soll,

2 dioden

ein Bild
http://hyperphysics.phy-astr.gsu.edu/hbase/electronic/ietron/dior.gif

eine Diode liegt in der +Leitung vom USB (A) zum Arduino
eine Diode liegt in der +Leitung vom 5V (B) Netzteil zum Arduino
out an Arduino R kann entfallen.

Ich habe die Diode (A) einfach zwischen USB FTDI zu seriell nach Arduino 
gelegt, Diode (B) von den externen +5V zum Arduino.

von easylife (Gast)


Lesenswert?

1000uF an vbus, autsch. nochmal: trenne doch vbus von vcc. das gerät 
funktioniert doch eh nur mit ext. spannung. 1uf an vbus sollte man aus 
kompatibilitätsgründen noch an die buchse hängen.

von Frank Z. (hardwarecop)


Lesenswert?

easylife schrieb:
> 1000uF an vbus, autsch. nochmal: trenne doch vbus von vcc. das gerät
> funktioniert doch eh nur mit ext. spannung. 1uf an vbus sollte man aus
> kompatibilitätsgründen noch an die buchse hängen.

Upps, das war die falsche Version vom Schaltplan. Im jetzigen hängt die 
1000µF am 5V DC Jack und Vbus, VCC sind getrennt

von Frank Z. (hardwarecop)


Lesenswert?

Frank K. schrieb:
> Frank Z. schrieb:
>
>> Jetzt hänge ich (einfach) nen ADuM1402 zwischen CH340G und Arduino AVR
>> (wie Beitrag "Frage zu Schaltplan für FT232R + ADuM1402")
>
> Genau. Den CH340 und die eine Seite des ADuM versorgst Du über VBUS vom
> USB, den Rest der Schaltung und die andere Seite des ADuM übers
> Netzteil.
> Beachte auch, dass Du zwei getrennte GND's hast, die auf keinen Fall
> verbunden werden dürfen. Zwischen beiden Schaltungsteilen solltest Du 5
> bis 7mm Kriechstrecke vorsehen, d.h. ein 7mm breiter Streifen auf der
> Leiterplatte, der auf allen Lagen komplett frei von Kupfer und Bauteilen
> ist - einzige Ausnahme ist der ADuM, der als einziges Bauteil beide
> Bereiche miteinander verbindet. Das Layout aus dem von Dir verlinkten
> Beitrag ist zum Ko.... und eher als mahnendes Beispiel zu sehen, wie man
> es NICHT macht.
>
> fchk

Danke! Na klar, beide VCCs und GNDs trennen - wozu sonst so ein Isolator 
:-D

Jetzt ist aber nach dem Anschließen trotzdem der CH340G eingeschaltet. 
Wenn ich jetzt Daten sende vom Programm, die angeblich dem Controller 
mitteilen was es zu tun hat und Änderungen dadurch vornehme, sendet es 
bei nicht angeschossenem Ext. NT Daten einfach ins Nichts?

Wäre es z.B. eine Lösung, externe 5V VCC an einen Kanal anzulegen und am 
anderen Ende nen NFet -> PFet dran zu hängen, die den CH340G bei extern 
angeschlossen einschaltet?

von Joe F. (easylife)


Lesenswert?

Und noch ein letztes mal: hänge einfach auch den CH340 an VCC, und VBUS 
"versorgt" nur einen 1uF.
Solange das Gerät keinen externen Strom hat, meldet es sich nicht am Bus 
an.
Wozu dieses ganze galvanische Trennungsgedöhns?

Aus D+/D- wird kein Strom gezogen, auch wenn das Gerät aus ist.
Und GND kann man ruhig immer zusammen lassen.

C10 ist übrigens auch nicht gut.

: Bearbeitet durch User
von Frank Z. (hardwarecop)


Lesenswert?

Joe F. schrieb:
> Und noch ein letztes mal: hänge einfach auch den CH340 an VCC, und VBUS
> "versorgt" nur einen 1uF.
> Solange das Gerät keinen externen Strom hat, meldet es sich nicht am Bus
> an.
> Wozu dieses ganze galvanische Trennungsgedöhns?
>
> Aus D+/D- wird kein Strom gezogen, auch wenn das Gerät aus ist.
> Und GND kann man ruhig immer zusammen lassen.
>
> C10 ist übrigens auch nicht gut.

Danke, diesen Vorschlag habe ich anscheinend überlesen. Ich werde das 
schell mal auf den Breadboards ausprobieren.

: Bearbeitet durch User
von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

Frank Z. schrieb:
> Ich werde das
> schell mal auf den Breadboards ausprobieren.

USB? Breadboard? Hm...

Also zur Sicherheit anbei nochmal, wie ich es meine.

von Frank Z. (hardwarecop)


Lesenswert?

Joe F. schrieb:
> Frank Z. schrieb:
>> Ich werde das
>> schell mal auf den Breadboards ausprobieren.
>
> USB? Breadboard? Hm...
>
> Also zur Sicherheit anbei nochmal, wie ich es meine.

Prototyping. Eine richtige Platine wird noch konstruiert - hier wird ja 
gerade geholfen :-)

Genau, das habe ich so umgesetzt und es funktioniert wunderbar und genau 
so wie es sein sollte.

von Joe F. (easylife)


Lesenswert?

Du könntest noch 10K von VBUS zu GND legen, um den 1uF Kondensator zu 
entladen, wenn das Gerät abgesteckt wird.
Der Kondensator dient lediglich der Geräteerkennung (steht irgendwo in 
der USB Spec., bin zu faul die genaue Stelle rauszusuchen) - hat was mit 
suspend/resume/power-modes/powered-hub-shit zu tun.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Frank Z. schrieb:
> Frank K. schrieb:
>> Frank Z. schrieb:
>>
>>> Jetzt hänge ich (einfach) nen ADuM1402 zwischen CH340G und Arduino AVR
>>> (wie Beitrag "Frage zu Schaltplan für FT232R + ADuM1402")
>>
>> Genau. Den CH340 und die eine Seite des ADuM versorgst Du über VBUS vom
>> USB, den Rest der Schaltung und die andere Seite des ADuM übers
>> Netzteil.
>> Beachte auch, dass Du zwei getrennte GND's hast, die auf keinen Fall
>> verbunden werden dürfen. Zwischen beiden Schaltungsteilen solltest Du 5
>> bis 7mm Kriechstrecke vorsehen, d.h. ein 7mm breiter Streifen auf der
>> Leiterplatte, der auf allen Lagen komplett frei von Kupfer und Bauteilen
>> ist - einzige Ausnahme ist der ADuM, der als einziges Bauteil beide
>> Bereiche miteinander verbindet. Das Layout aus dem von Dir verlinkten
>> Beitrag ist zum Ko.... und eher als mahnendes Beispiel zu sehen, wie man
>> es NICHT macht.
>>
>> fchk
>
> Danke! Na klar, beide VCCs und GNDs trennen - wozu sonst so ein Isolator
> :-D
>
> Jetzt ist aber nach dem Anschließen trotzdem der CH340G eingeschaltet.
> Wenn ich jetzt Daten sende vom Programm, die angeblich dem Controller
> mitteilen was es zu tun hat und Änderungen dadurch vornehme, sendet es
> bei nicht angeschossenem Ext. NT Daten einfach ins Nichts?

Klar, ohne Handshakeleitungen.

Lösung: Aus uralten Modemzeiten gibt es an seriellen Schnittstellen zB 
die DCD Leitung, die dem PC signalisiert, dass die Modemverbindung 
steht. Dein CH340G hat diesen Pin aus, und den kannst Du nutzen, indem 
Du ihn über einen Pin des ADuM führst und dort entweder an VCC_ext oder 
an den Controller anschließt.

> Wäre es z.B. eine Lösung, externe 5V VCC an einen Kanal anzulegen und am
> anderen Ende nen NFet -> PFet dran zu hängen, die den CH340G bei extern
> angeschlossen einschaltet?

eher nicht.

fchk

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.