Comment détecter l’ouverture ou la fermeture d’un contacteur?

Le microcontrôleur sait lire une valeur digitale (tension élevée ou basse) sur ses entrées digitales. Il suffit donc de lui appliquer soit du 5V (ou 3,3V pour l’ESP) pour avoir un niveau haut (1) ou appliquer la masse GND pour avoir un niveau bas (0).

On pourrait penser que si rien n’est connecté on a de fait un niveau bas car pas de tension, mais ce n’est pas forcement le cas. L’état en l’air n’est pas stable, le résultat lu ne sera donc pas fiable.

La résistance de Pullup ou Pulldown

Pour résoudre ce problème, il suffit de connecter soit la masse, soit le 5V au travers d’une résistance à valeur élevée, pour que l’état au repos soit défini. Pourquoi mettre une résistance, tous simplement pour ne pas créer un court circuit quand le contacteur va se fermer. Si l’on mettait la masse permanente sur une entrée pour fixer l’état à bas (0) quand le contacteur est ouvert, lorsque le contacteur sera fermer, il apportera le 5V, on relierait alors le 5V à la masse ==> court circuit !!

court circuit.PNG

On appelle cette résistance qui évite le cour-circuit, une résistance de PullUP lorsqu’elle sert à mettre l’entrée à l’état haut (UP) et résistance de PullDOWN lorsqu’elle sert à mettre l’entrée à l’état bas (Down).

Simplification du schéma avec Arduino ou ESP8266

Afin de simplifier l’usage des contacteurs, la plupart des microcontrôleurs ont la possibilité d’activer des résistances de pullup ou pulldown interne.

Ainsi, tous les entrées digitales de l’Arduino/ESP on la possibilité d’activer une résistance de Pullup interne. Une fois activée, l’entrée sélectionnée est reliée au 5V au travers d’une résistance comme vu plus haut.

Cela permet donc de connecter un contacteur directement au microcontrôleur sans composants supplémentaires.

Cela s’active via les deux lignes suivantes dans la partie setup() du programme (XX correspond au numéro de l’entrée utilisée):

pinMode(XX, INPUT); -- Active cette pin en entrée digitale (plutôt qu'en sortie)
pinMode(XX,INPUT_PULLUP); -- Active la résistance de pullup

Note : Le GPIO16 de l’ESP est le seul a avoir une résistance de pulldown au lieu d’une pullup.

pullup-down.PNG

Publicités