samedi 7 mars 2015

Drain ouvert (open drain)

Certains microcontrôleurs permettent de configurer les sorties numériques en mode open drain. Dans cet article j'explique ce que ça signifie et je donne des exemples d'utilisation.

configuration d'une sortie numérique

Les sorties numériques des MCU sont composées de 2 transistors MOSFET complémentaires montées entre les 2 rails d'alimentation Vdd et Vss comme ceci.

Les transistors MOSFET ont 3 électrodes. Drain, Source, Gate. Le Gate contrôle le passage du courant entre le Drain et la Source. Lorsque Vin est à 1 le transistor P-MOSFET et bloqué et le N-MOSFET conduit, on a donc zéro à la sortie. À l'inverse si Vin est à 0, le transistor P-MOSFET conduit et le N-MOSFET est bloqué de sorte que la sortie est à 1. Il n'y a qu'un seul transistor qui conduit à un instant donné sinon on aurait un court-circuit entre Vdd et Vss.

Drain ouvert

Maintenant si on désactive le transistor P-MOSFET de sorte qu'il n'y a que le transistor N-MOSFET qui peut entré en conduction alors on a que la sortie sur la broche du MCU est en haute impédance lorsque le N-MOSFET est bloqué ou elle est connecté à Vss lorsque le transistor conduit. C'est ce qu'on appelle une configuration Open Drain

Pour désactiver le P-MOSFET on peut utilisé un montage comme montré sur le schéma ci-bas. Lorsque le signal open drain est actif à 1 le P-MOSFET reste bloqué donc c'est comme si le drain du N-MOSFET n'était branché à rien. Lorque le signal open drain est à 0 c'est le signal venant du PORT LATCH qui contrôle le gate du P-MOSFET comme si le OR gate n'était pas là comme dans le montage ci-haut.

Utilité du Drain ouvert

La configuration Open Drain est utile dans diverses situations, partage du bus entre plusieurs dispositifs, adaptation de niveau de tension, alimentation d'une LED par la cathode.

Par exemple il existe des dispositifs qui utilisent un protocole de bus appelé ONE-WIRE. Ces dispositifs n'utilisent qu'un seul fil pour communiquer avec le microcontrôleur et cette communication se fait dans les 2 sens en semi-duplex.

Dans cette application le bus est connecté à Vdd à travers une résistance pullup. Cette application nécessite un configuration Open drain car plus d'un dispositif partage le bus. En effet si les sorties des dispositifs étaient en montage complémentaire et qu'un dispositif plaçait sa sortie à 0 alors qu'un autre a sa sortie à 1 on aurait un court-circuit entre Vdd et Vss. Avec l'open drain le seul chemin vers Vdd est la résistance pullup et le courant entre Vdd et Vss est limité par la valeur de celle-ci.

adaptation de niveau

Toutes les sorties numérique des PIC24FJ64G00x sont configurable en mode open drain. Ces MCU fonctionnent à 3,3 volt. Supposons qu'on veut interfacer un tel MCU avec un affichage LCD qui fonctionne à 5 volt. Pour adapter les niveaux logiques sur le bus de communication il suffit de configurer les sorties du MCU en open-drain et de mettre des résistances pullup sur les lignes du bus. De cette façon lorsque le transistor N-MOSFET à la sortie du MCU est bloqué le niveau à l'entrée du LCD est tiré à 5 volt. Lorsque le transistor N-MOSFET du MCU est en conduction la ligne est tirée à zéro volt. Voici le schéma d'un montage qui utilise cette configuration. Il s'agit du schéma d'un projet dont je parlerai bientôt sur ce blog.

Toutes lignes qui relient le MCU au LCD utilisent des pullups de 10K et sont configurées en open drain sur le MCU. Il s'agit d'un bus sur 4 bits plus 3 lignes de contrôle.

alimentation LED en mode drain ouvert

Lorsqu'une sortie complémentaire commute pendant une fraction de seconde il y a un certain courant qui passe de Vdd à Vss à travers les 2 transistors car la commutation n'est pas instantanée. Cela a 2 effets, une consommation électrique supplémentaire et du bruit sur le bus d'alimentation. Si on alimente des LEDs par la cathode comme dans le schéma ci-bas en configurant les sorties du MCU en open drain on élimine ces 2 problèmes.

Aucun commentaire:

Enregistrer un commentaire