Ein-/Ausschalten des Stroms von der USB-Tx-Leitung

Ich mache ein Gerät, das mit Wasser in Kontakt kommt, also ist die Elektronik in Epoxid gekapselt. Ich möchte die Möglichkeit haben, den Mikrocontroller neu zu programmieren, also möchte ich Kontaktpunkte hinzufügen, an die ich USB-Mikroleitungen anschließen kann. Das Problem ist, dass an diesen Punkten offensichtlich kein Strom austreten kann, wenn es nicht an USB angeschlossen ist und es sich im Wasser befindet. Ich kann den Vin mit einer Diode vom Rückfluss abhalten, aber ich kann nicht herausfinden, wie ich den Strom von der TX-Leitung des Mikros stoppen kann.

Ich habe dort auch eine Diode ausprobiert, aber wenn ich die TX-Leitung an den USB anschließe, brauche ich Strom, um vom Mikro zu fließen. Ich habe versucht, einen n-Kanal-Mosfet mit einem I / O-Pin zur Steuerung des Gates zu verwenden, und hatte die TX-Leitung zwischen Drain und Source aufgeteilt, aber es schien nicht ganz richtig zu funktionieren.

Idealerweise möchte ich, dass das Gate automatisch ist, wo es sich öffnet, wenn der USB angeschlossen / erkannt wird, aber ich könnte auch einen I / O-Pin verwenden, um ein Gate zu steuern, da das Mikro über Bluetooth verfügt. Die Spannungen sind niedrig - 5 V von USB, Mikro ist 3,3 V.

Wie verhindere ich, dass der USB Strom verliert, wenn er nicht verwendet wird?

Es gibt wasserdichte Anschlüsse, und einige funktionieren sogar mit USB-Signalen. Die USB-Version < 3.0hat keine dedizierte Tx-Leitung.
Gummibeschichteter Knopf, den Sie drücken, um USB zu aktivieren? Oder muss der Mikrocontroller die USB-Pins deaktivieren, bis er erkennt, dass VIN hoch geht?
Sie könnten dieser Leitung einen Optokoppler hinzufügen. Stromversorgung über USB.
Wenn Sie mit voller Geschwindigkeit leben können (nicht mit hoher Geschwindigkeit), kann ein isolierter Transceiver die Arbeit erledigen. linear.com/product/LTM2894
Warum können Sie keine Softwarelösung verwenden? Bei einigen Mikrocontrollern können Sie die USB-Pins als allgemeines GPIOS konfigurieren und Pulldown-Widerstände einschalten. Sie könnten die 5 V vom USB zum Mikro führen und feststellen, wann der USB angeschlossen ist. Wenn 5 V erkannt werden, aktivieren Sie die USB-Ports.
Erstens hat USB keine "Tx"-Leitung. Zweitens darf ein USB-Gerät nichts herauslecken, VBUS ist ein INPUT und D+/D- sind ebenfalls Eingänge und sollten kein Potenzial haben. Wenn sie ziehen, wenn kein Eingang zum VBUS erfolgt, ist das USB-Gerät defekt.
Ich denke, das Problem ist, dass einige MCU mit USB-Schnittstelle D + (Signal zum Verbinden) hochziehen, unabhängig davon, ob der VBUS angelegt ist (dh an einen Host angeschlossen ist) oder nicht. Dies ist genau einer der Fälle, in denen USB-Spezifikationen ausdrücklich angeben, dass ein USB-Gerät, wenn es nicht mit einem Host verbunden ist, an keinem Pin an der Schnittstelle Spannung haben sollte.
Per Bluetooth umprogrammieren?
Alles gute Antworten, danke für die Anregungen. Ali, ich weiß nicht, warum auf der D+-Leitung Spannung/Strom anliegt ... Ich stimme zu, dass es seltsam ist. Könnte schlechtes Design des Herstellers sein. Ich frage mich auch, ob die Diode am VIN dazu führt, dass der USB aus irgendeinem Grund angeschlossen ist. Ich werde es heute Abend testen.
@ Kirkx060, Betreff: Warum liegt Spannung an D + an. Ich weiß. Dies ist eine brutale Missachtung der USB-Spezifikationen. Die meisten billigen MCUs haben diesen Konstruktionsfehler, hauptsächlich weil sie davon ausgehen, dass ihr IC ausschließlich als "busbetriebenes" Gerät verwendet wird (kein Host-VBUS - kein Strom - kein D + -Pullup) und selten über eine interne Batterieleistung verfügen.

Antworten (2)

Die meisten USB-fähigen Mikrocontroller verwenden Allzweck-I/Os für diese Funktion, sodass Sie sie als Eingänge zuweisen und mit schwächenden Ziehwiderständen versehen können. Entgegen der bisherigen Aussage wäre ein Pulldown einem Pullup vorzuziehen, da dadurch die I/Os auf das gleiche Potential wie die vermutlich ebenfalls freigelegte Masse gelegt würden. Sie auf einem anderen Potential zu haben, könnte einen kleinen Kriechweg bedeuten, der sowohl Energie verschwendet als auch möglicherweise elektrochemische Korrosion oder Kontaktätzung fördern würde. Selbst bei benetzten Kontakten auf dem gleichen Potential möchten Sie sicherstellen, dass sie alle aus dem gleichen Metall bestehen.

In ähnlicher Weise sollten Sie den USB-Geschwindigkeitserkennungs-Pullup deaktivieren.

Sie stehen jedoch vor einem ernsteren Problem, da es äußerst schwierig ist, eine wirklich wasserdichte Abdichtung zwischen Drähten und einer zufälligen Epoxidverbindung zu erhalten. Wenn Sie die Drähte zuerst abisolieren, müssen Sie das Metall perfekt mit dem Epoxid versiegeln, und wenn Sie die Isolierung durchziehen, wird wahrscheinlich Wasser zwischen dem Draht und seiner Isolierung wandern.

So etwas wie ein Stecker unter einer abschraubbaren Kappe mit einer komprimierten Dichtung kann vorzuziehen sein. Oder Sie könnten einen Bootloader mit einer Art induktiver oder sogar optischer serieller Schnittstelle verwenden.

Aber natürlich müssen Sie auch das Problem lösen, Strom ohne Feuchtigkeitslecks hineinzubekommen.

Ich werde das überprüfen, aber ich weiß nicht, ob ich die USB-Pins auf diesem steuern kann. Es ist ein Adafruit-Federblei. Um die Versiegelung der Kontakte mache ich mir keine Sorgen ... es ist kein Druck, nur Wasserkontakt. Außerdem habe ich dieses Epoxid in der Vergangenheit verwendet, um flexible Verbindungen abzudichten, die starkem Druck ausgesetzt waren, und hatte nie ein Problem. Der Verbinder unter einer Schraube mit Dichtung ist mein Backup-Plan.
@Chris, können Sie Ihre Aussage stützen, dass "die meisten MCUs" mit USB-Schnittstelle USB-Pins als GPIO implementieren? Meine Erfahrung ist, dass die meisten MCUs einen dedizierten USB-PHY haben und dedizierte Pins für D + und D- verwenden, die nicht neu konfiguriert werden können?
Versuchen Sie, einige Datenblätter zu lesen ... Ich habe Mühe, an eine MCU mit einer Schnittstelle mit voller Geschwindigkeit zu denken, die GPIO an den USB-Pins nicht unterstützt, obwohl ich sicher bin, dass sie irgendwo existieren. Das "Problem", auf das Sie hinzuweisen scheinen, ist wahrscheinlich eines, das nur bei USB-Hochgeschwindigkeits-Physik auftritt, die bei MCUs ziemlich ungewöhnlich sind (die mit solchen Datenraten im Allgemeinen nichts Nützliches tun konnten). USB-High-Speed ​​ist häufiger auf SoCs als auf MCUs zu finden, obwohl es eine kleine Anzahl von MCUs mit Hochgeschwindigkeits-USB-Implementierungen gibt, die dafür ausgelegt sind, Daten zu/von anderen Schnittstellen zu verschieben, anstatt den MCU-Kern mit geringer Leistung.
Wenn Sie wissen, was nötig ist, um USB-Signale auch bei FS zu empfangen, würden Sie nicht "zu denken kämpfen". Um die seriellen FS-Daten richtig zu empfangen, benötigen Sie ein ~5-faches Oversampling des 83 ns langen Bitmusters oder einen 16-ns-Zyklus für Bit-Banging über GPIO. Wenn Sie jemals Echtzeit-Embedded-Programmierung durchgeführt haben, wissen Sie, dass eine Programmschleife mit 16-ns-Zyklus auf einer gewöhnlichen MCU nicht möglich ist, wobei der Parallax-Propeller (mit 8 speziell kaskadierten 32-Bit-Prozessoren) eine Ausnahme darstellt. Daher würde ich Ihnen dringend raten, Ihre Aussagen zur GPIO-Nutzung für die FS-USB-Schnittstelle zurückzunehmen.
Sie scheinen etwas verwirrt darüber zu sein, wie gewöhnliche MCUs funktionieren. Die Erwähnung bezieht sich auf den Normalfall von MCUs, bei denen die Pins, die USB implementieren, alternativ als GPIO verwendet werden können. Das bedeutet nicht, dass der USB durch Bit-Banging des GPIO-Ports implementiert wird , nur dass es eine Funktionsauswahl zwischen den beiden Verwendungsmöglichkeiten gibt (oder heute häufiger, ziemlich viele Möglichkeiten für jeden Pin)

Warum nicht Bluetooth verwenden? Es kann UART im Inneren sein, also einfach zu bedienen, einfach zu versiegeln, von jedem Gerät unterstützt, definitiv billiger und einfacher als das Wechseln von USB- oder versiegelten Anschlüssen.

Gute Frage, aber ich glaube nicht, dass ich das kann. Ich probier es aber noch ein bisschen aus.
Nehmen Sie das BT-Modul von ST oder Murata oder TI