Dans quelle situation dois-je désactiver la fonction de détection de baisse de tension sur un microcontrôleur?

33

Lorsque l’alimentation d’un microcontrôleur tombe sous un certain seuil, une panne de courant survient et la mémoire RAM peut être corrompue. Dans la mesure où chaque séquence de coupure de courant du circuit peut signifier une condition de «baisse de tension», j'active toujours le mécanisme de réinitialisation de la détection de perte de tension lorsque je travaille avec des microcontrôleurs.

Je me demandais s'il y a des situations dans lesquelles il n'est pas recommandé d'activer la fonction de réinitialisation de panne générale?

m.Alin
la source
4
Les détecteurs de baisse de tension peuvent également consommer du courant qui devrait être pris en compte pour les applications de micro-alimentation.
HL-SDK
Etant donné les divers inconvénients de la détection de BO signalés dans les réponses, réfléchissez également à ceci: Pouvez-vous fournir une certitude personnalisée dans votre cas particulier? Dans certains cas, vous pourriez par exemple garantir un approvisionnement suffisant ou une panne totale => économiser les ressources pour BOD
Mark

Réponses:

11

Comme indiqué précédemment, l'activation du circuit de baisse de tension augmentera souvent la consommation de courant. De plus, parce que les fabricants veulent généralement faire en sorte que le circuit brun-out se déclenchera sur toute tension qui pourrait être assez faible pour causer d' autres parties de la puce à la fonction, de nombreuses parties seront en mesure de fonctionner à une tension inférieure à brun à mobilité réduite . Par exemple, un contrôleur peut fonctionner la plupart du temps à 1,5 volt à la température ambiante, mais dans certaines conditions stressantes (telles qu'une température élevée), il peut ne pas fonctionner correctement à 1,99 volt. Pour garantir que le dispositif se réinitialise dans toutes les conditions pouvant entraîner un dysfonctionnement, le circuit de panne de courant peut être conçu pour déclencher à 2,1 volts +/- 100 mV.

Si un appareil avec un tel contrôleur était alimenté par deux piles alcalines AA, l'activation du circuit de baisse de tension pourrait rendre l'appareil inutilisable avec une tension de batterie de 1,1 volt par cellule et entraînerait probablement son arrêt du fonctionnement au moment où la tension atteinte est atteinte. 1,05 volt par cellule. Désactiver le circuit de baisse de tension prolongerait probablement le fonctionnement à au moins 0,9 volt par cellule et même peut-être à 0,75 volt par cellule. Si aucun dysfonctionnement plausible susceptible de se produire à basse tension ne risque d’endommager davantage les batteries usagées, désactiver le circuit d’atténuation serait un moyen simple d’augmenter la durée de vie de la batterie, même s’il ne réduisait pas la consommation de courant des batteries utilisables.

supercat
la source
22

Tout a des tolérances, donc le niveau de réinitialisation contre la surtension doit être légèrement supérieur au niveau minimum auquel il est garanti que la puce fonctionne correctement.

Il est donc possible que la panne se déclenche bien avant le dysfonctionnement de la puce. Vous devez donc vous demander, pour cette région, où la puce peut fonctionner correctement mais vous ne pouvez pas en être sûr, choisiriez-vous

  • laisser la puce fonctionner et espérer le meilleur (ça pourrait marcher!), ou
  • de laisser la puce être réinitialisée (et maintenue en réinitialisation) par le circuit de panne de courant.

Si le coût du dysfonctionnement n’est pas beaucoup plus élevé que le coût du non-fonctionnement du tout, la première option est préférable. Pensez à la fonctionnalité Ping d'une "boîte noire" d'avion. Je vous en prie, laissez-le continuer s'il a la moindre chance que cela donne un ping!

De l'autre côté, envisagez le déclenchement d'une bombe ou d'un airbag de voiture. S'il y a la moindre chance qu'il se déclenche accidentellement en raison d'une basse tension, il vaut mieux qu'il s'éteigne tout seul. Cela suppose bien sûr que la fermeture de moyens ne s'enflamme pas!

Il y a des situations où aucun bon choix n'est disponible. Considérez le fameux premier lancement de fusée Ariane V. Le ou les ordinateurs de contrôle de la direction ont mal fonctionné (dans ce cas, cela n’est pas dû à une faible puissance). Que devrait-il faire? Continuer signifie sans doute que l'on se dirige dans la mauvaise direction, mais arrêter signifie ne pas diriger du tout, ce qui donne le même résultat. Ce n’est pas non plus une belle perspective pour les personnes dans le bunker de contrôle dans lequel la fusée pourrait se perdre :(


Comme le remarque Ross, une sauvegarde est bien sûr une bonne idée pour un système à mission circulaire. Mais cela déplace le problème de conception vers cette sauvegarde. Et si ça échoue? (Dans la pratique, il y en a souvent trois, actifs tout le temps, avec un vote à la majorité.) Dans le cas d'Ariane 5, les ordinateurs principal et les ordinateurs de secours ont échoué (bien que ce ne soit pas de leur faute, mais c'est une autre histoire). C’est qu’un autre système (peut-être même un humain dans la salle de contrôle) a-t-il détecté que tout était incontrôlable et a déclenché l’autodestruction. Mieux vaut que la fusée explose dans les airs et tombe par petits morceaux dans la mer qui la fait poursuivre son vol en une seule pièce dans une direction quelconque.

Wouter van Ooijen
la source
Pour la situation de fusée, la meilleure solution consiste à avoir un ordinateur de sauvegarde qui prendra le relais en cas d'échec du premier et que le premier soit arrêté, n'est-ce pas?
Ross Aiken
ajout de texte
Wouter van Ooijen le
L’histoire d’Ariane 5 est en réalité beaucoup plus compliquée et la gestion des erreurs était en partie la raison de cet échec. esamultimedia.esa.int/docs/esa-x-1819fra.pdf
starblue
1
Non, la gestion des erreurs n'en était pas la cause. C’était l’utilisation d’un système éprouvé (avec Ariane 4) avec des données non conformes aux spécifications d’origine sans les tester avec les nouvelles données . (De tels tests avaient été planifiés à l'origine, mais ont ensuite été abandonnés dans un programme de réduction des coûts;)
Wouter van Ooijen le
10

Si vous ne vous souciez pas de la réinitialisation (par exemple, on peut faire confiance à l’utilisateur pour l’éteindre et le rallumer si tout ne fonctionne pas parfaitement, et qu’aucun dommage ne peut être causé) et que la consommation électrique est importante. microampères. (ou si vous vous en souciez, vous pouvez utiliser un meilleur circuit externe que celui de la sorte qui est intégré).

Si le BOR interne est inadéquat pour la tâche (les tolérances peuvent ne pas être appropriées, par exemple), vous pouvez également le désactiver et utiliser un élément externe.

Une exigence intéressante à certaines fins est que vous devez connaître la tension maximale en dessous de laquelle des éléments tels que les mémoires EEPROM ne fonctionnent pas, afin que le BOR puisse empêcher le fonctionnement et ne garantir aucune corruption. Cela pourrait être un peu subtil pour certains circuits BOR intégrés.

Spehro Pefhany
la source
10

Vous pouvez choisir de désactiver le BOR s'il existe un bogue pour lequel le BOR ne fonctionne pas correctement.

Module: Régulateur de tension

Le périphérique peut ne pas quitter l'état BOR si un événement BOR se produit.

Voir le point 15 de la PIC32MX534 / 564/664/764 Errata de silicium des familles et clarification de la fiche de données .

mjcopple
la source
8
Aie. À quelle partie appartient cette belle erreur?
Spehro Pefhany
1
Comment quelque chose comme ça en fait-il une production?
Matt Young
1
C'est hilarant. Et par hilare je veux dire presque criminel.
Ignacio Vazquez-Abrams
1
Le périphérique particulier était le PIC32MX664F et seulement quelques révisions de silicium. La plupart du temps, il ne sortait normalement de BOR qu'une fois sur 20 environ.
mjcopple
@ Matt Young: comme la plupart des utilisations de ces microcontrôleurs PIC, BOR n'existe que pour l'éteindre avant que le silicone ne commence à exécuter des instructions aléatoires lorsque vous débranchez la fiche. Si vous avez une routine de reflash dans la ROM, il est possible que celle-ci tente de se faire clignoter si BOR n’existait pas.
Josué
2

Il existe des situations dans lesquelles vous pouvez utiliser un circuit de délestage externe personnalisé.

Il y a des microcontrôleurs où la résolution des niveaux bruns est assez petite.

Supposons que vous travailliez avec un µc où les deux niveaux de baisse de tension les plus élevés sont 4,3 V et 2,7 V (fréquents en cas d'AVR). Vous avez déterminé que, aux fréquences que vous utilisez, 2,7 V n'est pas sûr. Toutefois, 4,3 V serait trop élevé, car cela limiterait la durée de fonctionnement après une panne de courant.

Je dois souvent travailler avec des appareils susceptibles de perdre fréquemment la connexion à une source d'alimentation externe, puis de survivre avec des condensateurs ou des batteries. Si vous avez un niveau de tension négative de 4,3 V, l'appareil s'éteindra trop tôt. 2.7 conduirait à la corruption de données. Toutefois, si, par exemple, 3,5 V était un niveau de baisse de tension sûr, vous pouvez créer un circuit de réduction de tension externe qui fonctionne en tirant sur la ligne de réinitialisation de votre microcontrôleur. Dans ce cas, le circuit de délestage interne est inutile et peut être désactivé.

Si vous avez plusieurs processeurs dans le même système, il est logique d'utiliser un seul contrôleur de réinitialisation externe pour chacun d'entre eux. Dans ce cas, la désactivation des détecteurs de baisse de tension individuels dans les processeurs est non seulement utile pour l’avantage marginal d’économies d’énergie, mais elle est également nécessaire pour éviter la situation dans laquelle certains processeurs sont réinitialisés et d’autres en cours de fonctionnement.

vsz
la source
1
Je sais que vous ne choisissez pas AVR, mais je me sens obligé de mentionner que 1) différentes lignes d’AVR ont des seuils BOR différents, et 2) les AVR rendent le signal de réinitialisation visible de l’extérieur sur nRESET. Si vous faites très attention, vous pouvez en utiliser un. comme contrôleur de réinitialisation.
Ignacio Vazquez-Abrams Le
1

Nous avons dû activer et désactiver le VBOR pendant une partie du démarrage en raison d’un bogue dans le silicium des microcontrôleurs que nous utilisions. En chargeant les capuchons sur la pompe à tension, l'appareil serait momentanément au-dessus des minimums et le VBOR continuerait à se déclencher. Nous avons donc éteint le VBOR lors de la mise sous tension et l’allumons environ 10 ms plus tard.

Josué
la source