Résistances de Pull Up / Pull Down

De par la technologie employée pour les mettre en oeuvre les entrées et sorties numériques peuvent être dans un état numérique indéterminé. (A titre d'exemple, on parle de sortie en collecteur ouvert pour les sorties numériques, qui seront indéterminées). cela implique que, vous ne pouvez pas être assuré de l'état d'une sortie tant que vous ne l'avez pas modifiée par votre programme. Cela peut-être dangereux... Imaginez une machine qui démarrerai un travail toute seule sans qu'on ne lui ai rien demandé..; Si le gars a les pattes dedans.... De même en entrées numériques, un coup vous lirez 0, et le coup d'après vous lirez 1 alors que rien ne s'est passé sur le système.


Un des tous premiers chips d'entrées et sorties numériques conçu comme cela est le bon vieux 8255 développé par Intel pour ses microprocesseurs de la lignée des 8080. Ca donnera naissance au premier PC avec un 8086 et son pote 8255.


Pour faire court, une résistance de Pull Down est installée entre une entrée ou sortie numérique et la masse. Ainsi en l'absence d'une tension, l'entrée ou sortie "voit" la masse via la résistance, et de fait, son état est numérique forcé à 0. Une résistance de Pull Up, elle, est installée entre une entrée ou sortie numérique et la tension d'alimentation du compsoant (généralement 3,3 VDC ou 5VDC). Ce type de résistance de Pull Up est généralement utilisée uniquement sur des entrées. Dans ce cas, l'entrée est forcée à la tension d'alimentation, sauf si on la relie à la masse par un contact. Bref, nous n'avons plus de cas indéterminé.


Sauf si j'ai raté un truc, sur le Raspberry Pi les broches du connecteur GPIO, lorsqu'elles sont configurées en sorties ont toujours une résistance de Pull Down. Ainsi, tant que vous ne l'activez pas à 1, vous êtes assuré qu'elle est à 0. Les entrées peuvent être configurées soit avec un résistance de Pull Up, soit avec un résistance de Pull Down. Le choix entre l'un et l'autre dépend du circuit qui emet l'information numérique. Lorsqu'on les active, certains dispositifs emettent une tension, d'autre se relient à la masse. Si l'on interface des boutons poussoirs, il vaut toujours mieux une résistance de Pull Up. Ca simplifie le circuit.


Attention, je parle bien du Raspberry Pi. D'autres composants peuvent fonctionner de manière différente. C'est le cas du MCP23017 supporté par la librairie cpp2835. D'autres ne proposent même pas ce choix, c'est à vous à installer ces résistances physiquement. Bon, OK, ça se fait de plus en plus rare.


Tout cela ne concerne que les entrées et sorties numériques en 3,3VDC ou 5VDC (dites TTL). En effet le passage de 0 à 1 sur une entrée est détecté lorsque le signal passe le niveau 0,8VDC. Hors un signal qui "flotte" à 0,8VDC, ce n'est pas rare. Cela n'arrive jamais lorsque l'on utilise des entrées et sorties numériques sur des niveaux de tension plus élevés. Dans l'industrie, on utilise souvent du 12, 24, 36 ou 48VDC, voir même du 220 VAC. Hors il est rare de "flotter" à 12VDC. Ou alors, il y a un grave pépin sur le système.

Schéma entrée numérique avec Pull Down


Schéma entrée numérique avec Pull Up


Schéma sortie numérique avec Pull Down