Il existe deux façons de tirer les broches dans Arduino – en utilisant une résistance interne et externe. Je me demande quand je devrais utiliser une résistance externe au lieu de INPUT_PULLUP.
Commentaires
- Daprès mon expérience, la seule différence est " pullup / pulldown externe est plus facile à remplacer " et peut-être aussi " en regardant simplement le circuit, vous pouvez voir lexterne résistance de sorte quil ' est plus facile à comprendre la conception après quelques mois "
Réponse
Vous pouvez utiliser la résistance interne ou externe dans une application normale.
Chaque méthode a ses propres avantages:
Résistance interne
- Avantages: flexible pour changer en changeant le code
- Avantages: Réduisez la taille du PCB
- Avantages: Réduisez le coût (très petit)
- Inconvénients: Cela peut rendre le MCU chaud
Résistance externe
- Pr os: Réduisez la chaleur pour le MCU
- Inconvénients: pas facile à remplacer quand il sagit dun PCB intégré
- Inconvénients: Augmenter la taille du PCB
En plus , Les résistances pull-up et pull-down ne sont pas seulement utilisées pour le port INPUT mais également pour le port OUTPUT. Dans le cas du port OUTPUT. La résistance externe présente un autre avantage: la flexibilité dans la connexion dappareils avec différentes tensions dE / S. Par exemple, dans le matériel I2C voir I2C au niveau matériel .
REMARQUE: Pour autant que je sache, au moment de lécriture, Arduino la bibliothèque ne prend PAS en charge INPUT_PULLDOWN
Commentaires
- 1. La chaleur générée par le pullup interne est négligeable. 2. Certains tableaux (pas ceux basés sur AVR) ont
INPUT_PULLDOWN
.
Réponse
« Inconvénients: cela peut rendre le MCU chaud »
Ce ne sera pas le cas. P = V ^ 2 / R, donc 5 * 5/20 000 = 1,25 mW, cela ne rendra pas le processeur chaud. Même tourner tous les 80 dans un Mega2560, et les tirer tous bas, ne dissipera que 0,1 W.
« REMARQUE: Pour autant que je sache, au moment de lécriture, la bibliothèque Arduino ne prend PAS en charge INPUT_PULLDOWN » car la famille dappareils Atmega328P, « 1284 », 2560, etc. ne possède pas de résistances de conversion internes. Seulement pullup. Voir la section 14 de leurs fiches techniques, «Ports dE / S».
Ce pullup est généralement insuffisant pour le pullup I2C, le front montant créé par le pullup interne de 20K à 50K est très lent. 4,7K externes jusquà environ 2,2K (dépend du nombre dappareils I2C connectés) sont nécessaires. Et la spécification du bus I2C dit quils devraient être à la fin du bus, pas à lorigine du bus (qui est généralement le processeur).
Si vous avez un long fil provenant dun bouton ou dun interrupteur, cela est généralement le bon moment pour utiliser un pullup externe pour assurer de bons niveaux de commutation entre haut et bas.
Réponse
Le « Arduino Le langage « (cest-à-dire la fonction pinMode()
) ne connaît que INPUT_PULLUP.
Vous avez donc besoin de résistances externes pour les résistances PULLDOWN.
Les signaux de SORTIE ne sont pas flottants, donc le terme résistance PULLUP / PULLDOWN ne sapplique pas vraiment ici.
De plus, la valeur dune résistance pullup interne nest pas réglable. Si cette valeur (20 .. 50k) nest pas appropriée (I²C a besoin de moins de 10k), une résistance externe est requise.
Commentaires
- Comme je lai écrit dans un commentaire à la réponse précédente, certains cœurs Arduino le font prend en charge
INPUT_PULLDOWN
.