mardi 10 août 2021

Modules à relais DIY

 


Modules à relais DIY

 

Les modules relais sont très nombreux dans le commerce, mais ils n'offrent en général que des possibilités limitées. Nous allons voir dans cet article comment les réaliser et surtout pour quelles raisons nous aurions à les fabriquer nous-même.

Dans cet article nous allons aborder différents sujets :

  • relais classiques ou bistables
  • pilotage de relais avec des transistors
  • pilotage de relais avec un ULN2803
  • élévateurs de tension
  • modules relais pilotés par I2C

1. Présentation

Prenons un exemple :

Cette carte comporte un relais, un transistor de commande, 2 LEDs, trois résistances de 1KΩ et un connecteur 3 broches (GND, 5V, IN).
La description de la carte précise que ce relais doit être commandé par un niveau bas.

Cela me convient-il ? pas forcément. J'ai plutôt l'habitude de commander mes relais avec un niveau haut et les LEDs sont inutiles. De plus la résistance de base de 1KΩ est faible et impose un courant de commande de 5mA.

Elle a un autre défaut : elle ne possède pas de trous de fixation.  

Attention, certains modules sont équipés d'optocoupleurs bas de gamme avec des résistance d'entrée de 200Ω et réclament 20mA.

D'autres cartes proposent un cavalier afin de pouvoir choisir le niveau de la broche de commande :

Ces modules sont équipés en général de relais chinois du type SONGLE SRD-05VDC-SRD, ce qui n'est pas vraiment un gage de qualité.

1.1. Modules à optocoupleur

Les modules sont en général équipés d'un optocoupleur. Quel intérêt ? Le relais offre déjà lui-même une isolation galvanique tout à fait suffisante, 1000V pour les plus courants.

Sur ce module, on voit 2 connecteurs :

  • connecteur d'alimentation
    • JD-VCC
    • VCC
    • GND
  • connecteur de commande :
    • VCC
    • IN1, IN2
    • GND

Pourquoi 2 broches VCC et deux broches GND ?

Il faut examiner un schéma pour avoir l'explication :

On peut remarquer que les relais seront activés si l'on applique un niveau bas 0V sur IN1 ou IN2, et seront désactivés si l'on applique un niveau haut 5V sur IN1 ou IN2.

Les deux proches VCC sont reliées entre elles, ainsi que les deux broches GND. Le cavalier J5 permet de relier VCC à JD-VCC (ou RY-VCC).

Il y a deux façons de brancher ces modules.

1.1.1. La manière simple en 5V

Il suffit de laisser le cavalier en place entre VCC et JD-VCC, et de relier le module comme ceci :

Cela fonctionne mais seulement si les relais sont des modèles à bobine 5V.

Si l'on alimente par la broche VCC du connecteur de commande sous 12V, il sera impossible de désactiver les relais. En effet, si VCC vaut 12V et que la tension de commande sur D2 ou D3 est de 5V, il reste 7V aux bornes des composants R4+opto+LED, et le relais est donc activé.

1.1.2. La manière moins simple en 12V

Si les modules relais sont des modèles à bobine 12V, il faut retirer le cavalier entre VCC et JD-VCC, et relier le module comme ceci :

On peut aussi utiliser ce câblage avec des relais à bobine 5V ou 24V.

Comme on le voit sur ce schéma, la broche GND du connecteur de commande n'est pas utile. En effet, lors de l'activation d'un relais, le courant de commande va circuler du +5V, à travers l'optocoupleur, vers la sortie de l'ARDUINO.

Ici, le 12V présent sur la broche JD-VCC du connecteur d'alimentation peut être obtenu de plusieurs manières :

On peut utiliser une alimentation 12V pour le module relais, et alimenter également l'ARDUINO en 12V par sa broche VIN. Attention, certains ESP8266 ou ESP32 n'acceptent pas plus de 6.5V sur leur entrée 5V ou VCC. Il faudra ajouter un convertisseur STEP-DOWN.

On peut également utiliser un convertisseur STEP-UP 5V / 12V branché sur une alimentation 5V.

On peut utiliser 2 alimentations séparées, une alimentation 5V pour l'ARDUINO et une alimentation 12V pour le module relais. Les masses n'auront pas besoin d'être reliées.

Que se passe t-il si on raccorde la broche GND du module à la broche GND de l'ARDUINO ? Rien de spécial. Le GND de l'alimentation 12V sera relié au GND de l'ARDUINO.

1.1.3. Isolation galvanique

On lit beaucoup d'âneries à ce sujet. Les modules à relais avec optocoupleur apporteraient soit-disant une isolation galvanique (absence de liaison électrique), et cette isolation serait un plus.

Rien n'est plus faux. Je ne vois pas par quel miracle ou tour de magie il pourrait exister une isolation galvanique entre un ARDUINO et un module relais se partageant la même alimentation, en tout cas la même masse.

La seule manière d'obtenir une isolation galvanique totale entre l'ARDUINO et la partie commande de la bobine du relais est d'utiliser deux alimentations totalement distinctes, et de ne pas relier la broche GND de l'ARDUINO à celle du module relais.

Deuxièmement, on se demande ce que peut bien apporter une isolation galvanique entre l'ARDUINO et la partie commande de la bobine du relais. Il n'y a aucune que cela apporte quoi que ce soit. Par contre l'isolation galvanique est indispensable entre la partie commande de la bobine du relais et les contacts de celui-ci. Mais un relais offre déjà une isolation galvanique élevée : environ 1000V.

S'il s'agissait d'un module relais à bobine 230V, commandé par un opto-triac, je comprendrais l'utilité d'une l'isolation galvanique. Personne n'a envie de se prendre une châtaigne 230V en touchant un ARDUINO relié à la phase.

1.2. Domaine d'utilisation

En général, lorsqu'on utilise un relais, c'est que l'on a une charge 230V à alimenter. Si la charge fonctionne sous tension continue 12V ou 24V, il est préférable d'utiliser un MOSFET, ce qui apportera des avantages indéniables :

  • courant de commande minime
  • fiabilité
  • absence de bruit

J'en ai déjà parlé ici :

MOSFETS de puissance 

Un Module à 8 ou 16 Mosfets

Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017 

1.3. Dissipation

Ces relais dissipent environ 350mW lorsque leur bobine est alimentée.

Si le courant traversant les contacts est important, le résistance de contact (en général 100mΩ) dissipera également de la puissance, par exemple 1W pour 10A, et provoquera une augmentation supplémentaire de température.

Cela paraît peu, mais cela peut poser des problèmes dans un boîtier de très faibles dimensions et non ventilé. La bobine peut s'échauffer, se dilater, et se coincer en position contacts fermés. Cela m'est déjà arrivé sur une prise connectée du commerce.

1.4. Module relais 3V

Il existe peu de modules relais fonctionnant sous 3V. ce point est très dérangeant lorsque l'on désire commander un relais à partir d'un microcontrôleur 3.3V.

D'autre part un module relais 3V ne peut être alimenté directement à l'aide d'une batterie (LITHIUM-ION ou LIPO), car il ne supportera pas la tension de 4.2V de ces batteries à pleine charge.

1.5. Module relais bistable

 Avec un grand nombre de relais l'utilisation de modèles bistables permet de limiter la consommation de l'ensemble.

Avec 8 relais 5V par exemple, s'il sont tous fermés, la consommation sera de 150mA par relais, donc 1.2A au total.

Si l'on utilise des relais bistables, le module consommera 150mA à chaque commutation pendant quelques dizaines de millisecondes, ensuite cette consommation retombera à ZÉRO.

L'alimentation sera donc beaucoup moins puissante qu'avec des relais traditionnels.

J'ai déjà utilisé ce type de relais ici :

Une prise connectée MYSENSORS

Un télérupteur MYSENSORS pour rail DIN 

Le relais bistable possède soit une bobine que l'on alimente dans un sens ou dans l'autre pour fermer ou ouvrir les contacts, soit deux bobines avec un point milieu. La durée d'alimentation des bobines est très courte (10ms à 20ms).

J'en ai déjà parlé ici :

Piloter un relais. Transistor unipolaire ou bipolaire ?

Ce type de relais permet d'une part d'économiser l'énergie, et d'autre part d'éviter une surchauffe de la bobine si celle-ci est sous tension pendant une durée importante, surtout si le montage est intégré dans un boîtier non ventilé.

Les relais bistables ne sont pas forcément plus cher. Par exemple un OMRON G5RL-K1A-E 5V (bistable) coûte même 10% moins cher qu'un FINDER 40.61.9.005.0000 (simple).

Le seul inconvénient est que le relais bistable mobilise deux sorties du microcontrôleur.

Les modules à relais bistables sont pratiquement inexistants sur le marché. On peut noter celui-ci (12V), disponible sur AliExpress :

Attention aux modules dits bistables, qui ne sont en réalité que des relais classiques commandés par une électronique gérant deux états :

D'autre part ce module possède une seule broche de commande, et fonctionne comme un télérupteur. Le microcontrôleur n'a donc aucun moyen de savoir dans quel état le relais va basculer.

2. Les besoins

J'avais déjà décrit une carte à 4 relais ici :

ARDUINO : prototypage amélioré sur breadboard

Je vais présenter ici plusieurs modules étudiés récemment pour couvrir mes besoins pour plusieurs projets :

  • 1 module à relais simple 16A
  • 3 modules à relais bistable 16A
  • 2 module I2C à relais classiques 10A ou 16A
  • 4 modules I2C à relais bistable 16A

Ces modules ont des caractéristiques communes :

  • des relais de qualité
  • pas d'optocoupleur
  • pas de LEDs
  • commande basse tension (3V à 5V)
  • commande par un niveau haut
  • des trous de fixations

3. Les schémas

Les schémas suivants ont un point commun. Les contacts des relais sont en parallèle, ce qui permet de doubler le courant admissible.

Certains relais FINDER SPDT (série 40.61 par exemple) peuvent être remplacés par des DPDT (série 40.52 par exemple). Le brochage est identique.

La plupart des modules disposent d'un connecteur J1 d'alimentation séparée pour les bobines de relais. L'utilisation est la suivante :

  • alimentation en 5V : mettre en place un cavalier sur les broches 2 et 3
  • alimentation séparée de la partie puissance : alimenter par les broches 1 (GND) et 3 (5V, 12V ou 24V), en fonction des relais utilisés.
  • pour obtenir un module relais 12 ou 24V, il suffit de remplacer les relais 5V par des modèles 12V ou 24V.

3.1. Transistors de commande

Pour commander un relais, on peut utiliser soit des transistors (2N2222 par exemple) ou un ULN2803A.

3.1.1. Transistor

Rappelons le schéma classique d'une commande de relais :


Calculons la résistance de base du transistor. Le 2N2222 a été choisi pour son gain important, mais également pour sa tension de saturation faible (45mV sur un relais du type SONGLE SRD-05VDC-SRD).

Ce transistor sera capable de piloter des relais 24V. Au delà, on peut s'orienter vers un 2N4238, par exemple, supportant 60V.

Le courant de bobine d'un relais OMRON G5RL-K1A-E 5V est de 120mA, et 130mA pour le FINDER 40.61.9.005.

Le gain du 2N2222 est de 50 pour un courant de collecteur de 130mA. Le courant minimal pour assurer la saturation sera de 130mA / 50 = 2.6mA. Nous allons doubler cette valeur par sécurité : 5mA.

Le courant de base maximal du 2N2222 est de 50mA, il supportera donc sans problème 5mA.

Il faut considérer deux cas :

  • commande en 5V (premier montage)
  • commande entre 3V à 3.3V correspondant à un microcontrôleur alimenté par batterie LITHIUM-ION sur son entrée VIN, ou à l'aide d'un régulateur externe 3.3V.

Pour le deuxième cas, quand la tension de la batterie descendra en dessous de 3.2V, le microcontrôleur sera alimenté sous 3V (régulateur LDO avec 200mV de chute de tension drop-out).

Pour une commande en 5V la résistance de base sera au maximum de (5V - 0.6V) / 5mA = 880Ω.

Pour une commande en 3V la résistance de base sera au maximum de (3V - 0.6V) / 5mA = 480Ω.

Avec cette résistance, pour une commande en 3.3V le courant de base sera 10% supérieur.

Si l'on adopte un relais 12V le courant de bobine sera moins important : 50mA. Il est facile de refaire les calculs.

3.1.2. ULN2803

L'ULN2803 est constitué de 8 transistors darlington. Il possède tous les composants nécessaires :

  • 8 transistors pouvant accepter 500mA
  • résistances de base
  • diodes de roue libre

L'ULN2803 remplace donc avantageusement les 8 transistors d'un montage classique, avec leurs composants annexes. La largeur de la carte en sera fortement réduite. 

De plus il supporte 50V, et pourra donc piloter des relais 48V.

La résistance de base d'un ULN2803 a une valeur de 2.7KΩ. La tension VBE est de 1.3V :

  • le courant de base sous 5V sera de : (5V - 1.3V) / 2700 = 1.3mA
  • le courant de base sous 3.3V sera de : (3.3V - 1.3V) / 2700 = 0.74mA

Un microcontrôleur ou un expander est capable de fournir 20mA en sortie. Comme l'ULN2803 a un gain très important (1000) il n'aura aucun mal à piloter le relais.

L'ULN2003A a toutefois un inconvénient : c'est un darlington, et il occasionne une chute de tension (VCEsat) de 1V sur la commande de bobine du relais.

Avec un montage à transistors 2N2222, cette chute de tension est de seulement 45mV.

Avec un relais 5V il restera 4V aux bornes de la bobine. Les relais, heureusement, sont tolérants :

  • un SONGLE SRD-05VDC-SRD réclame 75% de la tension nominale
  • un OMRON G5RL-K1A-E réclame 70% de la tension nominale
  • un FINDER 40.61.9.005 réclame 80% de la tension nominale

Avec certains relais (le FINDER par exemple), 4V de tension de commande risquent d'être insuffisants. 

Par contre avec un relais 12V il restera 11V aux bornes de la bobine, ce qui plus acceptable. Pour ma part je réserverais ce genre de montage à des relais 12V ou 24V.

3.2. Les modules relais bistable

Les modules suivants répondent à un besoin assez général : proposer une solution alternative aux modules du commerce, en utilisant des relais bistables.

3.2.1. Module relais bistable double bobine

Ce module est équipé comme suit :

  • 1 relais OMRON G5RL-K1A-E 5V 16A
  • 2 transistors 2N2222
  • 2 résistances 680Ω
  • 2 diodes de roue libre 1N4148
  • 1 connecteur DUPONT mâle 4 broches
  • 1 borniers 16A

Un relais bistable à double bobine est utilisé :

Le relais dispose de 3 broches pour les bobines :

  • un point commun à relier au + de l'alimentation
  • deux broches SET et RESET à relier aux collecteurs de 2 transistors de commande

Une impulsion 5V sur la broche 2 du connecteur d'entrée suffit à fermer les contacts du relais.

Une impulsion 5V sur la broche 3 du connecteur d'entrée suffit à ouvrir les contacts du relais.

Pour obtenir un module relais 12 ou 24V, il suffit de remplacer le relais 5V par un modèle 12V ou 24V. Cela n'aura pas d'impact sur les niveaux de tension de commande (5V).

J'utilise ce module sur un montage à base d'ARDUINO PRO MINI 5V 16MHz alimenté sur secteur.  L'électronique est confinée dans un petit boîtier étanche, le relais bistable permet d'éviter l'échauffement.

3.2.2. Module double relais bistable simple bobine


Ce module est équipé comme suit :
  • 2 relais OMRON G5RL-U1A-E 5V 16A
  • 1 L293D
  • 1 connecteur DUPONT mâle 7 broches
  • 1 connecteur DUPONT mâle 3 broches
  • 2 borniers 16A

Par rapport au schéma précédent, un relais bistable à simple bobine est utilisé :

Le relais dispose de 2 broches pour la bobine. Pour le piloter on alimente la bobine, pendant un bref instant, dans un sens ou dans l'autre pour fermer ou ouvrir les contacts. Il nous faut donc un pont en H.

Un L293D, que l'on utilise en général pour alimenter des moteurs à courant continu, convient parfaitement ici. Il permet même de se passer de diodes de roue libre.

Attention : le L293D est équipé de diodes, ce n'est pas le cas du L293.

La broche 7 permet d'alimenter la partie logique 5V du L293D. Cette tension de 5V est une obligation (4.5V à 7V), ce circuit ne saurait être alimenté sous 3.3V.

Les tensions sur les entrées de commande, par contre, peuvent accepter une tension de 3.3V sans problème (au minimum 2.3V).

La broche 6 ENABLE permet d'activer le L293D ou non. Cette broche, lorsqu'elle est à ZERO volts, permet d'économiser de l'énergie (10mA au lieu de 27mA à 35mA).

Les broches 2 à 5 permettent de désactiver et d'activer les relais 1 et 2.

A noter : si 10mA au repos est une consommation trop importante on peut remplacer le L293D par un TB6612FNG. La consommation tombera à 1µA.

Un sketch de commande est disponible :

https://bitbucket.org/henri_bachetti/arduino-relay-modules/src/master/arduino/dual-bistable-relay/dual-bistable-relay.ino

3.3. Les modules relais 3V

Les modules suivants répondent à un besoin précis : pouvoir être commandés par une carte ARDUINO PRO MINI 3.3V ou un ESP8266 ou ESP32, sans pour autant devoir ajouter une alimentation 5V, 12V ou 24V pour le relais.

Ils peuvent être alimentés sous 3.3V, ou 3.7V dans le cas d'une alimentation par batterie LITHIUM-ION ou LIPO (3V à 4.2V).

3.3.1. Module relais classique

Ce module est équipé comme suit :

  • 1 relais FINDER 40.61.9.005.0000
  • 1 module convertisseur STEP-UP XR2981
  • 1 transistor 2N2222
  • 1 résistance 390Ω
  • 1 diode de roue libre 1N4148
  • 1 connecteur DUPONT mâle 4 broches
  • 1 bornier 16A

C'est un relais classique, comme en sont équipés les modules du commerce, sauf que celui-ci est un relais 16A de marque FINDER, gage de qualité.

La particularité de ce module relais est d'utiliser un convertisseur STEP-UP XR2981 pour alimenter la bobine du relais en 5V.

Module XR2981 5V

Le module XR2981 consomme 120µA au repos.

La faible résistance R1 à la base du 2N2222 permet d'accepter une tension de commande plutôt basse (broche 2), de 3V.

La broche 4 du connecteur d'entrée est une sortie 5V que l'on pourra utiliser pour alimenter un module ou plusieurs modules 5V.

On peut parfaitement utiliser un relais 12V ou 24V, en remplaçant le XR2981 par un module SX1308 (mêmes dimensions, même brochage), que l'on réglera sur 12V ou 24V, mais attention la tension sur la broche 4 du connecteur sera également de 12V ou 24V.

Module SX1308 réglable

Le module SX1308 consomme 1mA au repos.

Comme tout module relais du commerce, celui-ci ne devra pas être enfermé dans un boîtier de dimensions très réduites non ventilé, sauf si la durée de fonctionnement du relais est courte.

3.3.2. Module relais bistable

Ce module est équipé comme suit :
  • 1 relais OMRON G5RL-K1A-E 5V 16A
  • 1 module convertisseur STEP-UP XR2981
  • 2 transistors 2N2222
  • 2 résistances 390Ω
  • 2 diodes de roue libre 1N4148
  • 1 connecteur DUPONT mâle 5 broches
  • 1 bornier 16A

Ce module reprend la conception du précédent, en adoptant un relais bistable à deux bobines.

Ici c'est la broche 5 du connecteur d'entrée qui est une sortie 5V. 

3.4. Augmenter le nombre de relais

Il est possible bien entendu de réaliser des modules à 4, 8 ou 16 relais, en suivant les mêmes principes que précédemment, mais que penser d'un module à 8 ou 16 relais bâti de cette manière ?

Il monopolise 8 ou 16 sorties de l'ARDUINO. On constate qu'avec 16 relais, les limites d'un ATMEGA328P sont atteintes. On peut certainement mieux faire.

Les modules relais ont évolué, grâce je pense à des optocoupleurs plus sensibles. Le dernier que j'ai acheté (4 relais) demande un courant de commande de seulement 1.4mA. Un module 16 relais aura donc besoin de 22mA au total, ce qu'une carte ARDUINO est parfaitement capable de fournir.

Les modèles un peu plus anciens demandaient un courant de commande de 5mA. Si tous les relais sont activés, un module 8 relais consommera 40mA sur les sorties du microcontrôleur, et cette consommation montera à 80mA pour un module à 16 relais.

Attention : avec certains module relais anciens et bas de gamme du commerce ce courant de commande peut doubler, et on approche dangereusement de la limite des 200mA du microcontrôleur.

3.4.1. Expander

Un expander d'entrées / sortie I2C 8 bits ou 16bits peut également être utilisé afin de limiter le nombre de broches de commande :

  • un MCP23008 + 8 transistors + 8 relais classiques
  • un MCP23008 + 8 transistors + 4 relais bistables
  • un MCP23017 + 16 transistors + 16 relais classiques
  • un MCP23017 + 16 transistors + 8 relais bistable

Un module relais équipé d'un expander MCP23017 I2C 16 canaux permettra de piloter 16 relais (ou 8 relais bistables). Comme le MCP23017 possède 3 broches de sélection d'adresse I2C, on peut connecter jusqu'à 8 modules. Cela permettra de piloter en tout 128 relais (ou 64 relais bistables).

Le nombre de broches de commandes est réduit à seulement 2 (SDA et SCL) :

  • ARDUINO : A4 & A5
  • ESP8266 : GPIO4 & GPIO5
  • ESP32 : GPIO21 & GPIO22

Le câblage sera donc réduit par l'utilisation du bus I2C.

3.4.2. Cartes commerciales

Des solutions commerciales équipées d'un expander existent :

Cette carte à 8 relais utilise un expander I2C PCF8574, un 74HC240 et un ULN2803A :

https://www.ereshop.com/shop/index.php?main_page=product_info&cPath=143_178&products_id=788

Son prix est assez élevé : 42$

3.4.3. Réalisation à l'aide de modules du commerce

Il est possible d'utiliser un module à relais et un module expander du commerce :

Module à 8 relais


Module MCP23017

On devra donc relier les sorties du module expander aux entrées du module à relais. J'ai déjà écrit un article à ce sujet :

Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017

3.4.4. Réalisations personnelles

Si l'on désire une solution tenant sur une seule carte, ou une solution à relais bistables, il faudra la réaliser soi-même.

Les exemples suivants sont construits autour d'un expander MCP23008 ou PCF8574. Ils utilisent des transistors 2N2222 ou un driver ULN2803.

Comme pour les exemples précédents, pour obtenir un module relais 12 ou 24V, il suffit de remplacer les relais 5V par des modèles 12V ou 24V (et même 48V pour le ULN2803).

Certains modules utilisent des relais OMRON-G5RL-K1A-E (SPST), d'autres des OMRON-G5RL-K1-E (SPDT). Ils sont compatibles broche à broche.

Un cavalier (JP1 sur les schémas) permet de relier les broches 4 et 5 du connecteur dans le cas où l'on désire alimenter uniquement en 5V avec la même source d'alimentation.

Trois ponts de soudure (JP2) permettent de changer l'adresse I2C du module (0x20 à 0x27) :
 

Les deux composants MCP23008 et PCF8574 occupent la même plage d'adresses I2C.

A0, A1 et A2 correspondent aux broches suivantes :

    MCP23008 : 5, 4, et 3
    MCP23017 : 15, 16 et 17
    PCF8574 : 1, 2 et 3

L'adresse I2C est sélectionnée à l'aide de points de soudure. Exemple pour un MCP23017 :

Pour obtenir l'adresse 0x20 il faudra réunir les pastilles 1-2, 4-5, 7-8
Pour obtenir l'adresse 0x21 il faudra réunir les pastilles 2-3, 4-5, 7-8
Pour obtenir l'adresse 0x22 il faudra réunir les pastilles 1-2, 5-6, 7-8
Pour obtenir l'adresse 0x23 il faudra réunir les pastilles 1-2, 4-5, 8-9
etc.

3.4.4.1. Exemple avec un MCP23008 et 8 relais classiques


Ce module est équipé comme suit :
  • 8 relais FINDER 36.11.9.005 10A (compatibles avec les SONGLE SRD-05VDC-SRD)
  • 8 transistors 2N2222
  • 8 résistances 680Ω
  • 8 diodes de roue libre 1N4148
  • 1 connecteur DUPONT mâle 4 broches
  • 1 connecteur DUPONT mâle 3 broches
  • 8 bornier 10A

La broche 4 permet d'alimenter le MCP23008. Il est possible de l'alimenter sous 3.3V ou 5V (1.8V à 5.5V). Le MCP23008 consomme 2µA.

Comme tout module à relais du commerce, celui-ci ne devra pas être enfermé dans un boîtier de dimensions très réduites non ventilé, sauf si la durée de fonctionnement des relais est courte.

Avec 8 relais 5V par exemple, s'il sont tous activés, la consommation sera de 70mA par relais, donc 560mA au total sur la broche VCC.

3.4.4.2. Autre exemple avec un MCP23008 et 8 relais classiques

Ce module est équipé comme suit :
  • 8 relais FINDER 40.61.9.005.0000 16A
  • 1 ULN2803
  • 1 connecteur DUPONT mâle 4 broches
  • 1 connecteur DUPONT mâle 3 broches
  • 8 bornier 10A

Comme dit plus haut (3.1.2. ULN2803), je réserverais ce genre de montage à des relais 12V ou 24V.

3.4.4.3. Exemple avec un MCP23008 et 4 relais bistables

Ce schéma reprend le principe de l'exemple N°1, avec des relais bistables.

3.4.4.4. Exemple avec un PCF8574 et 4 relais bistables

Ce schéma reprend le principe du précédent, avec un PCF8574.

3.4.4.5. Autre exemple avec un MCP23008 et 4 relais bistables

Ce schéma reprend le principe de l'exemple N°2, avec des relais bistables.

Comme dit plus haut (3.1.2. ULN2803), je réserverais ce genre de montage à des relais 12V ou 24V.

3.4.4.6. Autre exemple avec un PCF8574 et 4 relais bistables

On peut réaliser le même module que précédemment avec un expander I2C PCF8574 :

Comme précédemment, les remarques concernant la chute de tension de 1V sur la commande de bobine du relais s'appliquent.

Ce montage souffre d'un autre problème. Le PCF8574 est capable de fournir seulement 100µA en sortie (niveau haut). Comme l'ULN2803 a un gain très important (1000) il pourra néanmoins piloter le relais si celui-ci réclame un courant inférieur à 100mA. Pour certains relais 5V ce courant risque d'être insuffisant.

Si l'on désire piloter absolument des relais 5V ayant un courant de bobine important, il faudra intercaler driver de ligne (un 74HC240 par exemple) entre le PCF8574 et l'ULN2803 :

74HC240

L'encombrement des deux circuits (74HC240 + ULN2803) sera sensiblement le même que celui de 8 transistors avec leurs résistances et diodes, ce qui diminue l'intérêt d'avoir recours à un ULN2803.

Pour ma part, comme précédemment, je réserverais donc ce genre de montage à des relais 12V ou 24V.

3.4.3.7. Pilotage avec un ESP32

Passons à la pratique. Avec les montages précédent (PCF8574 ou MCP23008), sur un ESP32, les connexions seront les suivantes :

  • 21 : SDA
  • 22 : SCL
  • GND
  • VDD : 3.3V
  • VCC : en fonction de la tension des relais (5V, 12V ou 24V)

Voici deux petits exemples de serveur ESP32 utilisant les librairies suivantes :

https://github.com/RobTillaart/PCF8574

https://github.com/adafruit/Adafruit-MCP23008-library

Les exemples sont situés dans la repository bitbucket (voir 7. Téléchargement). Voici les liens directs :

https://bitbucket.org/henri_bachetti/arduino-relay-modules/src/master/arduino/esp32-pcf8574/esp32-pcf8574.ino

https://bitbucket.org/henri_bachetti/arduino-relay-modules/src/master/arduino/esp32-mcp23008/esp32-mcp23008.ino

Une petite page HTML pourvue d'un bouton permet d'activer et désactiver le relais N°1 :

3.4.5. Autres exemples

Bien entendu, on pourrait imaginer différents montages sur le même principe :

  • expander PCF8574 + ULN2803 + 8 relais classiques
  • expander PCF8575 ou MCP23017 + 2 ULN2803 + 8 relais bistables
  • expander PCF8575 ou MCP23017 + 2 ULN2803 + 16 relais classiques
  • etc.

Un registre à décalage 74HC595 serait également utilisable mais il monopolisera 3 broches de l'ARDUINO, au lieu de 2 pour un expander I2C.

4. Sécurité

Lorsque l'on manipule du 230V on doit prendre des précautions, en particulier ne pas toucher les parties haute tension (contacts, bornier de sortie), ni le dessous du module.

Il est totalement déconseillé de fabriquer des cartes devant supporter du 230V à l'aide de plaquettes à pastilles. L'écartement entre pastilles est nettement insuffisant pour assurer une isolation correcte sous 230V. En conséquence un PCB s'impose.

5. Réalisation

Si les contacts du relais doivent être soumis à des courants importants, il est conseillé de surcharger les pistes de puissance à l'aide de soudure, ou de souder sur ces pistes un fil rigide de section appropriée, par exemple 1.5mm² pour 16A.

6. Photos

Voici des images des premiers modules réalisés :

Module relais bistable

Module 2 relais bistables + L293D

Le module 2 relais bistables + L293D en action :


Les autres modules devraient suivre au rythme de la création des projets qui les utiliseront.

7. Téléchargement

Pour télécharger les projets :

https://bitbucket.org/henri_bachetti/arduino-relay-modules.git

Cette page vous donne toutes les informations nécessaires :

https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

8. Conclusion

On pourrait penser que les modules du commerce conviennent à la plupart de nos montages, mais ce n'est pas forcément le cas, surtout si l'on prend en compte la problématique de l'alimentation par batterie et celle de l'échauffement de la bobine.

9. Liens utiles

D'autres articles à propos de relais :

Piloter un relais. Transistor unipolaire ou bipolaire ?

Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017

Relais Retardé sans Microcontrôleur

Télécommande de Relais par Infra-Rouge


Cordialement

Henri

10. Mises à jour

12/08/2021 : ajout connecteurs de puissance + cavaliers


9 commentaires:

  1. Bonjour,
    Très intéressant, instructif et pédagogique.
    Merci pour ces articles écrits de haute qualité (à l'heure des vidéos chronophages ...)
    Continuez ainsi!
    Bien cordialement
    Alain

    RépondreSupprimer
    Réponses
    1. Effectivement je ne publie pas de tutos sur YOUTUBE, mais il m'arrive d'illustrer mes articles à l'aide de petites vidéos.
      Merci.

      Supprimer
  2. Bonjour, je vous remercie pour cet excelent article sur les relai bistables, j'aurai une question de débutant si vous permettez, la commande se faisant par impulsion, je ne vois pas comment conserver la dernière position du relai dans l'arduino, faut-il connecter une broche en entrée sur le circuit de commande ou passer par une variable Merci Eric M

    RépondreSupprimer
    Réponses
    1. En général il n'y a aucun besoin de mémoriser l'état du relais. Si l'on envoie une impulsion de fermeture et que le relais est déjà fermé, la commande n'aura pas d'effet.
      Un relais bistable n'est pas un télérupteur.

      Supprimer
  3. Merci de votre réponse, en effet si on alimente une des 2 bobines du relai du coté ou il est déja commuté l'impulsion recue par la bobine n'entraine aucun effet mécanique, ce relai doit commuter ou pas en fonction de l'état de 4 capteurs en entrée, je pensais toutefois qu'avec la programmation on pouvait éviter d'envoyer des impulsion inutiles a la bobine. Cordialement Eric M. https://docs.rs-online.com/a94f/0900766b81397cb2.pdf

    RépondreSupprimer
    Réponses
    1. Bien sûr, si l'on mémorise l'état du relais dans le logiciel, on peut éviter d'envoyer des impulsions inutiles, mais l'intérêt est faible.
      Deuxièmement, en cas de redémarrage du microcontrôleur, l'état du relais est inconnu.

      Supprimer
  4. Bonsoir, merci pour ce super article.
    Une question, sur le schéma 3.4.4.2. vous n'utilisez aucune diode de roue libre, alors que vous commutez une bobine, est-ce normal ?

    RépondreSupprimer
    Réponses
    1. Oui, puisque l'ULN2803 en possède déjà une par canal, comme expliqué en 3.1.2.

      Supprimer
    2. Ha oui désolé, ce sont les expander qui n'en ont pas...
      Merci pour la réponse

      Supprimer