Comment détecter s'il y a une tension entre deux points via GPIO?


9

Je voudrais détecter si un appareil externe est allumé ou éteint. J'ai trouvé deux broches où il devrait y avoir 5V entre dans le premier cas, mais la tension peut varier un peu et je n'ai pas l'habitude de casser le Pi. Comment dois-je connecter les points aux broches GPIO pour détecter s'il y a de la tension? Ou pour demander plus général:

Comment puis-je utiliser le Raspberry Pi pour tester si une batterie est vide (pas ou peu de tension) ou non (tension nominale)?

Si la mesure analogique n'est pas possible, peut-on mesurer au moins si la tension est supérieure à un certain seuil? Il en résulterait un signal numérique, mais comment le générer et quelles broches GPIO utiliser?

Réponses:


5

Avec le Raspberry Pi seul, vous ne pouvez pas, car il n'a pas de convertisseur analogique-numérique (ADC). Vous pouvez acheter cette carte d'extension http://www.abelectronics.co.uk/ et créer un diviseur de tension avec deux résistances sur votre alimentation par batterie.


1
Merci pour la clarification et le lien vers la carte d'extension ADC.
Jakob

3

Vous souhaitez rechercher ou construire vous-même un comparateur avec les caractéristiques appropriées. Dans votre cas, vous voulez vérifier qu'une tension est supérieure à 3V3 et une sortie 3V3. Assurez-vous que votre comparateur est tolérant au 5V.


Comparateur :-) belle solution. Je n'en ai jamais utilisé un. Gardera cela à l'esprit. +1
Piotr Kula

1

L'ajout sur la carte est cool mais vous pouvez utiliser un régulateur de tension qui est bon marché et simple.

Un régulateur de tension, selon le modèle, attend une entrée de tension de tout ce qu'il a été conçu pour gérer et produira la tension souhaitée sur la broche de sortie. Dans votre cas, vous voulez détecter 5 volts mais lire 3 volts, ce qui est sans danger pour le Pi.

Vous pouvez trouver de nombreuses fournitures sur ebay, mais voici un lien Sparkfun vers un exemple.

Si le périphérique externe fournit un courant jusqu'à 10vDC, la broche de sortie donne 3V (HIGH ON DIGITAL PIN) et vous pouvez le lire en toute sécurité en utilisant GPIO en python ou tout ce que vous voulez.

Vous pouvez les trouver bon marché si vous regardez autour de vous. Vous devez simplement vous assurer que la sortie n'est pas supérieure à 3,3 volts qui est connectée à votre Raspberry. Vous pourriez mettre une résistance sur la sortie pour baisser un peu la tension .. mais les régulateurs sont conçus pour être précis à 99,9% en sortie.

Le Raspberry Pi utilise un NCP1117 3,3 volts pour piloter le bus d'alimentation 3V3, qui est alimenté par le bus 5V0 qui provient de votre alimentation USB souple.

Les régulateurs de tension sont utilisés pour alimenter d'autres appareils. Dans ce cas, j'ai juste utilisé l'imagination pour utiliser une solution bon marché et je l'ai utilisée dans l'autre sens.

Parce qu'à la fin de la journée, nous avons juste besoin de détecter une tension comme un signal numérique. Peu importe ce que vous utilisez pour le générer. Il peut s'agir d'une batterie 3,3 V, d'une alimentation 3,3 V CC, d'une sortie numérique tamponnée d'un Arduino, d'un autre Raspberry, d'un générateur de signaux, d'une minuterie 555 ou d'un simple régulateur de tension. C'est la mise en œuvre et l'objectif qui sont importants.

  • Fin de la journée ...
  • 3,3 v = 1
  • 0v = 0

Références:

Tension maximale sur GPIO

Courant maximum sur GPIO


Une raison de rétrograder serait très constructive. Peut-être que cette réponse n'est pas conventionnelle. Mais si elle est très imparfaite, faites-le moi savoir.
Piotr Kula,

2
Idée intéressante, pourrait l'utiliser dans un de mes projets (tester si le rail 12V est actif ou non)
mglauche

Assurez-vous simplement de mettre une résistance vers le bas ou vers le haut sur la broche numérique. Ceci est une réponse très ancienne .. une de mes premières. Mais l'idéologie est la même.
Piotr Kula,
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.