Suite à un petit souci de serveur, les emails de confirmation d'inscription n'étaient plus envoyés. Si vous n'avez pas reçu votre mot de passe, utilisez l'option "Mot de passe oublié" et vous recevrez le nouveau. (February 23) x

En raison de spams récurrents, les messages des nouveaux inscrits sont modérés a priori. Ne vous inquiétez pas si vous ne voyez pas apparaitre votre message immédiatement sur le forum. (November 04, 2021) x

Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Problème de relais controllé par GPIO
#1

Bonjour,

Je pers mon latin à essayer de faire marcher un module de relais via les GPIO...

Le module (qui compte 4 relais) a été acheté sur eBay et fonctionne parfaitement : si je le connecte en direct sur un PIN 3.3V, j'active LED (de contrôle)+relais. Si je déconnecte, je n'ai (logiquement !) ni relais, ni LED.

Je raccorde ensuite ce même relais sur le GPIO 11 (j'en ai essayé d'autres) et j'essaye via ligne de commande juste après le démarrage.
Code :
[email protected]:/sys/class/gpio# ls
export    gpiochip0  unexport
Ni la LED, ni le relais sont activés, ce qui correspond bien à l'état normal
Code :
[email protected]:/sys/class/gpio# echo 11 > /sys/class/gpio/export
[email protected]:/sys/class/gpio# ls
export    gpio11    gpiochip0  unexport
Résultat : LED off et relais closed (normal donc)
Code :
[email protected]:/sys/class/gpio# echo out > gpio11/direction
Résultat : LED ON + relay open ; déjà ?? Alors que :
Code :
[email protected]:/sys/class/gpio# cat gpio11/value
0
Bref, je ne vois pas !! Surtout que, peu importe la valeur donnée à gpio11/value par la suite, l'état du relais et de la LED ne changent pas :
Code :
[email protected]:/sys/class/gpio# echo 1 > gpio11/value
[email protected]:/sys/class/gpio# cat gpio11/value
1
# LED ON + relay open
[email protected]:/sys/class/gpio# echo 0 > gpio11/value
[email protected]:/sys/class/gpio# cat gpio/gpio11/value
0
# LED ON + relay open ??
La seule chose que je peux faire via :
Code :
[email protected]:/sys/class/gpio# echo 11 > unexport
C'est... d'éteindre la LED, mais pas de rebasculer le relais en position fermé !

J'ai eu beau cherché un peu partout, je ne comprends pas la logique... Le module serait-il non compatible ou ai-je fais des erreurs dans les instructions ?

D'avance, merci

Nb : le système est à jour et tourne, évidement, sur raspbian ! Il s'agit d'un Raspberry Pi modèle B Rev. 2
#2

Bonjour,

Tour d'abord, je ne connaissais pas cette méthode pour piloter les GPIO comme décrite sur le blog: How to use GPIOs on raspberry pi (Simple I/O, PWM and UART).
Maintenant, je propose que tu fasses les mêmes essais avec une simple Led car coller un relais nécessite "une certaine intensité" que le GPIO peut ne pas pouvoir fournir (une idée comme cela car de toute façon, j'aurais fais le test avec une Led voire un oscilloscope ;-)

Question: Quelle est la référence ou les caractéristiques de ce (je cite) module qui compte 4 relais acheté sur eBay et qui fonctionne parfaitement ?


Merci par avance, Cdlt, A+
--
Claudius
#3

Bonsoir,

et merci pour cette piste. Effectivement, le contrôle de la LED se fait sans aucun problème en utilisant la méthode décrite dans mon premier post.

C'est donc bien le relais qui est trop gourmand en intensité... Il s'agit d'un module Ywrobot 4 relay qui est donné sur Ebay comme étant compatible avec le Rasp. Qui plus est, il existe de nombreuse vidéos /tutoriaux avec ce modèle, mais il faut croire que je suis tombé sur une mauvaise série 8.(

Il ne me reste plus qu'à créer une version avec opto-coupleur...

EDIT : ou alors alimenter le module via une autre alimentation +5V que celle fournie par le Rasp ; ce qui pourrait marcher d'après quelques nouvelles recherches !
#4

De rien,
singinglarvae a écrit :... mais il faut croire que je suis tombé sur une mauvaise série ...
Pas de précipitations, je mesurai avant l'intensité à fournir (en vue de ce qui est spécifié sur ce GPIO) pour commander à partir d'une source 3.3 V un relais car, sauf erreur de ma part, je vois sur la photo de jolis transistors attaqués par leur base et travaillant à coup sûr en mode commutation.

Maintenant, intercaler un étage opto-coupleur est la meilleure façon de se prémunir des mauvaises isolations extérieures pouvant endommager ce cher RPi ;-)

A suivre...
#5

Bonjour,

avec un petit script, je suis allé "attaquer" successivement tous les GPIO pour commander le module. Résultat des courses, seuls les GPIO numéro 4, 7, 8 et 22 peuvent piloter le module. Dans le cas de tous les autres, le comportement (de la LED et/ou du relais) est un peu erratique.

Et encore, pour ces 4 GPIO, le comportement n'est pas celui attendu (le relais se ferme et s'ouvre sur la commande export/unexport, et non pas sur la modification de value).

Je n'y comprends pas grand chose, je l'avoue... J'ai retrouvé le schéma (théorique) du module ; mais je ne comprends pas le pourquoi du non-fonctionnement des autres GPIOs (mes connaissances en électroniques sont basiques). Pas assez d'intensité sur le collecteur du transistor pour enclencher le relais ? (Mais j'utilise une alimentation externe pour piloter le module)
[Image: schemeYwrobot.jpg]
Je vais commencer à développer avec mes 4 GPIO fonctionnels en attendant mieux Undecided

Merci d'avance
#6

Bonjour,
singinglarvae a écrit :... j'utilise une alimentation externe pour piloter le module
Tu confirmes que le Vcc de la platine relais est bien du 5 Volts car c'est ce qui est attendu au vue de la photos des 4 relais (marquage SRD 05VDC-SL-C) + résistance de 470 Ohms en série sur les Led qui doivent s'allumer en les faisant traverser par un courant de 10 mA (5000 mV / 470 Ohms ~ 10 mA).

Si c'est le cas, je te propose la manipulation suivante sur uniquement la platine et déconnectée du RPi
  1. Relier le Vcc à du 5 Volts qui doit se retrouver sur la pin #1 du connecteur J5 (la Led D9 doit être allumée)
  2. Sur le connecteur J5, relier ensemble les pins #1 et #2 => Quel est l'état de la Led D1 et du relais JK1 ?
  3. Déconnecter la pin #2 de la pin #6
  4. Toujours sur le connecteur J5, relier ensemble les pins #2 et #6 (qui est le 0 Volt) => Quel est l'état de la Led D1 et du relais JK1 ?
  5. Faire la même chose avec les pins #3, #4 et #5 => Quel est l'état de la Led et du relais correspondant ?
singinglarvae a écrit :... seuls les GPIO numéro 4, 7, 8 et 22 peuvent piloter le module
Je regarde en // les différences avec les autres GPIO (résistance de pull up, limitation de courant, etc.)

A suivre...
#7

Salut,


- J'utilise moi aussi souvent la méthode des export/direction etc.. (je confirme que cette méthode fonctionne bien).
Mais tu peux aussi par exemple par la méthode "wiringpi" pour vérifier que le comportement "hardware" est bien le même aussi et donc petit a petit isoler le problème.


- Meme si j'ai bien noté que ca marche quand tu te branche en direct sur le 3V3 d'alim etc.. (a noter que dans ce cas, tu peux tirer bien + de courant que depuis le 3V3 d'une GPIO)... quand on tapes ton relai dans un moteur de recherche, on arrive surtout sur des réponses "Arduino".
Et l'arduino lui fonctionne avec des niveaux logiques 5V et non 3V3.

Si tu regardes les inscriptions sur l'image que tu as founi, on peut lire -05VDC-
Ce qui donc semble être un relais 5V et non 3V3.

Essaye d'utiliser un "level shifter" ou faire un "pont diviseur" pour que la GPIO puisse au final sortir un vrai 5V au relais. (aux transistors devant le relais ?)

Cela pourrait peut être expliquer le comportement ératique que tu décris, car il est possible que 3V3 soit proche de ce que nécessite le relai pour reconnaitre un "1"
et donc, desfois c'est assez, desfois non, sur certaine pin oui, d'autres non... En + le fait qu'il y a des transistors devant change encore des trucs...

Bref.. je dis pas que c'est forcément ca, mais si t'as un relais 5V (avec des transistors devant qui s'attendent a du 5V) , mieux vaut pas lui donner du 3V3 si on veut etre sûr que tout marche.

Ou alors tu peut peut etre tester (je ne suis pas resposable si tu crames ton rasp et ta maison Wink ) de laisser les 3V3 de la gpio en entrée du transistor, mais mettre 5V au niveau "Vcc" sur le shéma.. si ce n'est pas ce que tu as fait.
#8

Citation :Tu confirmes que le Vcc de la platine relais est bien du 5 Volts
Effectivement : c'est bien du 5V. J'ai utilisé soit la platine du Pi, soit une alimentation externe. Pour le moment, l'alimentation est réalisée via cette seconde.

Suite à la manip :
Etape 1 : D9 allumée
Etape 2 : JK1 et D1 OFF tous les 2
Etape 4 : JK1 et D1 ON tous les 2
Etape 5 : tous les relais et LEDs suivent le même mode de fonctionnement que le 1er ensemble LED+relais (ON si la base du transistor Q correspondant est alimenté en 0V)

Mise à part ce soucis, j'utilise pour mes test les GPIO 4 et 7 et ça fonctionne. Ce qui m'a permis d'avancer du coté programmation (ce module de relais doit être à terme piloté via une télécommande infra-rouge et/ou une appli web). La partie IR fonctionne déjà, reste la partie Web à écrire !
#9

Ok pour les résultats attendus des tests de la platine relais seule alimentée en 5 Volts.

Maintenant et pour terminer dans ce lever de doute Platine Relais @ RPi, peux-tu faire la même manipulation en utilisant le 3.3 Volts sur les pins #2, #3, #4 et #5 en lieu et place du 5 Volts pris de la pin #1 du connecteur J5. La platine relais étant naturellement toujours alimentée en 5 Volts.
Les résultats des états Led et Relais devraient être les mêmes ce qui finalisera le bon comportement de la platine relais en la commandant avec du 3.3 Volts au lieu du 5 Volts.

Edit:
Claudius a écrit :Je regarde en // les différences avec les autres GPIO (résistance de pull up, limitation de courant, etc.)
D'après le schéma d'un RPi, tous les GPIO sont identiques d'un point de vue pull up sauf GPIO.2 et GPIO.3 avec une résistance de rappel de 1.8 K car sont respectivement SDA et SCL du bus I2C.
cf. Raspberry-Pi Schematics (Bloc General Purpose I/O)


A suivre...
#10

Test effectué donc avec du 3.3 Volts
Claudius a écrit :Les résultats des états Led et Relais devraient être les mêmes
Et les résultats sont exactement... inversés ! Les relais+LED se déclenchent si la base du transistor est alimenté en +3.3V (et non pas en 0V comme on pourrait s'y attendre non ?)

Je vais reverifier mes branchements, mais tout les autres montages de la platine d'essais fonctionnent correctement... :o
#11

Attention, quand tu écris: "Et les résultats sont exactement... inversés ! Les relais+LED se déclenchent si la base du transistor est alimenté en +3.3V", je l'interprète comme: "Le 3.3 V n'est pas une tension suffisante pour faire décommuter le transistor et ce 3.3 V est vu de la base du transistor comme du 0 V".

Je veux dire par là que les résultats ne sont pas inversés et qu'il est semble t-il impossible de commander cette platine à partir d'une tension de 3.3 V.
En résumé et, sauf erreur de ma part, cette platine a été conçue pour du 5 Volts avec des commandes 0 V / 5 V et non 0 V / 3.3 V (c'est toute la difficulté des montages pilotés avec du 3.3 V ;-)

Une recherche s'impose pour savoir si un projet RPi (ou Arduino) utilise cette platine relais telle quelle sans passer par un interfaçage type opto-coupleur ou autre.

Edit:
Fil de discussion qui montre que tu n'es pas le seul avoir ce problème - cf. Domotique - Relais avec Raspberry qui se termine par "La meilleure méthode serait d'utiliser un convertisseur 3.3V à 5V" ;-)

A suivre...
#12

Hello
Javais également des soucis de fonctionnement avec une platine 2 relais et le raspberry ( impossible de l'activer ) alors que normalement elle s'activé a 0V. je pense qu'elle n'est concu que pour l'arduino.

J'ai finalement acheté ceci : http://www.amazon.fr/gp/product/B00PQC34...ge_o00_s00
Aucun problème avec mon raspberry Smile
#13

EVOTK57 a écrit :... je pense qu'elle [la platine] n'est concue que pour l'arduino.
En effet, comme la commande d'un transistor est faite en faisant circuler un courant sur sa base au travers d'une résistance, la grande différence entre un RPi et un Arduino est, je cite (cf. Quelles sont les différences entre le Raspberry Pi et une carte Arduino ?):

Courant de sortie:
Le courant maximum pouvant passer dans les GPIO de sortie sont de +- 20 mA par GPIO
[je précise, +20 mA si un et un seul GPIO est utilisé en sortie] pour un maximum de 50 mA [je précise, y compris ce qui est tiré sur la broche 3.3 V]
En comparaison un Arduino peut sortir 40 mA par pin pour un maxi de 200 mA à peu prés.

C'est pourquoi sur un RPi, il vaut mieux privilégier des commandes en tension en utilisant des transistors FET (cf. RPi GPIO Interface Circuits) ou alors interfacer des opto-coupleurs comme la carte utilisée par EVOTK57 qui ont le double avantage de consommer très peu sur le GPIO (on en trouve avec 1 mA requis) et surtout d'assurer une isolation électrique avec la charge commutée.
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)