Hallo, ich komme gerade nicht wirklich weiter in einem neuen Projekt… Ich soll einen Tester für eine USB Buchse aufbauen, mit welchem geprüft werden kann ob der USB-Anschluss funktionsfähig ist. Also liegen die 5V an, sind D+ und D- angeschlossen. An sich soll lediglich geprüft werden, ob die Buchse 4 polig „verkabelt“ ist. In dem Fahrzeug ist ein kleiner Rechner verbaut, an welchem USB Kabel angeschlossen ist. Dieses ist im Fahrzeug fest im vorhandenen Kabelstrang verlegt. Am anderen Ende wird die Buchse des Kabels an eine USB-Einbaubuchse angesteckt. Diese Adapterbuchsen sind lt. Kunde immer wieder ein Problem und fallen aus. Ich soll eine Art „Prüfstick“ aufbauen, mit dem in der Endprüfung die Durchgängigkeit des Kabels bis zum Rechner geprüft werden kann, ohne dass man das Kabel vom Rechner abstecken muss. Im Normalbetrieb wird an der Buchse täglich ein USB-Stick ein/ausgesteckt, auf welchem irgendwelche Gewichtsdaten gespeichert wurden. Die Versorgungsspannung zu prüfen ist nicht das Problem, nicht weiter komme ich gerade mit den Datenleitungen. Wie kann ich prüfen, ob die Datenleitungen bis zum/in den Rechner durchgängig sind? Soweit mir bekannt ist, werden die D-Leitungen vom Host auf GND gezogen, wenn kein Gerät angesteckt ist. Wie wird vom Host erkannt dass ein Gerät angesteckt wurde, und kann ich dass irgendwie auswerten? Evtl. hat ja jemand einen brauchbaren Lösungsansatz… Vielen Dank
Stefan schrieb: > Soweit mir > bekannt ist, werden die D-Leitungen vom Host auf GND gezogen, wenn kein > Gerät angesteckt ist. Die werden mit (IIRC) 15kOhm nach GND gezogen. Ob das tut könnte man mit einem Spannungsteiler nach 3,3V überprüfen. Vorsicht: Mehr als 3,6V dürfen auf den Datenleitungen nicht anliegen. Ich würde den Spannungsteiler aber eher hochohmig (50k, 100k Ohm) auslegen und die Spannung mit einem ADC messen. Denn falls die Spannung zu stark ansteigt, erkennt der Host ein Device und pullt dann die Leitungen erstmal hart auf Masse (USB Reset). Stefan schrieb: > Wie wird vom Host erkannt dass ein Gerät angesteckt wurde USB D+ (Full Speed und höher) oder D- (Low Speed) wird mit 1k5 nach 3,3V gezogen. Das löst aber USB Reset und weitere Datenübertragung aus, die beim Durchmessen eher stören dürften.
Jim M. schrieb: > die Spannung mit einem ADC messen. ..oder mit einem Opamp/Comperator. Ist ja Spannungsteiler. Allerdings sollte man Kurzschlüsse betrachten können, also D+ mit D-, oder Datenleitung nach Masse / VBus. Wäre mit einem µC vermutlich einfacher zu lösen.
Danke für die Infos, dass hilft mir schon mal einen großen Schritt weiter, damit kann ich die Leitungen durchmessen, wenn am AD eine Spannung kleiner 5V messbar ist sollten die Datenleitungen Durchgang haben...
Stefan schrieb: > Wie kann ich prüfen, ob die Datenleitungen bis zum/in den Rechner > durchgängig sind? Du könntest einen µC mit USB-Devicecontroller verwenden, der sich z.B. als HID* am USB-Host anmeldet, und bei erfolgter Enumeration diese vom µC mit LEDs signalisieren lassen. Wenn Dein µC mit autarker Spannungsversorgung arbeitet, kann der auch die USB-Versorgungsspannung messen und die wiederum irgendwie mit einem Display oder LEDs signalisieren. Damit hättest Du einen Prüfstick, der neben "Spannung ist OK" auch "USB-Host redet mit Gerät" liefern kann. *) oder irgendeine andere simple Standardgeräteklasse.
Ich habe einen 3€ USB Hub, der signalisiert die Enumerierung mit eine flackernden LED. Nach erfolgreicher Enumerierung geht die LED auf Dauerlicht. Wenn kein Gerät an die 4 Ports des Hub angesteckt ist, bleibt die LED dunkel. Ebenso bleibt sie dunkel, wenn ich den Hub mit einem Gerät an ein Handy-Ladegerät steckt (also keine Kommunikation stattfindet). So ein Hub in Kombination mit einer Maus (oder einem Funkempfänger von einer Maus) wäre eine billige Fertiglösung für die Aufgabe.
Hallo, danke für die Beiträge. Ich habe mir jetzt den USB Uart FT232R angeschaut, dieser hat in der in der Default-Einstellung das Signal PWREN am Pin14 CBUS3. Wenn ich das Datenblatt richtig verstanden habe, wird der Pin geschaltet wenn die Enumeration erfolgreich abgeschlossen ist. Also das IC vom Rechner erkannt wurde. Einziges Problem könnte hier sein, dass der Rechner hierfür Treiber installieren will, was zu lange dauern könnte. Die Prüfung sollte nicht all zu lange dauern, sagt der Kunde.......... würde diesen IC dann verwenden um die LED's einzuschalten. Ich würde jetzt mal einen Versuchsaufbau mit dem FT232R aufbauen als bessere Methode da diese die USB-Schnittstelle kpl. prüft. Alternativ dann eine mit einem µC der nur die Spannungen misst. Ich muss leider das Teil selbst aufbauen, da die Endversion die Form eines USB-Sticks haben soll.....
Der Nachteil beim FT232R ist, dass er nicht mit den Standard-Treibern läuft, die schon in Windows drin sind. Hier wäre ein USB-UART nach CDC Standard vielleicht besser. Mir fällt dazu das Blue-Pill Board und ein Projekt von Niklar Gürtler ein. Seine Beispiel-Firmware mach darauf einen 3-Fach UART, der ohne extra Treiber läuft. Da müsste man nur noch die LED programmieren.
Stefan schrieb: > Ich muss leider das Teil selbst aufbauen, da die Endversion die Form > eines USB-Sticks haben soll..... So in der Art? https://hackaday.io/project/6258-two-component-usb-temperature-data-logger Ich würde auch wie Rufus einen einfachen uC nehmen und eine USB-HID Firmware aufspielen. Den uC im verlinkten Beitrag gibt es natürlich auch in kleineren SMD Bauformen. Eine LED mit Vorwiderstand und noch einen Kondensator dazu und fertig ist der (Prüf-)Stick. Hinweise zu HID Firmware findest du z.B. da -> http://www.hs-ulm.de/nocache/wir/Personal/PersonalSaSchr/vschilli/Mikrocontroller/USBProjekte/USBHID/
Ein HID lässt sich spezifikationskonform mit V-USB auch auf einem ATiny85 implementieren. Dafür gibt es sogar Arduino-Unterstützung. In Form fertiger Hardware auf einer einen USB-Stecker nachbildenden Platine gibt es das als "Digispark" zu kaufen. Hier gilt es nur noch, die Information über abgewickelte "enumeration" aus der V-USB-Bibliothek zu entnehmen und damit eine LED anzusteuern.
Man könnte auch den Code so ändern dass man bei SET_ADDRESS das Gerät wieder trennt (den Pullup abschalten). Der PC sieht das als gescheiterte Enumeration, aber da zu diesem Zeitpunkt weder VID/PID noch Geräte-Klasse übertragen wurde kann der PC sich nichts zu diesem Gerät merken, Treiber installieren o.ä. und bleibt im "Urzustand". Auf dem Gerät könnte man dann bei Empfang von SET_ADDRESS eine LED einschalten o.ä., denn wenn die Nachricht ankommt ist die Verkabelung ja intakt.
Stefan schrieb: > Diese Adapterbuchsen sind lt. Kunde immer wieder ein Problem und fallen > aus. Ich soll eine Art „Prüfstick“ aufbauen, mit dem in der Endprüfung > die Durchgängigkeit des Kabels bis zum Rechner geprüft werden kann, ohne > dass man das Kabel vom Rechner abstecken muss. > > Im Normalbetrieb wird an der Buchse täglich ein USB-Stick > ein/ausgesteckt, auf welchem irgendwelche Gewichtsdaten gespeichert > wurden. Sind die schon defekt bei der Auslieferung ? Sonst nützt deine Endprüfung ja nichts. Kann ja auch ein späterer Kabelbruch bei den Lötstellen durch Erschütterung sein. Wenn die USB Leitung im Kabelbaum liegt würde ich auch eingekoppelte Störspitzen begrenzen.
Rufus Τ. F. schrieb: > Du könntest einen µC mit USB-Devicecontroller verwenden, der sich z.B. > als HID* am USB-Host anmeldet, und bei erfolgter Enumeration diese vom > µC mit LEDs signalisieren lassen. War auch mein erster Gedanke. Jede Computermaus macht das.
Stefan schrieb: > Einziges Problem könnte hier sein, dass der Rechner hierfür Treiber > installieren will, was zu lange dauern könnte Das ist nur ein Teil des Problems. Ich möchte nirgends tote Treiber herumgeistern haben, und den wieder loszuwerden ist zuviel Arbeit. Manche, vor allem alte USB-Sticks haben eine Aktivitäts-LED, ich habe welche, bei denen die LED beim Erkennen durch den Host angeht und beim Auswerfen per Befehl wieder aus. Aber Memory-Sticks sind sicherheitstechnisch eher unerwünscht. Das kann man vielleicht akzeptieren wenn der Stick im Haus bleibt. Georg
Ich habe das mal fix programmiert... Wenn du die angehängte Datei auf ein Olimexino-STM32-Board flashst, wird er zum USB-Prüfgerät. Einfach nur den Mini-USB-Stecker einstecken. Wenn dann alle 3 LEDs angehen, ist die Verbindung OK. Die Bedeutung der einzelnen LEDs: PWR LED (Rot): Es liegt Spannung an (von der USB Buchse oder Hohlstecker) LED1 (Grün): Ein SOF Paket wurde empfangen - der PC sendet diese alle 1ms LED2 (Gelb): Ein SET_ADDRESS oder GET_DESCRIPTOR wurde empfangen. Dies zeigt, dass die Datenleitungen intakt sind. Direkt nachdem eines der beiden letzteren Pakete empfangen wurde, trennt sich das Gerät wieder durch Abschalten der Pull-Up. Da dem PC so nie mitgeteilt wurde, um was für ein Gerät es sich handelt, kann er keinerlei Treiber installieren und bleibt somit "sauber". Interessanterweise erscheint bei Windows nicht einmal eine Meldung, weil die Trennung so schnell erfolgt dass hier vermutlich eine Störung statt eines angeschlossenen Geräts angenommen wird. Das Olimexino-Board ist bestimmt nicht die billigste Lösung, aber die Einfachste die ich auf die Schnelle testen konnte: https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/open-source-hardware Die Blue Pill Boards sind dafür nicht so geeignet, weil da der Widerstand nicht schaltbar ist.
Niklas G. schrieb: > Das Olimexino-Board ist bestimmt nicht die billigste Lösung... Olimex hat ja Boards mit uCs verschiedener Hersteller. Auch Digispark ähnliche Boards mit Atiny85 sind dabei. https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-85S/open-source-hardware
Diese Olimexino Boards kannte ich nicht... Werde mal eins bestellen. Ein anderer Gedanke, das ganze auf "analoger" Basis zu testen ist noch, wie oben schon mal beschrieben wurde, beide Leitungen hochohmig an +3,3V anbinden, mit einem µC dann ein "LowSpeed"-Gerät vorgaukeln, und dann die Hard-Reset Zeit auswerten. Danach das "LowSpeed" Gerät wieder trennen. Hier dann schrittweise die Spannungspegel an den beiden Leitungen einlesen und auswerten. Werde das ganze mit meinem Kunden besprechen auf welcher Lösung wir weiterarbeiten. Lt. Kunden funktionieren die Rechner generell einwandfrei, das Problem ist in der Montagelinie, die Stecker werden nicht richtig angesteckt bzw. der Stecker löst sich wieder bei der Montage... das sollte damit geprüft werden. Vielen Dank für Eure Hilfe!
Volker S. schrieb: > Olimex hat ja Boards mit uCs verschiedener Hersteller. Auch Digispark > ähnliche Boards mit Atiny85 sind dabei. Da ist leider der Pullup nicht schaltbar. Außerdem müsste man noch LED's dranfummeln. Die paar € mehr für den Olimexino-STM32 sind im kommerziellen Umfeld wohl kaum von Bedeutung; das Olimexino-STM32 hat außerdem noch CAN, kann man vielleicht für andere Automobil-Dinge brauchen :-) Bei beiden Boards braucht man aber noch einen Programmier-Adapter. Der vorprogrammierte USB-Bootloader würde wohl wieder eine Treiber-Installation bewirken, daher muss man den löschen/überschreiben. Alle bisher vorgestellten Varianten testen aber nur auf simple Kabelbrüche... Aufgrund von Störungen oder Wackelkontakt könnte es sein, dass diese Methoden zwar die Verbindung als intakt anzeigen, aber bei Übertragung größerer Datenmengen doch zu viele Fehler für eine stabile Verbindung auftreten. Insbesondere USB High Speed wird hier überhaupt nicht geprüft, was ja noch mal ganz andere Anforderungen an die Signalintegrität hat. Zum Testen von "richtigen" Datenübertragungen braucht's aber auf jeden Fall einen Treiber, und wenn's nur der für Mass Storage ist - der würde aber eine manuelle Aktion am PC erfordern. Das alles korrekt abzudecken wird aber bestimmt deutlich aufwendiger & teurer.
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.