Comment Raspbian détecte la sous-tension

16

Comment le Pi sait-il qu'il est sous-alimenté et qu'il montre le boulon d'éclairage?

Comme la plupart d'entre nous le savent, si vous utilisez une mauvaise alimentation, vous obtenez le coup de foudre vous indiquant que vous êtes sous-alimenté.

J'ai remarqué que lorsque j'exécute mon Pi sur batterie, les 15 dernières minutes environ avant que le Pi ne redémarre, l'éclair commence à apparaître et y reste finalement jusqu'à ce que les redémarrages, ce qui est logique car la tension de ma batterie baisse telle quelle drainé.

Cela m'a fait penser que je pouvais l'utiliser pour créer un programme qui éteint le Pi lorsqu'il détecte une sous-tension constante. Je sais qu'avant que cela ne se produise, ce serait encore mieux, mais cela ne m'inquiète pas.

Existe-t-il une commande de tension comme sudo vcgenmd measure_tempde température pour savoir quelle est la tension? Sinon, comment le Pi sait-il quand il est sous-alimenté?

EDIT : Ce n'est pas un doublon car l'autre question suggère que vous avez besoin d'un matériel externe. Je souligne que ce n'est pas strictement nécessaire.

NUL
la source

Réponses:

4

Certains modèles Pi ont une puce intégrée qui détecte une basse tension. Ceci est utilisé pour piloter la LED d'alimentation sur certains modèles Pi.

Modèles A +, B +, Pi2B

Le voyant d'alimentation rouge est connecté au GPIO 35. Vous pouvez surveiller le GPIO pour vérifier une condition de sous-tension (inférieure à 4,65 V).

surveillance

Pour surveiller le GPIO, vous devez lire sa valeur. Si la valeur normale (bon état de puissance) est élevée (1), une sous-tension sera indiquée lorsqu'elle indiquera faible (0). Le GPIO reviendra à son état normal si la condition de sous-tension est supprimée. Par conséquent, vous devrez lire fréquemment le GPIO pour détecter les conditions transitoires.

joan
la source
Comment pourrais-je surveiller cela si ... GPIO est une broche numérique à droite?
NULL le
@NULL édité la réponse.
joan
18

Si vous voulez le faire avec un script shell, voici une solution qui fonctionne sur Pi 1, 2 & 3 (non testée en zéro). Avec la commande:

/opt/vc/bin/vcgencmd get_throttled

Si la réponse est:

throttled=0x0

Vous êtes bon avec la tension fournie et la température SoC.

Les bits du nombre renvoyé signifient:

0: under-voltage
1: arm frequency capped
2: currently throttled 
16: under-voltage has occurred
17: arm frequency capped has occurred
18: throttling has occurred

Référence: Raspbian Jessie linux 4.4.9 Dégradation sévère des performances .

Il existe une liste plus à jour https://github.com/raspberrypi/documentation/blob/JamesH65-patch-vcgencmd-vcdbg-docs/raspbian/applications/vcgencmd.md

0: under-voltage
1: arm frequency capped
2: currently throttled
3: Soft Temp limit reached  3
16: under-voltage has occurred
17: arm frequency capped has occurred
18: throttling has occurred
19: Soft Temp limit has occurred
zertyz
la source
Cela n'est vrai que si sous - tension et surchauffe sont synonymes ou ont une sorte de relation connue telle que nous pouvons dire que si la tension est trop basse de 0,5 V, la température du cœur sera ... mais ce n'est pas le cas.
goldilocks
Je viens de donner un exemple. La valeur renvoyée contient plusieurs bits qui sont définis si: 1) l'alimentation ne fournit pas une entrée sûre (ce que souhaite l'OP); 2) La fréquence ARM a été réduite en raison de températures élevées; 3) La surtension a été coupée en raison de températures très élevées. Le lien que j'ai fourni dissipe le doute.
zertyz
1
Alors pourquoi ne pas écrire cela en premier lieu? Quoi qu'il en soit, bienvenue - mais veuillez lire notre politique concernant les réponses sans lien uniquement informatives . Ce n'est pas tout à fait cela, bien que les informations réelles en réponse ne répondent pas non plus à la vraie question. L'idée est qu'une réponse est complète en soi; des trucs comme "lire ce lien" appartiennent aux commentaires. Je me rends compte que vous n'avez pas assez de réputation pour poster des commentaires sur la question, mais ce serait bien si vous
passiez
... Notez que nous ne sommes pas un forum de discussion, où la viande d'un fil est dans des messages ordonnés de temps en temps. Si vous posez une question et que quelqu'un demande plus d'informations, modifiez-la en question , ne la laissez pas simplement dans un commentaire de réponse. De même, si vous avez une réponse et que quelqu'un demande des clarifications, tout ce qui n'est pas déjà explicitement dans la réponse doit être modifié dans la réponse et ne pas simplement laisser dans la piste de commentaire.
goldilocks
1
Ce devrait être la réponse acceptée.
Feriman
1

Ce qui suit explique comment le circuit d'alimentation du Pi moderne (avec en-tête à 40 broches) fonctionne avec les limitations de puissance du Raspberry Pi .

Le coup de foudre est contrôlé par le noyau, et AFAIK il n'y a pas de moyen simple d'y accéder.

L'état d'alimentation peut être détecté plus facilement. Ceci est directement disponible via le système en B + Pi2 /sys/class/leds/led1, et accessible via un programme sur Pi3 https://raspberrypi.stackexchange.com/a/60275/8697

Milliways
la source