Je commence tout juste a utiliser l'arduino donc veuillez excuser mon ignorance ^^
Je ne comprends pas le concept d'entrée. J'ai lu pas mal d'articles sur les entrées/sorties et je vois partout qu'une entrée peut valoir soit 1 (HIGH) soit 0 (LOW) en fonction du voltage.
Dans la datasheet du ATmega328P, j'ai vu
Je suppose donc que tout voltage supérieur a 3,5V (0,7 x Vcc) est consideré comme 1.
Et que tout voltage inférieur a 1,5V est consideré comme 0 (0,3 x Vcc).
Ce que je ne comprends pas, c'est comment fait le microcontroller pour mesurer une tension avec un seul cable (input). Si je veux mesurer une tension (différence de potentiel) avec mon multimètre, je dois brancher 2 fils (le positif et le négatif), hors ici, il n'y a qu'un seul fil connecté a l'input (la broche de l'arduino). A moins que la pin de l'input soit une masse ? ou un 5v ? ou autre chose ?
Cette question doit paraitre débile mais je pense vraiment qu'il y un concept important qui m'échappe...
Comme tu l'as écrit une tension c'est une différence de potentiel donc elle est mesurée entre deux points.
Dans le cas du microprocesseur c'est mesurée entre l’entrée et la masse. Un capteur est don connecté par deux fils: la masse reliée à la masse du micro et la sortie reliée à l'entrée du micro.
tu mesures entre le VCC (le+) et le GND.
Si tu positionnes une entrée sur HIGH ou sur LOW avec digitalWrite tu comprendras vite.
Les PIN Digitaux renvoie une valeur 0 ou 1, et les analogiques une valeur entre 0 et 1023.
La difficulté vient souvent des variations que tu vas trouver.
Merci, je pense enfin avoir compris. Ca voudrais dire qu'il n'y a jamais de courant qui passe par la pin d'entrée. Le microcontroller ne ferait que regarder la difference de potentiel entre la pin et la masse, c'est très clair, merci !
Si, il passe obligatoirement un courant. C'est fondamental.
Il est extrêmement faible, l'impédance d'entrée des E/S est très grande, mais pas infinie.
En mathématiques, on dit qu'un "epsilon" est proche de 0, mais jamais nul.
En physique, même si on sait que mathématiquement parlant un epsilon existe, mais qu'il est tellement faible qu'on ne sait pas le mesurer, on dit qu'il est nul.
Ce n'est pas réservé aux microcontrôleur.
Les formules pour calculer le gain d'un ampli opérationnel font l'hypothèse que les impédances d'entrées E- et E+ sont infinies et que le gain en boucle ouverte est, lui aussi, infini.
Ce qui impose que la différence de tension entre E- et E+ est nulle.
C'est bien sûr mathématiquement faux, mais physiquement, compte tenu des différentes valeurs obtenues, c'est parfaitement valable.
Merci pour cette explication. Je pense avoir compris
Par contre il y a quelque chose qui m'échappe. Si le microcontroller mesure la tension sur la pin (par rapport à la masse comme expliqué par @kamill), pourquoi doit-on mettre une résistance pour forcer un état haut ou bas (pull-up/pull-down) ? Je viens de faire un essai et si je relie une entrée directement au Vcc, l'entrée est bien a 1 (heureusement ). Je comprends donc le principe du pull-up/pull-down qui permet d'éviter d'avoir un état "flottant", mais je comprends pas ce que fait la résistance dans le schema. Pourquoi ne peut-on pas relier directement la pin au 5v ou à la masse ? Quel est le role de la résistance ? Peut-on s'en passer ?
Encore pardon pour ces questions de débutant, j'ai lu pas mal d'article et je ne trouve pas de réponse à cette question. J'ai l'impression d'avoir raté quelque chose d'assez basique car je suis apparement le seul à ne pas comprendre sur ce genre de concepts J'avoue qu'il me manque certainement quelques bases (d'ailleurs si vous avez de bonnes références à me conseiller genre livre/article/site web, n'hésitez pas ^^)
On peut relier l'entrée directement au 5V ou à la masse mais pourquoi faire?
En fait je suppose que quand tu parles de pullup tu fais allusion à la lecture d'un bouton. Quand le bouton est relâché l'entrée est au 5V par le pullup, quand le bouton est appuyé l'entrée est à la masse via le contact du bouton.
En effet j'aurais du donner le context . J'ai 2 exemple en tête:
Le cas d'un bouton poussoir: pour eviter un état "flottant" lorsque le bouton ne fait pas le contact.
Pourquoi ne pas simplement relier l'entrée a Vcc afin de forcer l'état a 1. Pourquoi doit-on obligatoirement mettre une résistance ?
Le cas d'un capteur de temperature DHT22: Ce capteur possede 4 pins (dont 1 n'est pas utilisée). Il y en a une pour le positif, une pour la masse et une pour les data. La datasheet recommende de mettre une résistance de pull-up sur la pin data (donc reliant data a Vcc), avec une résistance de 10k.
Ici aussi, je ne comprend pas pourquoi il faut y mettre une résistance et pas simplement relier data a Vcc. Le capteur pourrait simplement couper la phase ou la laisser passer, a quoi sert cette résistance de 10k conseillée?
Si la pin de l'entrée n'est pas reliée directement à la masse, comment est-ce que ca peut faire un court circuit ? Si j'ai bien compris, le microcontroller ne fait que mesurer la difference de potentiel, mais l'entrée n'est pas réellement une masse, si ?
En plus il y a de grosses résistances derrière les entrées non ?
Si j'ai branché une entrée directement au Vcc, c'est grave docteur ?
Merci beaucoup pour votre aide en tout cas, c'est très sympa
Cela n'a strictement rien à voir avec une pull-up !
Une poule machin est là pour aider à éviter des potentiels flottants quand des fils sont débranchés.
Mais si les fils sont branchés, elle ne sert à rien.
La sortie d'un DHT22 est un collecteur ouvert. C'est-à-dire que le collecteur du transistor de sortie n'est relié à rien.
Dans le cas général des collecteurs ou drains ouverts s'il n'y a pas une résistance extérieure reliée au Vcc comment un courant pourrait parvenir à l'entrée du microcontroleur ?
L'entrée ne voit qu'un potentiel GND ! C'est une résistance indispensable.
C'est la résistance de charge du collecteur (ou du drain).
Pourquoi fait-on des collecteurs ou des drains ouverts ?
Raisons variées : une résistance de moyenne puissance est très difficile à faire dans un circuit intégré => on la déporte à l'extérieur du boîtier
Faire de la logique câblée : c'est le cas de l'I2C où les collecteurs ouverts permettent de faire une fonction logique OU gratuite et extensible à l'infini.
Plus d'autres raisons qui ne viennent pas à l'esprit ou que j'ignore, mais en tout cas, c'est toujours volontaire et imposé par le fonctionnement.
Merci pour toutes ces explications. J'ai du prendre pas mal de temps pour la comprendre
Je pense maintenant avoir compris. Est-ce correcte de dire que le capteur n'envoi aucun tension mais ne fait que couper la mise à la masse ? Si c'est le cas, je comprends qu'il faut cette fameuse résistance pour définir l'état haut lorsqu'il n'y a pas de mise à la masse.
Cette réponse est très interessante et me fait me poser plein de nouvelles questions. Je sens que je vais passer pas mal de temps à lire ^^ Merci !
Euh! Qu'est ce que ça veut dire?
Si ça veut dire que le capteur met l'entrée à la masse, c'est vrai pour un bouton connecté entre l'entrée et la masse ou un capteur qui sort en collecteur ouvert.
Mais il existe de nombreux capteurs soit logiques soit analogiques qui envoient des tensions.
Oui c'est ca que j'essaie de dire. Etant vraiment novice en électronique, j'ai essayer de formuler ca de la manière qui me paraissait être claire mais je suppose que j'ai pas choisi les bon mots ^^