Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Wat is Brown Out Reset in microcontrollers? Hoe valse power-downs te voorkomen

Brown Out Reset is een belangrijke functie om de betrouwbaarheid van een microcontroller na het opstarten te vergroten. Dit artikel wordt normaal gesproken gebruikt om problemen met de voeding op te lossen en laat zien hoe Brown Out Reset een ander probleem kan voorkomen.

Review van Brown Out Reset

Een "brown-out" van een microcontroller is een gedeeltelijke en tijdelijke verlaging van de voedingsspanning tot onder het niveau dat nodig is voor een betrouwbare werking. Veel microcontrollers hebben een beveiligingscircuit dat detecteert wanneer de voedingsspanning onder dit niveau komt en het apparaat in een reset-status zet om een ​​goede start te garanderen wanneer de stroom terugkeert. Deze actie wordt een "Brown Out Reset" of BOR genoemd. Een vergelijkbare functie wordt Low Voltage Detect (LVD) genoemd, die complexer is en detectie van meerdere spanningsniveaus toevoegt en een onderbreking kan veroorzaken voordat een reset wordt geactiveerd.

BOR wordt vaak geactiveerd door een bit in een controleregister. Gewoonlijk wordt een statusbit ingesteld wanneer de BOR een reset veroorzaakt. Dit statusbit overleeft de reset (als de stroom niet te laag wordt!) en stelt het programma in staat het probleem te detecteren en extra herstel uit te voeren of de gebeurtenis te loggen.

Wat gebeurt er als de BOR is uitgeschakeld? Hier is een afbeelding van een gestaag dalende voedingsspanning. Misschien is dit een verslechterende stroomvoorziening of een ontladende batterij.

V1 is de normale voedingsspanning. V2 is het punt waarop de microcontroller mogelijk niet betrouwbaar werkt. Ik toon V3 als een punt waar de werking volledig stopt. Tussen V2 en V3 bevindt zich een “gevarenzone” waar het mis kan gaan en de bediening onbetrouwbaar is. Het apparaat kan jarenlang correct werken terwijl de voeding in en uit de gevarenzone gaat en dan, bam!, is er een storing. Het BOR-niveau is ingesteld boven V2 en vervangt de gevarenzone door een reset van het apparaat. Reset is niet goed, maar (meestal) beter dan onzeker.

Vervolgens vertel ik een situatie waarin de voeding normaal werkte, maar BOR werd gebruikt om een ​​ander probleem op te lossen.

Een ander gebruik vinden voor Brown Out Reset (The Hard Way)

Ik ontwierp een circuit met een PIC-microcontroller en 18 spanningsregelaars in een module die +5V-stroom naar 18 lichtsensoren regelt. Twaalf modules bestuurden de 204 sensoren in een array. De modules maken deel uit van een Adaptive Optics-systeem bij een grote, astronomische telescoop op Mauna Kea op Hawaï. Hier is de binnenkant van een module.

Foto's met dank aan de Subaru-telescoop

De microcontroller bevindt zich in het midden van het bord en de 18 lineaire spanningsregelaars zijn aan de wanden van de behuizing gemonteerd. De modules en sensoren zijn gemonteerd op watergekoelde platen om warmte weg te leiden van de optische bank die zich boven de sensorarray bevindt. Pulsen van de lichtsensoren gaan naar de module waar ze worden omgezet in differentiële, RS-485-signalen en worden uitgevoerd op de connector in het midden bovenaan de afbeelding. Daarnaast zijn er RS-485 stuursignalen die in de module gaan. Alle RS-485-signalen worden aangesloten op circuits in een chassis op ongeveer 10 meter afstand. Een belangrijk punt is dat alle circuits in een module op dezelfde +5V-voeding werken.


Hier is een close-up van de microcontroller en RS-485-lijndrivers en -ontvangers die centraal staan ​​in het probleem. De zwarte, modulaire aansluiting is een asynchrone, seriële interface die nog twee RS-485 I/O-signalen toevoegt.

De modules zijn uitgebreid getest op de bank. Geen problemen! Ze ondergingen maandenlang systeemtesten in het laboratorium. Perfect! Het grote evenement was de eerste test bij de telescoop. Mislukking! De communicatie met ongeveer de helft van de modules ging verloren toen de stroom werd uit- en weer ingeschakeld. Ik heb de debugger aangesloten en ontdekte dat de microcontroller actief was en code uitvoerde, maar er waren beschadigde variabelen en de seriële interface werkte niet. Heel vreemd.

Ten eerste wil ik zeggen dat foutopsporing midden in de nacht op een hoogte van 13.589 voet (4.138 meter) met een luchttemperatuur van 40 ° F (4 ° C) niet leuk is. Laten we echter verder gaan. Hier is een diagram dat het probleem laat zien.

Aan de rechterkant is de module met RS-485 lijnontvangers aangesloten op de microcontroller en de +5V voeding. Aan de linkerkant bevinden zich lijndrivers aan het andere uiteinde van de kabel die altijd zijn ingeschakeld. Eigenlijk zijn er stuurprogramma's en ontvangers die in beide richtingen gaan, maar ik vereenvoudig het. Toen de modulevoeding (VCC) was uitgeschakeld, stonden de externe lijndrivers en ontvangers nog steeds aan (VDD). De signalen fungeerden als stroombronnen en vonden hun weg via de module-interface-apparaten en rechtstreeks naar de +5V-voeding of via de ESD-beveiligingsschakelingen op de microcontroller-pinnen. Er was genoeg stroom om te voorkomen dat de microcontroller volledig werd uitgeschakeld en het apparaat bevond zich in de gevarenzone.

Toen de voeding van de module werd ingeschakeld, startte de microcontroller niet met een normale reset-volgorde bij het inschakelen. Het begon te lopen, maar met problemen. Waarom kwam dit niet naar voren tijdens eerdere tests? Herinner je je de watergekoelde platen nog? De koelvloeistof bij de telescoop was een stuk kouder dan de koelvloeistof in het lab. Mijn theorie is dat de lagere temperatuur net genoeg was om het probleem in sommige modules aan het licht te brengen.

De oplossing was eenvoudig. Ik heb een statement in de code toegevoegd om BOR in te schakelen en het probleem was opgelost. Trouwens, het kostte me veel meer tijd om het rapport te schrijven en de projectmanager ervan te overtuigen dat alles in orde was dan nodig was om het probleem op te lossen.

Valse uitschakeling

Hier is een diagram dat het algemene probleem laat zien.

Als de voeding is uitgeschakeld, gaat de spanning niet helemaal naar beneden. In plaats daarvan houden andere stroombronnen de voedingsspanning in de gevarenzone. Een beschrijving van deze spanning is "False Power". Er is geen BOR om deze toestand te detecteren en een reset te veroorzaken. Het apparaat doorloopt mogelijk niet de normale opstartvolgorde wanneer de stroom weer wordt ingeschakeld, omdat het systeem voor het resetten bij inschakelen mogelijk niet wordt geactiveerd. De verdere werking is onzeker omdat de stroomtoevoer onder het minimum ging en er geen reset is.

In mijn geval was de microcontroller een Microchip PIC16F877-20I/L. Dit onderdeel is de industriële versie met een bedrijfstemperatuurbereik van -40°C tot +85°C. Met een klok van 16 MHz is het voedingsbereik +4,0V tot +5,5V. De bedrijfsspanning in de module (V1) was een rotsvaste +5V. De False Power-spanning bij de microcontroller (V2) was ongeveer +1,5V bij gebruik bij de telescoop . Ik heb het niet in het laboratorium gemeten omdat er geen probleem was en ik niet wist om het te controleren. Bovendien heb ik nooit de kans gehad om het te controleren met laboratoriumomstandigheden omdat het systeem nooit uit de telescoop is gevallen.

Er zijn nog twee andere relevante specificaties. De "RAM-gegevensbehoudspanning" (\[V_{DR}\]) is +1,5V, "typisch ”. De "VDD Start Voltage" (\[V_{POR}\]) om te verzekeren dat een interne power-on reset 0V is, "typisch ”. Als ik dit alles samenvouw, weet ik dat het apparaat zich ruim binnen de gevarenzone bevond. Er was geen power-on reset te verwachten omdat de spanning ruim boven \[V_{POR}\] lag. Er was ook geen verwachting dat de False Power het apparaat in leven zou houden, aangezien False Power de RAM-retentiespanning had (\[V_{DR}\]). Wie weet wat de rest van het apparaat aan het doen was?

Waarom heeft het inschakelen van BOR het probleem opgelost? De Brown Out Reset-triggerspecificatie (\[V_{BOR}\]) is een bereik van +3,7V tot +4,35V met typisch +4,0V. Het False Power-niveau ligt ruim onder de triggerspanning voor BOR. Probleem opgelost. Er is echter nog steeds het mysterie waarom de microcontrollers in het laboratorium werkten en normaal werkten met vele, vele stroomcycli.

Conclusie

Ik vond een beschrijving van deze situatie aan het einde van een Microchip-toepassingsnota (AN607) die het een "False Power-Down" noemt. Ik heb het nergens anders gedocumenteerd gevonden.

De valse kracht kan afkomstig zijn van bronnen zoals:

  • Externe signalen (mijn geval)
  • Meerdere voedingen in een circuit
  • Condensatoren hebben tijd nodig om volledig te ontladen

Het lijkt erop dat een valse stroombron die hoog genoeg is die rechtstreeks op een GPIO-pin wordt toegepast en het apparaat binnenkomt via het ESD-beveiligingscircuit problemen kan veroorzaken, zelfs wanneer BOR is ingeschakeld . Voor ontwerpen met een zeer laag energieverbruik is er ook reden om BOR helemaal niet te gebruiken, omdat het een aanzienlijke hoeveelheid stroom verbruikt in vergelijking met de diepe slaapmodus van sommige apparaten. Mijn conclusie is dat BOR en zijn opvolger, LVD, alleen maar ingewikkelder worden en False Power geeft ontwerpers nog een ding om te overwegen in dit lastige deel van hun ontwerpen.


Industriële technologie

  1. Wat is een netwerkbeveiligingssleutel? Hoe vind je het?
  2. Wat is bellen via wifi? Hoe werkt het?
  3. Wat is 6G en hoe snel zal het zijn?
  4. Hoe draadloze energie de productie transformeert
  5. Gedeeltelijke ontladingstesten:wat is het en hoe werkt het
  6. Wat is pompcavitatie en hoe voorkom ik het?
  7. Wat is plasmasnijden en hoe werkt plasmasnijden?
  8. Wat is kopersolderen en hoe het te doen?
  9. Wat is lasporositeit en hoe kan dit worden voorkomen?
  10. Wat is roesten en hoe voorkom je roest? Een volledige gids
  11. Hoe u niet-bevochtigende defecten kunt voorkomen?