SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

GPIO et relais

Fri Aug 23, 2019 12:36 pm

Hello,

je fais appel à vos connaissances car il y a un truc que je ne comprends pas.
J'ai actuellement un raspberry. J'essaye de commander 2 relais avec.
J'ai actuellement un module relais qui fonctionne :
https://fr.aliexpress.com/item/32851459 ... 6c37AgvCyQ
Il s'agit de la version 5V.

Ca marche nickel, je mets la PIN 35 du raspberry en HIGH, et le relais se déclenche.

Vu que ça marchait, mais que je voulais faire mercher 2 relais, j'ai pris une autre version (une autre carte) 5V avec 2 cannaux :
https://fr.aliexpress.com/item/32905958 ... 6c37LXbowS
La LED s'allume bien, mais quand j'envoie le signal HIGH sur une des entrées, alors la LED s'éteint et rien ne fonctionne. Pourtant, c'est sensé être un relais 5V comme l'autre, mais juste avec 2 entrées et 2 sorties correspondantes. J'ai essayé avec le jumper et sans, rien...

Alors je lis sur internet que les sorties Raspberry GPIO sont en 3V et pas en 5V.
Et donc je me dis, mais génial, j'ai un relais qui fonctionne avec du 3.3V mais c'est la même carte que celle qui fonctionne déjà, ça devrait marcher !
Alors je mets le VCC de cette carte sur la sortie 3.3V de l'arduino. Et je branche un autre GPIO (36) sur l'entrée DATA de la carte.
Bref, c'est le même montage que sur le relais qui fonctionne, mais j'ai juste mis le VCC sur 3.3V au lieu de 5V.
Et là, rien non plus, ça fonctionne pas.

Avez vous une explication ?
Est ce ce serait parce que l'arduino fournit du 3V au lieu de 3.3V sur ces sorties GPIO et ce n'est pas suffisant pour mon relais? Est-ce la PIN 35 ou 36 qui a quelque chose de spécial ?
Est-ce que mes autres modules relais sont défectueux ?
Bref, si quelqu'un a une explication rationnelle sur pourquoi un seul de mes 2 modules relais 5V fonctionne et pas l'autre, ça m'intéresse. Pareil, pourquoi la version 3.3V du même module relais ne fonctionne pas ?

Merci!

User avatar
mahjongg
Forum Moderator
Forum Moderator
Posts: 12322
Joined: Sun Mar 11, 2012 12:19 am
Location: South Holland, The Netherlands

Re: GPIO et relais

Fri Aug 23, 2019 12:43 pm

https://www.raspberrypi.org/forums/view ... &p=1225448

translated with google translate
25: PROBLEMES AVEC LES MODULES RELAIS

Beaucoup de personnes qui ont essayé d'utiliser un module de relais avec un PI framboise ont eu des difficultés à le faire fonctionner, trouvant souvent ce qui s'est passé contre-intuitif. comme toujours, même en programmant comme off, doutant alors de leur logiciel au lieu du module. La raison principale est que ces modules sont conçus pour fonctionner avec un système de contrôle (comme un Arduino) qui utilise une signalisation 5V, et les concepteurs de ces modules n'ont pas envisagé ce qu'il se passerait si l'on essayait d'utiliser le module avec une signalisation 3.3V. les vendeurs de ces modules ne s'en soucient pas non plus.
Regardons un schéma typique d'un tel module:
module de relais sainsmart typique schematic.jpg
module typique de relais sainsmart schematic.jpg (17,52 Ko) Vu 14753 fois
Ce module contient un opto-isolateur (U1) qui est excellent car il empêche toute tension dangereuse pouvant survenir lorsqu'un courant circulant dans une bobine (la bobine du relais) est coupé subitement. Cela créera une très grande tension (appelée tension EMF, qui peut être des centaines de volts) dans le sens opposé du flux de courant. Cette tension est normalement dissipée (court-circuitée) dans une diode "snubber", "flyback" ou "back EMF", mais si cette diode tombe en panne, le transistor pourrait être détruit et la haute tension pourrait se retrouver à la base du transistor ( sur R2) qui peut détruire le contrôleur sans l’opto-isolateur en place.

Dans le cas du schéma ci-dessus, le circuit de commande de relais est câblé pour être "actif bas", c’est-à-dire une tension faible (par rapport à la tension d’alimentation de commande de relais, sur la broche 2 du bloc de connecteurs de gauche) allumera la LED de U1. , ce qui enverra le courant dans R2, cela rendra le phototransistor en U1 conducteur, ce qui ouvrira le transistor Q1, alimentant ainsi la bobine de relais.
Cependant, il y a des problèmes avec cette conception;
normalement, l'opto-isolateur est alimenté avec 5V sur la broche 2 (et GND sur la broche 1), et l'entrée IN0 est supposée aller à 0V (GND) ou à 5V.

Une fois mis à la terre, les deux LED sont alimentées en courant et la bobine du relais est alimentée. Lorsque l'entrée IN0 de 5 V est mise à 5, il n'y a pas de tension sur la chaîne de DEL R1-LED_of_U1-green, de sorte que les deux DEL sont éteintes.

Mais si vous mettez 3V3 sur la broche IN0, ce n'est pas vrai! il restera toujours 5V-3,3V = 1,7Volt sur les deux LED, de sorte qu’un faible courant puisse encore circuler, juste assez pour éclairer faiblement la LED dans U1, allumant le phototransistor de sorte qu’un faible courant passe à R2, et le La bobine de relais peut recevoir juste assez d’énergie pour continuer à tirer dans l’armature du relais (plaque métallique attirée par le champ magnétique). Le relais peut donc toujours rester alimenté. Un relais nécessite beaucoup moins d’énergie pour magnétiser le relais que l’armature reste bloquée par rapport à l’énergie nécessaire pour tirer l’armature.

on pourrait programmer le GPIO IN0 de manière à ce qu'il devienne très ohmique, ce qui désactiverait le relais, mais cette approche a pour conséquence que la GPIO pourrait afficher une tension supérieure à 4V, ce qui pourrait provoquer le "verrouillage redouté" up "phénomène comme les GPIO d'un PI ne sont pas 5V TOLERANT! Voir https://en.wikipedia.org/wiki/Latch-up pour une explication de ce qui pourrait arriver. Juste peut-être que les deux diodes (LED) pourraient empêcher la mémorisation dans la pratique, donc cela pourrait fonctionner, mais votre kilométrage pourrait varier!

La solution évidente à ce problème serait de baisser la tension sur la broche 2 du bloc connecteur gauche à 3,3 V (tout en laissant 5 V ou peut-être 12 V sur la broche 3 pour le relais), mais vous remarqueriez un autre problème! Pour épargner le prix d'une résistance supplémentaire pour la LED verte, le concepteur de ces modules a simplement placé les deux LED (la LED de signalisation verte et la LED de l'opto-isolateur) en série, mais cela signifie que vous avez besoin plus que la somme des deux tensions aller des deux diodes (une LED est une diode) pour obtenir toute quantité de courant qui les traverse, c'est-à-dire (avec les tensions typiques des LED, avec une couleur allant du rouge au vert , environ 2 volts), nous aurons besoin de plus de 2 x 2 = 4 volts, donc 3,3 volts ne suffisent pas pour allumer les deux DEL!

Cela rend ces modules de relais très difficiles à utiliser avec un système basé sur 3.3V comme un framboise PI.
Ce problème est exacerbé par le fait que le vendeur de ces appareils (en particulier sur e-bay) ne vous laisse presque jamais voir le schéma des modules de relais que vous pouvez acheter.

Une solution consisterait à conserver la broche 2 sur 3,3 V mais à court-circuiter le voyant DEL, mais cela impliquerait de souder (une compétence à laquelle quiconque se prétend ingénieur en électronique ne peut pas se passer, et ce n’est pas aussi difficile qu’il a l'air, veillez à ne pas toucher le métal du fer à souder pendant l’utilisation).

La meilleure solution consiste à maintenir la tension de la broche 2 à 5V et à utiliser un autre transistor (et une résistance de base) pour allumer et éteindre le courant de la LED.

ou simplement acheter une carte de relais mieux adaptée, une chose simple sans opto-isolateur comme celui-ci fonctionnera bien:
Image
vous pouvez également utiliser cette conception avec un relais 12V sans problèmes.

REMARQUE:
Testez sans contrôle logiciel, avant d'ajouter un contrôle logiciel!
Pour vérifier si une carte de relais fonctionne avec une signalisation 3,3 V, connectez simplement l'entrée de commande directement (manuellement) à 3V3 (3,3Volts) ou à GND et voyez si cela fonctionne comme prévu. Vous pourrez ensuite vous en occuper avec le logiciel. En outre, vous pouvez utiliser une LED pour tester votre logiciel avant de connecter la carte à relais, si vous avez des doutes sur votre logiciel.

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Fri Aug 23, 2019 12:58 pm

Ouaip, je vais tenter via un arduino. Mais c'est quand même dommage de mettre une étape intermédaire à mon circuit.

Par contre, ça ne m'explique pas pourquoi la version 3.3V du module (qui fonctionne en 5V) ne fonctionne pas.
Ca devrait passer avec 3.3V en VCC et 3.3V en data ...

Merci

ernesto
Posts: 131
Joined: Thu Jul 19, 2012 10:09 am

Re: GPIO et relais

Fri Aug 23, 2019 1:56 pm

Bonjour
C'est deux cartes à relais fonctionnent très bien avec un RPI ! (sans intermédiaire)
Une des différences entre ces carte est :
La première avec un seul relais est activée par un état logique haut -> 3.3v
La seconde avec deux relais est activée par un état bas -> 0V
Il faut donc adapter le logiciel à la carte utilisée !

C'est cartes sont équipées de relais 5V (c'est écrit dessus 5VDC) il faut donc les alimenter en 5V et pas en 3V. Ne pas confondre la tension d'alimentation des relais 5V avec la tension de la partie commande.

Nota 1: Voila comment j'utilise des cartes à 8 relais depuis des lustres sans aucun PB.
Image

Nota 2: La sortie alimentation 3.3V sur la broche 1 du RPI est faite pour alimenter des "petites choses" car elle ne dispose que de 50 mA. Il ne faut surtout pas alimenter des relais avec ...

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Fri Aug 23, 2019 2:05 pm

ah ok, donc il faut utiliser l'état bas pour activer le relais et l'état haut pour désactiver le relais quand le circuit principal est sur Normally Open (NO).

J'aime pas ce mode de fonctionnement, car en cas en coupure du raspberry, alors le relais va se mettre en route.
Je ne veux pas de ce mode là en fait.

Dans ce cas, il faut passer par un MOSFET, mais ça fait un circuit bien complexe pour pas grand chose.

La 2ème remarque sur l'alimentation 3.3V du relais est très intéressante, je n'y avait pas pensé.
Mais alors, il y n'y a que la PIN 1 3.3V qui est limitée ou toutes les PIN 3.3V du Raspberry sont limitées ?
La 17 possède la même limite ?

Merci en tous cas, ça explique une bonne partie des problèmes que j'ai eu.
Le plus simple étant d'attendre que je reçoive un autre relais 5V comme celui qui fonctionne déjà...

ernesto
Posts: 131
Joined: Thu Jul 19, 2012 10:09 am

Re: GPIO et relais

Fri Aug 23, 2019 2:28 pm

J'aime pas ce mode de fonctionnement, car en cas en coupure du raspberry, alors le relais va se mettre en route.
NON pas de pb, si le RPI est arrêté ou en phase de Boot ou reset ou reboot alors les GPIO passent en haute impédance est le relais ne colle pas .
Je ne veux pas de ce mode là en fait.
C'est pourtant comme ça que 99 % des gens font.
La 2ème remarque sur l'alimentation 3.3V du relais est très intéressante, je n'y avait pas pensé.
Mais alors, il y n'y a que la PIN 1 3.3V qui est limitée ou toutes les PIN 3.3V du Raspberry sont limitées ?
La 17 possède la même limite ?
Toute les PIN marquées 3.3v sont reliées entre elles , donc limitées à 50 mA (pas par PIN mais au total)

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Fri Aug 23, 2019 2:40 pm

ernesto wrote:
Fri Aug 23, 2019 2:28 pm
NON pas de pb, si le RPI est arrêté ou en phase de Boot ou reset ou reboot alors les GPIO passent en haute impédance est le relais ne colle pas , j
Je ne veux pas de ce mode là en fait.
C'est pourtant comme ça que 99 % des gens font.
Ok, mais alors, que se passe-t-il s'il y a une coupure de courant sur le raspberry (ou le transfo meurt), alors le relais reste en OPEN ?

En fait, s'il est en LOW (sans courant) en sans alim, il reste bien en circuit ouvert ?

Dans ce cas, en effet, c'est pas mal...
Après, c'est un peu dommage que ça consomme pour rien alors que le mode relais CLOSE va me servir quelques secondes par semaine...

Il y a des PIN du raspberry qui démarrent en HIGH il me semble. Tu sais lesquelles ?

Merci en tous cas, ça m'éclaire beaucoup !

ernesto
Posts: 131
Joined: Thu Jul 19, 2012 10:09 am

Re: GPIO et relais

Fri Aug 23, 2019 3:07 pm

Ok, mais alors, que se passe-t-il s'il y a une coupure de courant sur le raspberry (ou le transfo meurt), alors le relais reste en OPEN ?
Exact le relais ne colle pas (d'ailleurs tu alimentes le rpi est la carte a relais via la mème alimentation. Ce serait la mème chose si tu avais deux alimentations distinctes cad une pour le RPI et une pour les relais)
Après, c'est un peu dommage que ça consomme pour rien alors que le mode relais CLOSE va me servir quelques secondes par semaine...
NON aucun courant est consommé , Lorsque la sortie GPIO est à l’état haut 3.3v alors on bloque la diode de l'opto de la carte à relais et aucun courant ne circule.
Il y a des PIN du raspberry qui démarrent en HIGH il me semble. Tu sais lesquelles ?
Aucune, au démarrage du RPI tous les GPIO sont en mode INPUT, donc en haute impédance . (Électriquement parlant : la haute impédance n'est pas un état LOW ni un état HIGH)

Edit:
En fait, s'il est en LOW (sans courant) en sans alim, il reste bien en circuit ouvert ?
Je crois que tu fais un confusion: Lorsque le rpi est sans alimentation les GPIO ne sont pas LOW mais haute impédance.
'sans courant' ne veut pas dire LOW mais haute impédance.
Donc en haute impédance les relais ne collent pas.

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Fri Aug 23, 2019 3:26 pm

ernesto wrote:
Fri Aug 23, 2019 3:07 pm

NON aucun courant est consommé , Lorsque la sortie GPIO est à l’état haut 3.3v alors on bloque la diode de l'opto de la carte à relais et aucun courant ne circule.
Coool !
ernesto wrote:
Fri Aug 23, 2019 3:07 pm
Il y a des PIN du raspberry qui démarrent en HIGH il me semble. Tu sais lesquelles ?
Aucune, au démarrage du RPI tous les GPIO sont en mode INPUT, donc en haute impédance . (Électriquement parlant : la haute impédance n'est pas un état LOW ni un état HIGH)
Je ne sais pas si je me suis bien exprimé, après le démarrage du système, il me semblait que j'avais testé une PIN qui était en HIGH par défaut.
Et ça m'embêtait car je voulais plutôt que la PIN soit d'abord en LOW pour lui envoyer un courant.

En tous cas, je vais faire un test en envoyant du LOW sur mon Relais 2 cannaux.
Le 5V du raspberry, je peux le brancher sur le VCC du relais ?

Parce que c'est ça que j'avais fait sur mon relais (le 5V simple canal) qui fonctionne, mais du coup, c'est peut être pas bien...

JumpZero
Posts: 1032
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: GPIO et relais

Fri Aug 23, 2019 5:44 pm

Bjr,
A la conception de ton projet tu dois définir dans quel état doit se trouver l'équipement piloté en cas de défaillance du système pilote.
Je m'explique: il peut-être ON ou OFF tu as pour cela un contact inverseur en sortie du relais: NO/commun/NF
Dans la plupart des cas on souhaite que le système piloté soit OFF lorsque le système de commande (ici Raspberry Pi) est à l'arrêt, planté, ou hors tension. Par exemple si on pilote une pompe de remplissage d'une cuve, il est préférable qu'elle s'arrête.
Mais ce n'est pas toujours le cas, j'ai récemment fait une commande de VMC et elle est câblée sur le contact NF du relais car une VMC doit toujours être en service. Si mon système pilote (c'est pas un Raspberry pi, c'est un ESP32 mais c'est pareil) est hors tension, hors service ou autre la VMC continuera à fonctionner.
Quand tu as défini ça tu remontes la chaîne et tu défini le reste (état du relais, du GPIO etc..) car on peut toujours, en soft ou en hard, changer un ON en OFF, un 0 en 1 et on ne s'en prive pas. Souvent ces module relais disposent d'un cavalier pour inverser l'état du relais par rapport à leur entrée logique (connectée au GPIO du Pi), c'est ce que dis la doc de ton deuxième module dont tu as donné le lien:
Le module peut être haut ou bas par un déclencheur de réglage de cavalier
Donc tu es libre de faire comme tu veux ;)

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Fri Aug 23, 2019 9:03 pm

oui oui, j'ai bien ça sur le relais qui fonctionne et sur le 3,3V aussi, mais pas sur le double canal. On peut donc les régler sur activation quand on envoie un high et dans mon cas, je veux NO.
C'est a dire qu'en mode non alimenté, je veux que mon circuit soit coupé.

Par contre, sur le relais double canal que je possède, ce n'est pas réglable à priori, c'est-à-dire qu'il semble qu'il faille envoyer un low pour faire coller le relais. Mais je n'ai pas encore testé pour savoir si c'est effectivement le problème.

SuperCed
Posts: 7
Joined: Tue Mar 26, 2019 8:56 am

Re: GPIO et relais

Tue Aug 27, 2019 10:56 am

JumpZero wrote:
Fri Aug 23, 2019 5:44 pm
Bjr,
A la conception de ton projet tu dois définir dans quel état doit se trouver l'équipement piloté en cas de défaillance du système pilote.
Je m'explique: il peut-être ON ou OFF tu as pour cela un contact inverseur en sortie du relais: NO/commun/NF
Dans la plupart des cas on souhaite que le système piloté soit OFF lorsque le système de commande (ici Raspberry Pi) est à l'arrêt, planté, ou hors tension. Par exemple si on pilote une pompe de remplissage d'une cuve, il est préférable qu'elle s'arrête.
Mais ce n'est pas toujours le cas, j'ai récemment fait une commande de VMC et elle est câblée sur le contact NF du relais car une VMC doit toujours être en service. Si mon système pilote (c'est pas un Raspberry pi, c'est un ESP32 mais c'est pareil) est hors tension, hors service ou autre la VMC continuera à fonctionner.
Quand tu as défini ça tu remontes la chaîne et tu défini le reste (état du relais, du GPIO etc..) car on peut toujours, en soft ou en hard, changer un ON en OFF, un 0 en 1 et on ne s'en prive pas. Souvent ces module relais disposent d'un cavalier pour inverser l'état du relais par rapport à leur entrée logique (connectée au GPIO du Pi), c'est ce que dis la doc de ton deuxième module dont tu as donné le lien:
Le module peut être haut ou bas par un déclencheur de réglage de cavalier
Donc tu es libre de faire comme tu veux ;)
J'ai testé hier et ça marche!!! ... à moitié...

C'est à dire que sur mon relais double cannal, en mettant en LOW sur le PIN 1 du relais, ça fonctionne.
Par contre, le PIN 2 du relais ne fonctionne pas. Que ce soit en LOW ou HIGH, aucun effet, aucun bruit, aucune LED qui s'allume.
J'ai essayé sur 2 GPIO différents du raspberry et rien.

Par contre, entre temps, j'ai reçu un autre relais un peu comme le premier que j'avais testé et qui fonctionnait, et celui-ci marche aussi.

Donc c'est bon, je peux commander mes 2 intérrupteurs de télécommande NICE sans problème.

Je ré-essaierai plus tard les relais avec des arduino, on verra s'ils fonctionnent mieux ou pas du tout...

iznobe
Posts: 232
Joined: Sun Feb 05, 2017 4:14 pm
Location: Avignon , FRANCE

Re: GPIO et relais

Tue Sep 10, 2019 3:35 pm

Salut ,

le probleme auquel j ' ai ete confronte lors de la mise en place de mes relais , ca a ete au niveau du code , je me trompais souvent de numero de pin , il y a 3 " appellations " pour les GPIO , parfois il est facile de s ' y perdre ;)

la plus facile a comprendre est l ' appellation des GPIO par leur emplacement physique , de 1a 40 selon le modele du pi .

ensuite , il y a l ' appellation GPIO , celle ci est utilise nativement sous bash .

puis l ' appellation BCM utilise par wiringpi .

dans chaque programme on peut choisir , mais pour simplifier je n' utilise plus que la GPIO .

pour avoir la table de ces appellations et etablir une correspondance , la commande

Code: Select all

gpio readall
est ton amie :D

du coup , ca donne en plus une visualisation des GPIO potentiellement utilisable pour commander les relais : leur nom commence par GPIO suivi d' un numero . il arrive souvent de se tromper de pin physique par rapport a celui qu ' on utilise dans le programme en question .

Return to “Français”