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.
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é.
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 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.
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 :
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 :
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
- 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
- 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.
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 :
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
- 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.
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
- 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 |
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.
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 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
- 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 :
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
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
Bonjour,
RépondreSupprimerTrè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
Effectivement je ne publie pas de tutos sur YOUTUBE, mais il m'arrive d'illustrer mes articles à l'aide de petites vidéos.
SupprimerMerci.
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épondreSupprimerEn 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.
SupprimerUn relais bistable n'est pas un télérupteur.
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épondreSupprimerBien 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.
SupprimerDeuxièmement, en cas de redémarrage du microcontrôleur, l'état du relais est inconnu.
Bonsoir, merci pour ce super article.
RépondreSupprimerUne 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 ?
Oui, puisque l'ULN2803 en possède déjà une par canal, comme expliqué en 3.1.2.
SupprimerHa oui désolé, ce sont les expander qui n'en ont pas...
SupprimerMerci pour la réponse
BONJOUR
RépondreSupprimerJe viens de rajouter chez moi une installation photovoltaïque de 4,5 kWc en autoconsommation et suite à cela j'ai éprouvé le besoin d'optimiser la gestion des charges ( PAC chauffage , PAS ECS , Charge véhicule électrique et éventuellement d'autres besoins à venir.
J'ai utilisé DOMOTICZ avec modules BLOCKY et LUA pour piloter des relais de puissance via des ESP8266 en Wi-Fi. (Si nécessaire je peux fournir tous les détails du projet).
Globalement cela fonctionne mais je suis gêné par un PB de securité :
-- Pour chaque charge, un gpio de l’ESP (3,5V) pilote un relais 5 volts qui en sortie alimente en 220V la bobine du relais de puissance.
Pour le moment ça fonctionne avec une carte relais SRD 05 VDC-SL-C (acheté à trois sous sur Aliexpress et semble-t-il sans optocoupleur).
Je me demande si cette solution est bien sérieuse pour piloter tous les équipements de la maison ! Risque incendie ; CC ??
Aussi en sortie de l'ESP 82 66 j'aurais préféré piloter des relais OMRON G2R-1-E 5 VDC qui me paraissent plus sérieux.
CECI dit, j’ai tenté ce montage (remplacer relais SRD 05 VDC-SL-C par OMRON G2R-1-E 5 VDC ) selon le § 3.1. Transistors de commande // 3.1.1. Transistor (cf article ci dessus)
je n'arrive absolument pas à faire fonctionner ce montage pourtant basique ! Je n’ai pas de diode de roue libre, mais est-ce dramatique ?
J’utilise un transistor 2N2222 A ....... alors que le texte stipule 2N2222 ( C’est pareil ??) ; le dessin de l’article note PN 2222 ; lequel est le bon ?
Désolé je suis complètement IMPERMEABLE à l’électronique !!
POUR le moment par securité, je fais une cascade qui evite le 230 V dans la carte relais SRD 05 VDC:
GPIO ESP8266 commande relais SRD 05 VDC-SL-C commande bobine 5VDC OMRON G2R-1-E commande Relais LEGRAND –4 125 23- 25A/230V
POUVEZ VOUS SVP me conseiller ?
1) Y a t-il une MARQUE de relais SRD 05 VDC-SL-C pouvant fonctionner EN TOUTE SECURITE avec une sortie 230 V vers la bobine 230V du relais LEGRAND 4 125 23 ?
2) SINON quel est le bon transistor pour que j’arrive (peut-être un jour ?) a faire fonctionner le montage du § 3.1.1. Transistor
MERCI POUR VOTRE AIDE.
Sans diode de roue libre le 2N2222 peut tenir, ou pas.
SupprimerD'un autre côté commander un contacteur de puissance sans snubber est tout aussi risqué pour le relais.
https://riton-duino.blogspot.com/2023/02/piloter-une-charge-inductive-nous.html
Il est étonnant que la carte SRD 05 VDC-SL-C (poster un lien vers le produit SVP) ne soit pas équipée d'un optocoupleur, mais d'un autre côté l'opto est absolument inutile vu que le relais assure une isolation galvanique largement suffisante.
Je dirais simplement qu'un SRD 05 VDC-SL-C ne tiendra pas longtemps sans snubber, mais qu'un G2R-1-E ne fera pas mieux dans les mêmes conditions.
Pour résumer : diode de roue libre sur le G2R-1-E et snubber aux bornes de la bobine du contacteur obligatoires.
Un PN2222 est un 2N2222 en boîtier plastique, mais on trouve aussi des 2N2222 en boîtier plastique. Le 2N2222A supporte un peu plus de tension et a aussi un gain supérieur. C'est sans effet sur un montage aussi simple.
Vous avez peut être un problème de brochage, ou alors le 2N2222 a été détruit du fait de l'absence de diode de roue libre.
https://riton-duino.blogspot.com/2023/02/piloter-une-charge-inductive-nous.html
SupprimerSur cette page au paragraphe 4.3. Contacteur il y a un montage avec relais + contacteur. Il suffit de remplacer SRD 05 VDC-SL-C par G2R-1-E.
Bonsoir,
SupprimerMerci pour ces infos.
ça marche ! En fait je suis le roi de l'erreur de câblage !
... mais j'ai commandé des 2N2222 en boîtier métallique ainsi que des diodes de roue libre.
Au plaisir
ETV73
Je suis en plus très heureux à 70 ans de comprendre enfin le fonctionnement d'un transistor !
Supprimer