Was ist Brown Out Reset in Mikrocontrollern? So verhindern Sie falsche Stromabschaltungen
Brown Out Reset ist eine wichtige Funktion, um die Zuverlässigkeit eines Mikrocontrollers nach dem Start zu erhöhen. Dieser Artikel wird normalerweise verwendet, um Probleme mit der Stromversorgung zu lösen. Dieser Artikel zeigt, wie Brown Out Reset ein weiteres Problem verhindern kann.
Überprüfung des Brown-Out-Resets
Ein „Brown-Out“ eines Mikrocontrollers ist eine teilweise und vorübergehende Reduzierung der Versorgungsspannung unter das für einen zuverlässigen Betrieb erforderliche Niveau. Viele Mikrocontroller verfügen über eine Schutzschaltung, die erkennt, wenn die Versorgungsspannung unter diesen Wert sinkt und das Gerät in einen Reset-Zustand versetzt, um einen ordnungsgemäßen Start bei Spannungswiederkehr zu gewährleisten. Diese Aktion wird als „Brown Out Reset“ oder BOR bezeichnet. Eine ähnliche Funktion heißt Low Voltage Detect (LVD), die komplexer ist und die Erkennung mehrerer Spannungspegel hinzufügt und einen Interrupt erzeugen kann, bevor ein Reset ausgelöst wird.
BOR wird oft durch ein Bit in einem Steuerregister aktiviert. Typischerweise wird ein Statusbit gesetzt, wenn das BOR einen Reset verursacht. Dieses Statusbit überlebt das Zurücksetzen (wenn die Stromversorgung nicht zu niedrig wird!) und ermöglicht dem Programm, das Problem zu erkennen und eine zusätzliche Wiederherstellung durchzuführen oder das Ereignis zu protokollieren.
Was passiert, wenn der BOR deaktiviert ist? Hier ist eine Darstellung einer stetig abfallenden Versorgungsspannung. Vielleicht ist dies eine Verschlechterung der Stromversorgung oder eine entladene Batterie.
V1 ist die normale Versorgungsspannung. V2 ist der Punkt, an dem der Mikrocontroller möglicherweise nicht zuverlässig arbeitet. Ich zeige V3 als einen Punkt, an dem der Betrieb vollständig aufhört. Zwischen V2 und V3 befindet sich eine „Gefahrenzone“, in der Dinge schief gehen können und der Betrieb unzuverlässig ist. Das Gerät könnte jahrelang einwandfrei funktionieren, während die Stromversorgung in den Gefahrenbereich ein- und ausgeht und dann, bam!, ein Fehler auftritt. Der BOR-Pegel wird oberhalb von V2 eingestellt und ersetzt den Gefahrenbereich durch einen Reset des Gerätes. Zurücksetzen ist nicht gut, aber (normalerweise) besser als unsicher.
Als nächstes erzähle ich eine Situation, in der das Netzteil normal funktionierte, aber BOR verwendet wurde, um ein anderes Problem zu lösen.
Eine andere Verwendung für Brown Out Reset finden (auf die harte Tour)
Ich entwarf eine Schaltung mit einem PIC-Mikrocontroller und 18 Spannungsreglern in einem Modul, das die +5-V-Stromversorgung für 18 Lichtsensoren steuert. Zwölf Module steuerten die 204 Sensoren in einem Array. Die Module sind Teil eines adaptiven Optiksystems an einem großen astronomischen Teleskop auf dem Mauna Kea in Hawaii. Hier ist das Innere eines Moduls.
Bilder mit freundlicher Genehmigung des Subaru-Teleskops
Der Mikrocontroller befindet sich nahe der Mitte der Platine und die 18 linearen Spannungsregler sind an den Wänden des Gehäuses montiert. Die Module und Sensoren sind auf wassergekühlten Platten montiert, um die Wärme von der optischen Bank, die sich über dem Sensorarray befindet, abzuleiten. Impulse von den Lichtsensoren gehen in das Modul, wo sie in differentielle RS-485-Signale umgewandelt und am Stecker in der oberen Mitte des Bildes ausgegeben werden. Darüber hinaus gibt es RS-485-Steuersignale, die in das Modul eingehen. Alle RS-485-Signale sind mit Schaltkreisen in einem Chassis in etwa 10 Metern Entfernung verbunden. Ein wichtiger Punkt ist, dass alle Schaltkreise in einem Modul mit derselben +5V-Versorgung betrieben werden.
Hier ist eine Nahaufnahme des Mikrocontrollers und der RS-485-Leitungstreiber und -empfänger, die für das Problem von zentraler Bedeutung sind. Die schwarze, modulare Buchse ist eine asynchrone, serielle Schnittstelle, die zwei weitere RS-485-E/A-Signale hinzufügt.
Die Module durchliefen umfangreiche Tests auf dem Prüfstand. Keine Probleme! Sie durchliefen monatelange Systemtests im Labor. Perfekt! Das große Ereignis war der erste Test am Teleskop. Scheitern! Bei etwa der Hälfte der Module ging die Kommunikation beim Aus- und Wiedereinschalten verloren. Ich habe den Debugger angeschlossen und festgestellt, dass der Mikrocontroller Code lief und ausführte, aber es gab beschädigte Variablen und die serielle Schnittstelle funktionierte nicht. Sehr seltsam.
Zuerst möchte ich sagen, dass das Debuggen mitten in der Nacht in einer Höhe von 4138 Metern bei einer Lufttemperatur von 4 ° C keinen Spaß macht. Aber gehen wir weiter. Hier ist ein Diagramm, das das Problem zeigt.
Auf der rechten Seite befindet sich das Modul mit RS-485-Leitungsempfängern, die an den Mikrocontroller und die +5V-Versorgung angeschlossen sind. Auf der linken Seite befinden sich am anderen Ende des Kabels Leitungstreiber, die immer eingeschaltet sind. Tatsächlich gibt es Treiber und Empfänger, die in beide Richtungen gehen, aber ich vereinfache. Wenn die Modulstromversorgung (VCC) ausgeschaltet war, waren die Remote-Leitungstreiber und -empfänger noch eingeschaltet (VDD). Die Signale wirkten wie Stromquellen und fanden ihren Weg durch die Modulschnittstellengeräte und direkt zur +5V-Stromversorgung oder durch die ESD-Schutzschaltung an den Mikrocontroller-Pins. Es war genug Strom vorhanden, um ein vollständiges Herunterfahren des Mikrocontrollers zu verhindern, und das Gerät befand sich im Gefahrenbereich.
Beim Einschalten des Moduls startete der Mikrocontroller nicht mit einer normalen Einschalt-Reset-Sequenz. Es begann zu laufen, aber mit Problemen. Warum wurde dies bei früheren Tests nicht angezeigt? Erinnern Sie sich an die wassergekühlten Platten? Die Kühlflüssigkeit am Teleskop war um einiges kälter als die Kühlflüssigkeit im Labor. Meine Theorie ist, dass die niedrigere Temperatur gerade ausreicht, um das Problem in einigen Modulen aufzudecken.
Die Lösung war einfach. Ich habe dem Code eine Anweisung hinzugefügt, um BOR zu aktivieren, und das Problem wurde gelöst. Ich habe übrigens viel länger gebraucht, um den Bericht zu schreiben und den Projektleiter davon zu überzeugen, dass alles in Ordnung ist, als das Problem zu beheben.
Falsches Herunterfahren
Hier ist ein Diagramm, das das allgemeine Problem zeigt.
Wenn das Netzteil ausgeschaltet ist, geht die Spannung nicht ganz nach unten. Stattdessen halten andere Stromquellen die Versorgungsspannung im Gefahrenbereich. Eine Beschreibung dieser Spannung ist „False Power“. Es gibt kein BOR, um diesen Zustand zu erkennen und einen Reset zu veranlassen. Das Gerät durchläuft beim erneuten Einschalten möglicherweise nicht die normale Einschaltsequenz, da die Einschalt-Reset-Schaltung möglicherweise nicht ausgelöst wird. Der weitere Betrieb ist unsicher, da die Stromversorgung unter das Minimum gefallen ist und kein Reset erfolgt.
In meinem Fall war der Mikrocontroller ein Microchip PIC16F877-20I/L. Bei diesem Teil handelt es sich um die Industrieversion mit einem Betriebstemperaturbereich von -40°C bis +85°C. Bei einem 16-MHz-Takt beträgt der Spannungsversorgungsbereich +4,0 V bis +5,5 V. Die Betriebsspannung im Modul (V1) betrug grundsolide +5V. Die Falschstromspannung am Mikrocontroller (V2) betrug ca. +1,5 V beim Betrieb am Teleskop . Ich habe es nicht im Labor gemessen, weil es kein Problem gab und ich nicht wusste, ob ich es überprüfen sollte. Außerdem hatte ich nie die Gelegenheit, es unter Laborbedingungen zu überprüfen, da das System nie vom Teleskop heruntergefahren ist.
Es gibt zwei weitere relevante Spezifikationen. Die „RAM Data Retention Voltage“ (\[V_{DR}\]) beträgt +1,5 V, „typisch “. Die „VDD-Startspannung“ (\[V_{POR}\]) zum Sicherstellen eines internen Power-On-Resets beträgt 0 V, „typisch “. Wenn ich all dies zusammenfalte, habe ich festgestellt, dass sich das Gerät innerhalb der Gefahrenzone befand. Es war kein Power-On-Reset zu erwarten, da die Spannung deutlich über \[V_{POR}\] lag. Außerdem war nicht zu erwarten, dass die falsche Stromversorgung das Gerät am Leben halten würde, da die falsche Stromversorgung die RAM-Erhaltungsspannung (\[V_{DR}\]) hatte. Wer weiß, was der Rest des Geräts gemacht hat?
Warum hat das Einschalten von BOR das Problem behoben? Die Brown Out Reset-Triggerspezifikation (\[V_{BOR}\]) liegt im Bereich von +3,7 V bis +4,35 V mit typisch +4,0 V. Der False Power-Pegel liegt deutlich unter der Triggerspannung für BOR. Problem gelöst. Es bleibt jedoch das Rätsel, warum die Mikrocontroller im Labor funktionierten und mit vielen, vielen Einschaltzyklen normal arbeiteten.
Schlussfolgerung
Ich fand eine Beschreibung dieser Situation am Ende einer Microchip Application Note (AN607), die es als „False Power-Down“ bezeichnet. Ich habe es nirgendwo anders dokumentiert gefunden.
Die falsche Macht kann aus Quellen kommen wie:
- Externe Signale (mein Fall)
- Mehrere Netzteile in einem Stromkreis
- Kondensatoren brauchen Zeit, um sich vollständig zu entladen
Es scheint, dass eine falsch hohe Stromquelle, die direkt an einen GPIO-Pin angelegt wird und das Gerät durch die ESD-Schutzschaltung eindringt, Probleme verursachen könnte, selbst wenn BOR aktiviert ist . Außerdem gibt es für Designs mit sehr geringem Stromverbrauch einen Grund, BOR überhaupt nicht zu verwenden, da es im Vergleich zu den Tiefschlafmodi einiger Geräte eine erhebliche Menge Strom verbraucht. Meine Schlussfolgerung ist, dass BOR und sein Nachfolger, LVD, nur noch komplizierter werden und False Power den Designern bei diesem kniffligen Teil ihrer Designs noch eine weitere Sache gibt, die sie berücksichtigen sollten.
Industrietechnik
- Was ist ein Netzwerksicherheitsschlüssel? Wie finde ich es?
- Was sind WLAN-Anrufe? Wie funktioniert es?
- Was ist 6G und wie schnell wird es sein?
- Wie drahtlose Energie die Fertigung verändert
- Teilentladungstest:Was ist das und wie funktioniert er
- Was ist Pumpenkavitation und wie vermeide ich sie?
- Was ist Plasmaschneiden und wie funktioniert Plasmaschneiden?
- Was ist Kupferlöten und wie wird es gemacht?
- Was ist Schweißporosität und wie kann man sie verhindern?
- Was ist Rost und wie kann man Rost verhindern? Eine vollständige Anleitung