2018-02-04 weil wer kann schon in ein billiges Kabel reingucken

Bei USB-Kabel ist es so eine Sache: was ist drinne? Dünnes Kabel, dickes Kabel, Kupfer, Aluminium?

Ist ein hoher Preis eine Garantie für hohe Qualität? Marktwirtschaft-101 sagt mir, es ist eher nicht so.

Lösung: Widerstand auf den Versorgungsleitungen messen!

Technisch nicht ganz sooo einfach, weil man bei ungefähr unter 1 Ohm landet, was am Multimeter mit Prüfspitzen und klitzekleinen USB-Steckern schwierig ist.

Lösung: Was bauen!

Ein tiefer Griff in die Bastelkiste, nur Krams, der rumliegt.

Der Schaltplan ist reichlich übersichtlich. Es wird ein Spannungsteiler aufgebaut und der Spannungsabfall über einen bekannten Widerstand ermittelt.

Select
// spannungsquelle ---> Uvor ---[==RRef==]--- Unach ---[==RKabel==]--- GND

float strom = (Uvor / 1000.0 - Unach / 1000.0) / (RRef);
float RKabel = Unach / 1000.0 / strom;

(Die 1000 sind der Umrechnung von Millivolt in Volt geschuldet.)

Eine A-Buchse bildet die Masseebene, das Messobjekt schließt den Weg zum Referenzwiderstand. Dazwischen liegen zwei Reedrelais, mit denen die interessanten Leitungen GND und VBUS getrennt geschaltet werden können.

Damit ist messbar:

  • die Versorgungsspannung im Leerlauf (A0, [1] und [2] offen)
  • die Versorgungsspannung beim Messen (A0, [1] oder [2] geschlossen)
  • die Teilerspannung beim Messen (A1, [1] oder [2] geschlossen)

Der Referenzwiderstandswert ist so gewählt, dass noch eine halbwegs vernünftige Teilerspannung bei geschätztem USB-Kabelwiderstand von maximal 1 Ohm rauskommt, ohne dass der Messstrom das USB-Netzteil zum Glühen bringt.

Die Wahl fiel auf zwei normale 470 Ohm Metallschicht-Widerstände mit 1% Genauigkeit, parallel geschaltet und ausgemessen. Dabei bleibt die Frage, ob sich die Widerstände mit der Zeit verändern, unbeachtet.

Beim Verkabeln auf der PCB habe ich auf "dicke Leitungen" für den Messpfad geachtet. Spannungsmessungen etc. lassen sich bequem via Kupferlackdraht ausführen.

Zum Leben erweckt wird die ganze Geschichte durch einen Arduino Nano 168, als AD-Wandler ist ein ADS1115 (16 bit) im Einsatz, das Display ist ein Max7219er.

Der ADS1115 ist mit 16 Bit deutlich besser als der ATMega-interne 10-Bit-ADC. Insgesamt ist er sowieso mein heisser Tip für sorgenfreies ADCn. Er hat eine interne Referenzspannung (was beim ATMega ein Albtraum ist…) und integrierten Vorverstärker, der einen vollen 16-Bit-ADC-Bereich bis runter nach 0,256 V erlaubt. 4 Messkanäle und internes Managment, wann die Messergebnisse gültig sind.

Kosten

  • Arduino Nano 168: 1,75 €
  • ADS1115: 1,91 €
  • Max7219+LED: 1,29 €
  • 5×7 doppelseitige Prototypen-PCB: 0,44 € (20 Stück 8,73 €)
  • Sip-1A05 Reedrelais: 0,82 € (10 Stück 4,11 €)
  • 1N4148 fürs Relais: 0,01 € (200 Stück 0,99 €)
  • USB Typ A SMD weiblicher Stecker: 0,10 € (25 Stück 2,48 €)
  • USB Typ Mini SMD weiblicher Stecker: 0,06 € (20 Stück 1,09 €)
  • USB Typ Micro SMD weiblicher Stecker: 0,10 € (10 Stück 1,01 €)

Macht übern Daumen 6,50 €.

Pro Tipp I: vom Nano, ADS1115 und Max7219 gleich mehr kaufen. Jeweils 10 Stück inne Grabbelkiste, kann man immer gebrauchen.

Pro Tipp II: ein Nano 328 kostet auch nur 2,98 €, hat doppelt so viel Speicher (16->32 Flash, 512->1k Ram, 1k->2k EEPROM), ist für solche Mini-Aufgaben aber eigentlich zu groß.

Klöterkrams (3 Niro Schrauben M2×20, 9 Muttern M2, 9 U-Scheiben M2, Widerstände, CUL, Headers etc.) liegen wohl noch mal anteilig bei 0,50 €.

Bauzeit

Ein Samstag nachmittag.

Software

noch nicht veröffentlicht

Die Software ist einfach gehalten: im setup() wird alles erledigt, eine neue Messung wird durch Druck auf den Reset-Taster ausgelöst.

Vor der Messung wird die Max7219-Anzeige initialisiert und abgeschaltet.

Dann erfolgt die Messung:

  • Leerlaufspannungsmessung
  • Messung des VBus-Leitungswiderstands
  • Messung des GND-Leitungswiderstands

Die Messung selbst wird zuerst im 6.144-Volt Messbereich durchgeführt und entsprechend des Ergebnisses in einem passenden Messbereich wiederholt.

Der ADS1115 ist im SingleShot-Modus mit 128 ms Messzeit (längste Messzeit, niedrigstes Rauschen) initialisiert.

Nach der Messung wird rumgerechnet, ein paar Fehlerfälle überprüft (zu geringe Versorgungsspannung, zu großer Versorgungsspannungseinbruch bei Messung, offene Leitung VBUS oder GND) und dann das Ergebniss dauerhaft ausgegeben.