Ik weet dat ik wat laat ben en dat er al een oplossing is, maar dit topic vonkte wat nieuwsgierigheid bij mij. Want er waren mij een paar dingen opgevallen waar ik benieuwd naar werd hoe dat nou werkt.
Het is inderdaad waar dat moederborden (met de USB 2.0 standaard of hoger gecertificeerd) allemaal zowel een overvoltage als een overcurrent protection ingebouwd hebben om te voorkomen dat een piekspanning (door bijvoorbeeld statische elektriciteit) of een piekstroom (door bijvoorbeeld kortsluiting) schade aanricht aan de interne componenten van een computer. Ik ben even in de standaard gedoken en het moet zelfs zo zijn dat die bescherming vaker dan eens te gebruiken is (self-resetting), omdat de kans dat een statische schok over wordt gebracht best aanzienlijk is en het toch jammer zou zijn als dat elke keer voor het einde van je USB-poort of zelfs controller zou zorgen.
Ook lijkt het mij duidelijk dat dit een behoorlijk low-level beveiliging is, want de melding van een overcurrent komt vanuit de BIOS. Bovendien wil je dat ook, want vertraging bij een dergelijke beveiliging is funest.
Dus dat is mooi! Maar hoe weet die BIOS nou precies of een USB-poort is kortgesloten of een piekspanning ontvangt? Wanneer geeft die BIOS nou precies een melding? En de belangrijkste vraag om toch bij het topic te blijven: betekent dit dat de stroom wordt
gemeten?
Littelfuse is een bedrijf wat zich specialiseert in dergelijke beveiligingen en heeft een hele hoop literatuur en datasheets beschikbaar hierover.
In dit document is het referentieontwerp van een dergelijke beveiliging te zien.
Hier is te zien dat VBUS, de +5V van je USB-poort, en de GND, de 0V van je USB-poort, beiden aan 'chassis ground' (metalen frame van je laptop/desktop/andersoorts apparaat) hangen via elementen ML1 resp. ML2. Dit zijn componenten met typeaanduiding "V5.5MLA0603". De datasheet beschrijft:
The MLA Series family of transient voltage surge suppression devices is based on the Littelfuse Multilayer fabrication technology. These components are designed to suppress a variety of transient events, including those specified in IEC 61000-4-2 or other standards used for Electromagnetic Compliance (EMC). The MLA Series is typically applied to protect integrated circuits and other components at the circuit board level.
ML1 en ML2 zijn dus eenvoudige varistors die gaan geleiden wanneer de spanning een bepaalde piekwaarde overschrijdt. De werking hiervan is vergelijkbaar met een Zener-diode, die begint te geleiden in de sperrichting wanneer de doorslagspanning wordt overschreden. Dit zorgt ervoor dat een plotselinge piek in spanning op de +5V of de GND van de USB-poort wordt afgelaten via dit component. Dit zorgt ervoor dat, zelfs met een statische schok (eenvoudig >15.000V) de spanning op GND en +5V nooit boven de 17.5V zal komen, waardoor de interne elektronica dus is beschermd.
Tevens zit er op de VBUS, oftewel de +5V voor USB, een PTC. Een PTC is een weerstand met een
Positieve
Thermische
Coëfficient, wat wilt zeggen dat, naarmate de temperatuur toeneemt, de weerstand toeneemt (en dus de hoeveelheid stroom wordt beperkt). De gebruikte PTC zal bij normaal gebruik (tot 500mA) gewoon werken en geen toename van de weerstand veroorzaken. Pas wanneer deze boven de grenswaarde uitkomt (Atrip), zal de weerstand snel toenemen en de stroom worden beperkt.
Tot slot zit er een beveiliging op de datalijnen van de USB-poort, ook dit is een ESD-suppressor om piekspanning door statische schokken af te wenden naar het chassis van het apparaat, maar dan specifiek met een lage capaciteit omdat een element met een hoge capaciteit de snelle wisselingen van de spanning in de datastromen die je met USB hebt kan verstoren (rise/fall time van het signaal). De datalijnen zijn beide zeer hoog impedant (hoge ingangsweerstand, weinig stroom) en zullen daarom sowieso niet snel te maken hebben met een enorme piekstroom omdat de ingangsweerstand hoog is (15KOhm +/- 5%)
Dit wetende deed mij vermoeden dat de USB-controller geen mogelijkheid heeft om direct een stroom te deduceren, maar wel dat de spanning die de USB-host aan het via de bus van energie voorziene apparaat kan meten. En dat klopt: een (goede!) USB-host-controller heeft een ingang genaamd "VBUS", welke de spanning van VBUS (de +5V draad) meet (zit aangesloten op een analog-digital converter (ADC)). Zodra VBUS zakt onder de grenswaarde (4,4V voor low-voltage toepassingen, 4,75V voor de rest), moet VBUSEN op LOW worden gezet, waardoor de VBUS niet langer wordt gevoed. De overcurrent protection werkt dus op zo'n manier dat de VBUS wordt gemeten met een ADC, en zodra deze te lang (en dan hebben we het over micro- tot milliseconden) onder de grenswaarde blijft, zal deze VBUSEN op laag zetten (vaak zit hier een delay in; daarom dat je een melding in BIOS krijgt dat de computer na x seconden wordt uitgeschakeld), waardoor een piekstroom wordt beperkt. In de tussentijd zal de PTC opwarmen en de stroom ook gaan beperken om schade te voorkomen.
*ik schreef 'goede!' tussen haakjes omdat dit met goedkope troep uit china helaas vaak genoeg voorkomt (blijkbaar, heb ik ook alleen maar gelezen) dat dit niet het geval is, en dat VBUS een eenvoudige digitale ingangspoort is die aan gaat wanneer deze een logische 'HIGH' ontvangt. Maar een logische 'HIGH' begint vaak al op een lagere spanning en is wisselend per microcontroller. Een chip die met TTL werkt vindt alles boven een 2,7V al 'HIGH' en dat mag daarna zelfs tot 2,0V zakken. Maar realiseer je wel dat als je nog maar 2,0V meet op je VBUS bij je apparaat dat er dus zo'n 3,0V, dus 3/5e deel van het totale vermogen, verloren gaat in de route naar VBUS, waardoor een verbruiker van 750mA gewoon prima mogelijk wordt en dat is dus best gevaarlijk.
Om dus terug te komen op de vraag, kan je zonder meer stroom meten aan een USB-poort? Nee, helaas. Er zit geen shunt-weerstand ingebouwd welke verbonden is aan een ADC waardoor je de hoeveelheid stroom die loopt kunt deduceren aan de hand van de gemeten spanning, daarvoor zal je dus echt een los apparaatje moeten hebben welke dat wel doet. Er is zelfs in de USB-standaard niets opgenomen dat een eventuele inschakeling van overcurrent protection moet worden gecommuniceerd naar het BIOS. In principe kan en wordt het volledig afgehandeld door de USB-host-controller zelf. Dat je dus uberhaupt die melding krijgt is
common courtesy van de fabrikant van jouw apparaat.
Heeft dit mij veel te veel tijd gekost vandaag? Absoluut, 100%, zeker weten. Ik had echt bijzonder veel nuttigere dingen kunnen doen dan anderhalf uur lang datasheets afstruinen om het antwoord te vinden op een arbitraire vraag terwijl die niet eens gesteld was maar uitsluitend door mijn nieuwsgierigheid werd gevoed.
[
Voor 7% gewijzigd door
naarden 4ever op 10-10-2019 14:44
]