INPUT_PULLUP et 'or gate' CMOS

Miaou,

Dans une logique de sécurité, je voudrais avoir une entrée sur une pin lue à ‘High’ par défaut.
Je me suis dit que :

pinMode(X, INPUT_PULLUP);

était une bonne approche mais ensuite est venu le doute... :thinking:
En effet sur cette pin sera câblée la sortie (output Y) d’une porte ou (‘or gate’) ref. SN74AHC1G32 alimentée en 5V.

J’ai fait mes devoirs et j’ai lu la datasheet qui, sauf incompréhension de ma part, affirme que cette sortie (output Y) tolère 25mA max de courant entrant ou sortant.
Il me semble me rappeler que l’intensité max. sortant d’une pin est de 20mA.
Donc a priori, ce serait ok.

Question :
Mon approche / raisonnement est-il correct ou faut-il prévoir une sorte de résistance ballast (si oui comment) ?

Question subsidiaire :
Si au lieu d’une pin d’Arduino, c’est une pin d’ATTINY85, cela change-t-il quelque chose ?

Merci de m’avoir lu. :)

Le Chat.

salut,

et tu as bien fait, c'est exactement ça.


de mémoire,

possède aussi une pull-up intégrée


bonne journée

La sortie du SN74AHC1G32 peut supporter jusqu’à ±25 mA, c’est-à-dire fournir ou absorber 25 mA sans dommage.

Le courant que la porte OU fournit dépend de la charge connectée : plus la résistance est faible, plus le courant augmente (loi d'Ohm si vous avez une charge résistive au bout).

La limite de courant sortant (sourcing) ou entrant (sinking) d’une broche Arduino AVR ou ATTINY85 est de 40 mA en pic, mais il est recommandé de rester autour de 20 mA pour une utilisation sûre (attention si vous voulez cela sur plusieurs broches, la somme totale du courant en sink ou source est aussi limitée par groupe de pins (PORT) et pour l’ensemble de la carte).

Une broche configurée en INPUT_PULLUP est en extrême haute impédance, typiquement plusieurs mégohms, ce qui limite donc le courant qui ira de la porte OU vers l’Arduino à quelques microampères voire nanoampères.

➜ Avec une entrée Arduino ou ATTINY85 configurée en INPUT_PULLUP, le courant sera donc négligeable, la sortie n’est pratiquement pas sollicitée et à mon avis aucune résistance externe n’est nécessaire.

Merci de vos retour (c'est service rapide par ici !) :slightly_smiling_face:

Pour mieux préciser ma demande, je me suis risqué à un schéma :

Concrètement, avec PB1 en INPUT_PULLUP et au lu de ce qui précède, j'ai tendance à penser que R2 est inutile (voir nuisible).
Pour R1, une valeur de 500 Ohms permettrait-elle tout de même de passer PB1 à LOW si la sortie de la gate est à LOW (fuite de 10 mA de PB1 vers la gate) ?
A vous lire...

Le Chat.

Une sortie de porte logique HCMos alimentée sous la même tension que le Tiny85 est à relier directement au Tinu85, sans R1 et/ou R2

Ne pas se prendre la tête avec le courant très faible ( < 1 µA) circulant entre la sortie de la porte logique HCMos et l’entrée du Tiny85

Et INPUT_PULLUP est inutile puisque le SN74AHC1G32 a une sortie totem-pole donc la ligne ne sera jamais en l'air sauf coupure de la liaison entre le SN74AHC1G32 et le microcontrôleur.

si la connexion est permanente, car il précise

donc j'ai supposé qu'il peut y avoir rupture de l'accouplement
(

)
, par un moyen quelconque (interrupteur, connecteur, etc)

En INPUT, oui. Pas en INPUT_PULLUP si on force l'entrée à LOW (on a une résistance de mémoire de 75kΩ

C'est exactement ça : je voudrais une pin qui reste HIGH si le fil entre la pin et la OR gate est coupé... ^^

alors activer le pull-up interne sans ajouter de résistance (sauf à justifier par un contexte particulier)

A l’état bas la sortie de la porte logique OU HCMOS absorbera moins de 100µA (issus de VCC via la résistance de pull-up)

Oui bien sûr j'aurais dû être plus précis.

En INPUT_PULLUP la broche n’est pas en haute impédance parfaite car la résistance interne de pull-up relie la pin au 5 V et crée un chemin de courant dès qu’on force l’entrée à LOW, ce qui donne quelques dizaines ou centaines de microampères selon la valeur réelle de la résistance interne (Le courant vaut I = V/R. Pour R = 75 kΩ on aura 66,7 µA et pour R = 20 kΩ ≈ 250 µA.)