Trennen von Strom in kommunizierenden 5-V-Subsystemen

Ich wurde von einem Sensor-Subsystem geplagt, das, wenn es mit meiner Basis-Mikrocontroller-Plattform verbunden ist, zeitweise Probleme verursacht, die ich kategorisch mit Power-Sequencing-Problemen beim Start in Verbindung bringen würde . Einige Beispiele für Dinge, die ich manchmal beobachtet habe, die anscheinend mit diesem angeschlossenen Sensor-Subsystem passieren:

  • Die Verarbeitungsplatine kommt nicht aus dem Reset heraus / startet ihr Programm nicht
  • Verarbeitung Board Erfahrungen Programm (Flash) Korruption
  • Die Verarbeitungsplatine erfährt eine Datenbeschädigung (EEPROM).
  • Die Verarbeitungsplatine kann die im EEPROM gespeicherten Werte nicht genau lesen
  • Die Verarbeitungsplatine kann das externe SPI / I2C-Gerät nicht initialisieren

Die Schnittstelle des Sensor-Subsystems ist ein UART (RX und TX), und die Stromversorgung erfolgt über die Verarbeitungsplatine, die auch über einen FET-basierten High-Side-Schaltkreis verfügt, der die 5 V an die Einheit leitet, die die Prozessorplatine liefert die Fähigkeit, das Sensorsubsystem herunterzufahren/einzuschalten. Zu Ihrer Information finden Sie hier einen schematischen Ausschnitt des High-Side-Schaltkreises.

Geben Sie hier die Bildbeschreibung ein

Diese Schaltung hat nie wirklich so funktioniert, wie ich es beabsichtigt hatte. Meine Firmware kann natürlich das Sensor-Subsystem herunterfahren. Aber es kann es nicht wieder einschalten, ohne selbst einen Reset durchzuführen. Was ein Alptraum! Aber zumindest kann es im Falle eines Kommunikationsfehlermodus heruntergefahren werden, daher habe ich eine Weile mit verschiedenen Firmware-Workarounds / Verhaltensmustern gelebt. Sich mit Problemumgehungen zufrieden zu geben, war jedoch ein Fluch, und ich möchte dem wirklich auf den Grund gehen.

Ich habe viel in meinem Kopf darüber nachgedacht und konnte keine Ursache mit Sicherheit eingrenzen, daher denke ich, dass es an der Zeit ist, meine Integrationsstrategie ernsthaft zu überdenken, um die Leistungsverteilung zwischen der Verarbeitung besser zu entkoppeln Platine und das Sensor-Subsystem irgendwie.

Mein System wird von einem 5-V-/2-A-AC/DC-Netzteil mit Strom versorgt, das über ausreichend Headroom (mindestens 50 %) für den Betrieb des gesamten Systems verfügt. Das Prozessor-Subsystem ist von mir selbst entworfen, das Sensor-Subsystem ist kommerziell von der Stange, ich kann es nicht ändern.

Hier also einige Fragen :

  1. Welche Art von Designänderungen würden Sie in meiner Situation in Betracht ziehen?
  2. Welche kohärenten Erklärungen gibt es dafür, warum mein Prozessor-Subsystem das Sensor-Subsystem nicht ausschalten und dann wieder einschalten kann, ohne selbst einen Reset durchzuführen?
  3. Welche Schritte kann ich unternehmen, um mein Design robuster / zuverlässiger zu machen, ohne die Bank zu sprengen (schließlich ist es kein sicherheitskritisches System oder so etwas)?

Querverweise auf tangential verwandte Fragen / Überlegungen hier .

Wie lang ist die Entladezeit des Sensors auf 0 V?
Haben Sie genügend Entkopplungskondensatoren auf beiden Modulen? Haben Sie die 5-V-Stromschiene erfasst, während Sie versucht haben, den Sensor einzuschalten?
Eine völlig andere Richtung hilft, das Problem zu teilen und zu erobern. Ein Muss von dem, was Sie oben aufgelistet haben, könnte auch mit einigen Softwareproblemen im Startcode zusammenhängen. Ich bin sicher, Sie halten es für unwahrscheinlich. Ich werde nicht streiten. Aber eine Sache, die Sie tun müssen, ist, Ihre Anwendung vollständig von der MCU zu entfernen und sie mit einem sehr, sehr einfachen Code-Bit neu zu programmieren, das nur ein Einschalten akzeptiert und einen I/O-Pin umschaltet. Das ist es. Nichts mehr. Gehen Sie dann zurück und sehen Sie, ob eines Ihrer Verhaltenslisten verschwindet. Wenn ja, haben Sie möglicherweise mehr als ein Problem, mit dem Sie sich befassen müssen. Es ist eine gute Idee, wenn Sie Hardwareprobleme lösen.
@TonyEErocketscientist Ich muss es noch einmal überprüfen, aber ich glaube, ich habe nach dem Ausschalten des Sensor-Subsystems eine Verzögerung von bis zu 10 Sekunden versucht, bevor ich versucht habe, es wieder einzuschalten, und die MCU springt immer noch. Ich bin mir ziemlich sicher, dass es bis dahin vollständig entladen ist. Aber ich kann versuchen, diese Zeit zu messen, sicher.
@immibis Ich habe keine Einsicht oder Kontrolle über die Entkopplung des Sensor-Subsystemmoduls. Das Verarbeitungssubsystem hat die übliche 0,1-uF-Keramik auf allen ICs, einschließlich des Mikrocontrollers, und 10-uF-Elektrolytkapazität auf der 5-V-Schiene. Ich muss ein bisschen Zeit finden, um ein Szenario einzurichten, in dem ich +5 V, SENSOR_5 V und SENSOR_RESET_5 V gleichzeitig erfassen und möglicherweise die MCU zurücksetzen kann.
@jonk ya Ich glaube wirklich nicht, dass es Software ist, aber es ist ein fairer Punkt - Eliminierungsprozess und all das, ich werde es auf der Liste behalten.

Antworten (1)

Überprüfen Sie die SENSOR_5V-Schiene und die +5V-Schiene während der Einschaltsequenz mit einem Oszilloskop. Sie haben wahrscheinlich eine schnelle Flanke auf der Schiene, möglicherweise mit Klingeln oder Unterspannung auf der +5-V-Schiene während des Schaltens.
Die Unterspannung auf der +5-V-Schiene ist am wahrscheinlichsten und wird wahrscheinlich durch niedrige ESR-Stromversorgungsfilterkappen auf dem Sensormodul verursacht. Sie können dies beheben, indem Sie einen Widerstand in Reihe mit dem Drain des NFET schalten. Dies bildet mit der Gate-Kapazität des PFET einen RC-Tiefpass und verlangsamt die Schaltflanken auf der Ausgangsschiene der Stromversorgung, wodurch der Spitzenstrombedarf zum Laden der Bypass-Kappen auf dem Sensormodul reduziert wird.

Welche Widerstandsgröße meinst du? Und meinst du damit, den Drain des NFET mit diesem Widerstand mit dem Gate des PFET zu verbinden? Spielt es eine Rolle, auf welcher Seite dieses Widerstands der Pull-up angeschlossen wird (NFET-Drain-Seite oder PFET-Gate-Seite)?
Der Idealwert würde einer Analyse bedürfen. Viele Sensorchips haben eine minimale oder maximale Rampenzeit für das Einschalten (normalerweise, um ein zuverlässiges Zurücksetzen des Chips beim Einschalten sicherzustellen). Um es einfach zu halten, würde ich mit einem 1K-Widerstand am Gate des PFET beginnen. Wenn Sie einen Widerstand, der nicht klein ist, auf den NFET-Drain setzen, wird Vgs auf dem PFET verringert (na ja, erhöhen Sie ihn, da er negativ ist), was die Dinge komplizieren kann. Sie brauchen wirklich ein Oszilloskop, um solche Probleme zu diagnostizieren und zu beheben. Wenn es sich um ein Produkt oder Produktionssystem handelt, ist es keine gute Strategie, daran herumzustochern, bis es funktioniert.
Ich habe einen 4-Kanal Tek DPO2014, also kann ich sicher prüfen und auslösen. Nur schwer zu wissen, wonach ich suche.
Setzen Sie eine Sonde auf die +5V-Schiene und eine andere auf die SENSOR_5V-Schiene, triggern Sie auf der steigenden Flanke bei 2 V oder so auf der SENSOR_5V-Schiene. Sie sollten sehen, was während des Einschaltereignisses auf beiden Schienen passiert. Wenn Sie nichts Interessantes finden, versuchen Sie, die +5-V-Schiene auf AC-Kopplung einzustellen, und drehen Sie V/div für diesen Kanal hoch, triggern Sie bei -0,1 V. Eine so kleine Störung sollte nichts beeinflussen, aber zumindest können Sie genau sehen, was vor sich geht.
Super, danke für die Tipps, werde ich auf jeden Fall machen. Ich finde mich fast nie mit AC-Kopplung wieder :-), wie ... analog. FYI Ich habe eine Folge- / Tangentialfrage gepostet, nachdem ich diese Antwort in Betracht gezogen hatte electronic.stackexchange.com/questions/386136/…