Forum: Mikrocontroller und Digitale Elektronik USB-C CC Pin Beschaltung für 1,5A


von L. (lah)


Lesenswert?

Hallo,

ich möchte eine Platine mit 5V/1,5A per USB-C versorgen. Ich weiß noch 
dass man sich "früher" am Bus anmelden musste, um mehr als 100mA 
anzufordern. Mit USB-C hat sich das wohl vereinfacht, aber trotz 
App-Notes lesen habe ich das noch nicht ganz durchschaut.

Soweit bin ich schon: Die CC1 und CC2 Pins mit je 5,1k Pulldown 
beschalten.
Wenn >0,9V anliegen, darf meine Schaltung 1,5A ziehen. Bei >1,7V sogar 
3A.

Jetzt wäre meine Idee, die beiden CC Spannungen über zwei Dioden 
zusammen zu fassen und per Komparator oder ADC einzulesen.

Ist das machbar, oder muss ich jeden CC Pin separat auswerten?

Ich habe von aktiven Kabeln und E-Markern gelesen, die wohl höhere 
Spannung auf einen der beiden CC Pins schalten?

Würde mich freuen wenn jemand eine Lösung postet, wie ich halbwegs 
standardkonform 1,5A per USB-C nutzen kann :=)
von Marc G. (marcm)


Lesenswert?

Nimm ein fertiges trigger board ;-)

https://amzn.eu/d/0bt8klTE

Funktioniert 1A
von L. (lah)


Lesenswert?

Marc G. schrieb:
> Nimm ein fertiges trigger board ;-)

Fertige Module passen leider nicht, da ich die USB Datenleitungen auch 
noch verwenden möchte.
Aber der CH224 Chip sieht interessant aus, ich google mal in die 
Richtung weiter.
von Harald K. (kirnbichler)


Lesenswert?

L. schrieb:
> ich möchte eine Platine mit 5V/1,5A per USB-C versorgen.

Geht es um den Betrieb an einem USB-Host (d.h. einem PC), oder um den 
Betrieb an einem USB-Netzteil?

> Ich weiß noch dass man sich "früher" am Bus anmelden musste,
> um mehr als 100mA anzufordern.

Das betrifft den Betrieb an USB-Hosts, aber letztlich hat praktisch kein 
Host gemessen, welchen Strom angeschlossene Geräte aufgenommen haben, 
sondern nur sehr großzügig dimensionierte Polyfuse verwendet.

Sonst hätte so etwas wie eine 2.5"-Festplatte im USB-Gehäuse nie 
funktioniert, denn die ziehem beim Hochlaufen des Spindelmotors alle* 
für eine Weile mehr als 1 A.

Wenn Du Dein Gerät an einem USB-C-Netzteil betreiben willst, brauchst Du 
nur zwei einfache Widerstände an den CC-Leitungen (jeweils Pulldowns mit 
5.1 kΩ), um das Netzteil dazu zu bringen, 5 V auszugeben. Ohne diese 
Widerstände kommt aus dem Netzteil gar nichts raus.

Ein "Trigger Board" ist für USB-C-Netzteile, um diese dazu zu bewegen, 
andere Spannungen als 5 V auszugeben.

Du aber schreibst, daß Du die USB-Datenleitungen verwenden willst, was 
nicht nach Betrieb an einem USB-C-Netzteil, sondern nach Betrieb an 
einem USB-Host klingt.


*) Manchmal behauptet jemand, es hätte Festplatten gegeben, die länger 
für das Hochlaufen benötigen und daher das 500-mA-Kritierum nicht 
verletzen würden. Einen Beleg dafür mit einer Typenbezeichnung wurde 
aber in solchen Fällen nicht geliefert, daher halte ich das für 
Wunschdenken.
von Kevin M. (arduinolover)


Lesenswert?

Es gibt massig CC Line Controller (z.B von NXP) für wenig Geld, die das 
für dich machen und das ganze per GPIO oder I2C ausgeben.
von Frank K. (fchk)


Lesenswert?

Nimm das:
https://www.st.com/en/interfaces-and-transceivers/stusb4500.html

Wenn Du PWRCFG[1:0] auf 11 setzt, dann wird POWER_OK2 auf low gezogen, 
wenn 1.5A ausgehandelt wurden und POWER_OK3, wenn 3A ausgehandelt 
wurden. Diese SIgnale kannst Du verwenden, um entweder einen Load Switch 
anzusteuern, oder einem Mikrocontroller, der dann entweder die 
Verbraucher aktiviert oder eine Fehlermeldung wirft.

fchk
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Diese SIgnale kannst Du verwenden, um entweder einen Load Switch
> anzusteuern, oder einem Mikrocontroller, der dann entweder die
> Verbraucher aktiviert oder eine Fehlermeldung wirft.

Genau, wenn man aber sowieso einen Mikrocontroller einbaut, kann man 
auch einen nehmen der diese Funktionalität integriert hat, und das 
praktisch alles in Software machen. Viele der modernen STM32 können das 
(und auch das komplette USB-PD Protokoll, aber das braucht man ja nicht 
nutzen).
von L. (lah)


Lesenswert?

Harald K. schrieb:
> Geht es um den Betrieb an einem USB-Host (d.h. einem PC), oder um den
> Betrieb an einem USB-Netzteil?

Beides.
Aktuell wird die Platine mit 12V versorgt und hat einen USB-Anschluss 
zur Konfiguration. Ohne 12V Netzteil funktioniert das gar nicht.
Die Platine möchte ich jetzt dahingehend umbauen, dass sie sowohl direkt 
am PC zum konfigurieren als auch an einem 5V Netzteil/Powerbank zum 
Betrieb funktioniert.
Im PC-Betrieb könnte die Platine mit 500mA auskommen.

So wie ich eure Antworten verstehe, nutzt kaum ein Gerät diese 0,9/1,7V 
Variante? Entweder einfach ignorieren weil die Ports eh mehr hergeben 
bzw. abgesichert sind, oder direkt USB-PD implementieren?
Schade eigentlich, die Lösung mit Komparator sah schön simpel aus.
von Andi Y. (andiy)


Lesenswert?

L. schrieb:
> So wie ich eure Antworten verstehe, nutzt kaum ein Gerät diese 0,9/1,7V
> Variante? Entweder einfach ignorieren weil die Ports eh mehr hergeben
> bzw. abgesichert sind, oder direkt USB-PD implementieren?
> Schade eigentlich, die Lösung mit Komparator sah schön simpel aus.

Der USB-C Host signalisiert mit seinem Pullup Widerstand wieviel Strom 
er liefern kann. Je mehr Strom umso kleiner der Widerstand (etwa 4.7..36 
kOhm).
An der resultierenden Spannung am 5.1k Pulldown Widerstand des USB-C 
Devices kannst du damit erkennen ob der Host in der Lage ist deinen 
gewünschten Strom zu liefern. Das ist alles. Du musst dem Host nichts 
mitteilen, solange du nur 5V brauchst.
Ob du die Spannung nun auswertest (mit Komparator oder ADC) bleibt dir 
überlassen. Du kannst damit halt irgendwie melden, dass das USB-C 
Netzteil nicht ausreicht. Aber die einzige Lösung ist eine USB-C Quelle 
anzuschliessen die mehr Strom liefert. Und da kann man ja auch einfach 
eine Beschriftung beim USB-C Anschluss machen, die sagt wieviel Watt die 
Quelle mindestens haben sollte.

Andi
von Arne R. (ebps)


Lesenswert?

Andi Y. schrieb:
> L. schrieb:
> Der USB-C Host signalisiert mit seinem Pullup Widerstand wieviel Strom
> er liefern kann. Je mehr Strom umso kleiner der Widerstand (etwa 4.7..36
> kOhm).

Das ist aber keine lineare Skala, sondern nur genau 3 Werte sind 
moeglich (4.7k/12k/36k an 3.3V, oder 10k/22k/56k an 5V, oder 
aequivalente Stromquellen). Es ist aber AFAICS keine Pflicht, dass ein 
5V/3A-Netzteil auch wirklich einen 10k-Widerstand drin hat -- wenn es PD 
unterstuetzt, koennte es auch 500mA per Widerstand anbieten und ein 
hoeherer Strom muesste dann erst ueber PD ausgehandelt werden. Wenn das 
Geraet vom OP mit moeglichst vielen Quellen funktionieren soll, muss es 
also beides (CC-Widerstaende und USB-PD) unterstuetzen (und am besten 
auch noch USB-BC, insbesondere falls jemand ein USB-A-auf-USB-C-Kabel 
anschliesst).
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.