Mais pourquoi 10 kΩ ?

Pourquoi 10 kΩ ? C’est la question posée par Giome dans son commentaire sur le “module additionnel”. C’est sans doute une question que tout le monde se pose et que personne n’ose poser. Comme d’habitude, c’est une évidence pour ceux qui savent et un mystère pour les autres. Si la réponse apportée ici est satisfaisante, Giome aura rendu un grand service en posant cette question.

Schématiquement, la connexion électronique à un GPIO (General Purpose Input Output c’est à dire port d’entrée sortie d’usage général) est le suivant :

GPIO

A gauche de ce schéma on a le symbole d’un bouton poussoir qui correspond au fonctionnement des capteurs “à impulsion”.  Pour le capteur utilisé sur le compteur d’eau du système de visualisation en temps réel de la consommation d’eau, c’est juste ça. Pour les compteurs utilisés pour le suivi de la consommation d’électricité c’est l’équivalent en version électronique. Dans les deux cas, une impulsion correspond à ce qui ce passerait si on appuyait brièvement sur le bouton poussoir : un court-circuit entre l’entrée GPIO et la masse.

Au niveau de l’entrée GPIO, on veut la traduction de cette impulsion sous forme binaire : un bref passage de 1 à 0, c’est à dire la passage de la tension Ub de 3.3 V à 0 V, puis un retour à 1 (3.3 V).

Si on ne branchait que le bouton poussoir, la valeur lue par le GPIO serait indéterminée (on dit “flottante”). Pour la maintenir à 3.3 V, on la relie à une sortie 3.3 V. C’est ce qu’on appelle un “pull-up” car cela tire la valeur lue par le GPIO vers le haut.

Si on reliait directement le 3.3 V au GPIO, sans résistance intermédiaire, on aurait, lors d’une impulsion, un cour-circuit du 3.3 V vers la masse !

La résistance de pull-up sert donc à protéger la sortie 3.3 V pour éviter de griller le circuit. L’intensité est alors limité à Ua/R. Avec une résistance de 10 kΩ l’intensité est donc de 0.33 mA, largement en dessous de la limite des 16 mA recommandée pour la limite du courant tiré d’un des GPIO. On aurait pu mettre moins que 10 kΩ mais c’est une valeur couramment admise pour une résistance de pull-up. C’est celle utilisée pour la version 1 du capteur de consommation électrique.

Par ailleurs, il est aussi possible d’activer, par une instruction logicielle, une résistance de pull-up interne, une par GPIO, d’une valeur annoncée de 50 kΩ.

Si on active cette résistance de pull-up interne, on peut donc se passer de rajouter une résistance de pull-up externe. C’est le choix fait pour la version 2 du capteur de consommation électrique.

Ce qui simplifie efficacement le montage.

3 thoughts on “Mais pourquoi 10 kΩ ?”

  1. Bonjour,

    Un grand merci pour cette réponse, du coup j’ai déjà mis en application pour mes 3 compteurs et comme tout fonctionne sans problème je peux recycler ma PiFace Digitale 2 pour un autre projet… encore a définir… Mon objectif primaire était surtout de simplifier le montage et économiser “un peu” d’énergie car mon PI (comme toute mon installation) est sur UPS donc en cas de coupure je veux un maximum d’autonomie…
    Par curiosité je serai intéressé d’en apprendre plus sur la résistance interne par GPIO activable de façon logicielle car Google ne m’a pas appris grand chose dessus, sans doute des recherches ne reprenant pas les bons mots clés…

    1. Pour un programme en Python GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) devrait être un bon indice.

  2. OK, Merci des infos, j’en ai compris l’essentiel.
    C’est très intéressant pour simplifier un montage si on fait le code soi-même mais dans l’immédiat comme je passe par Jeedom et son plugin Jeedouino j’ai pas envie de modifier le code du développeur et recommencer a chaque update. Mais je garde ça en tète pour mes futurs projets !
    En vrac pour quand j’aurai le temps : Gestion du poulailler, d’une chatière, réservoir d’eau et arrosage automatique du jardin, potager, station météo home made avec imprimante 3D…
    Votre blog a gagné sa place dans mes favoris !!! J’ai hâte de lire vos prochaines publications.

Comments are closed.