Commande carte 16 relais

Bonjour,

Je veux utiliser une carte de 16 relais avec un Raspberry. J’ai donc commandé une carte 16 relays sur le site Kubii (le Raspberry n’était pas mentionné comme compatible mais un commentaire dit que c’est possible).

Cette carte s’alimente en 12V et se commande en 5v. J’arrive bien à actionner un relai en mettant en contact le GND avec les PIN de commande relais. Donc les relais se commandent avec le moins (GND). Or je peux espérer commander cette carte avec le Rapsberry qu’avec les GPIO +5v.

Quelqu’un a-t-il une solution pour ça ? Merci d’avance.

La carte 16 relais

Désolé d’être si negatif, mais la phrase "Chacun a besoin d’un courant de pilote de 15 à 20 mA; " de votre lien est ambigué:
a) s’agit il du courant vers la masse que l’on envoit sur la carte. Alors, on a au bas mot 15*16 == 240mA que le port GPI doit founir, bien au delà de ses spécifications. (et si quelqu’un a « testé » sur un ou 2 voies, et dit que « ça marche », je me méfierais beaucoup
b) ou s’agit il du courant de commande des relais (info inutile quand on cherche à interfacer)

Dans le doute, et voyant qu’il n’y a pas de lien vers un schema (tiens, ça c’est rare, voire exceptionnel), je changerais de crèmerie (FYI : je me méfie cordialement de Kubii).
Une solution (qui consisterait à prendre deux buffers type CD4050, se payer un veroboard, deux condensateur de decouplage, et 32 + 4 fils + quelque connecteurs) est fastiseuse à mettre en ouvre, chère…
Vu l’ambiguité de la formulation, l’absence de schema, ne prenez pas de risque:

changez de crèmerie.

Edité: au vu de la carte, on peut pifomètrer qu’il y a 16 opto coupleurs; on ne sait pas s’il y a une LED temoin de l’etat de l’entrée d’un canal (des cartes analogues en ont) ni une resistance de protection (a fortiori quelle est la valeur). Cela permet d’ecarter le fait que le RPi doive fournir 15 mA par canal… c’est plutôt 2mA (je suis désolé de ne pas aller plus loin, mais sans schema, ça reste de la spéculation: vous avez tout interet à vous munir d’un multimètre et d’une loupe…)
J’ai aussi noté que le regulateur -ressemble à un 7805, avec deux gros condensateurs soudés de guingois- n’a pas de radiateur : sous 12v redressé (pas de l’alternatif, qui serait … mortel pour certains composants) , vous aurez au pire 20*(12-5)*16 milliwats à dissiper, soit deux watts… le 7805 -sous reserve d’existence - survivra, mais chauffera enormément et risque de se mettre en circuit ouvert -protection thermique-, garantissant un fonctionnement erratique avec 16 canaux… Si c’est ça, je comprends qu’ils aient eu honte de montrer un schéma…

1 J'aime

Merci d’avoir pris le temps de me répondre dbrion06. J’ai déjà acheté cette carte avec un Raspberry zero pour la piloter (si je fais une bêtise pendant mes tests, ce n’est pas trop grave).

J’arrive à piloter les relais mais c’est un peu « bricolo ». J’alimente le Raspberry avec le 5v et le GND de la carte. Je branche des pins de contrôle de la carte sur des GPIO du Raspberry. Si le GPIO est IN (entrée numérique) le relai est OFF. Si le GPIO est OUT (sortie numérique), le relai est ON.

Donc en gros je peux contrôler un relai de la façon suivante :

GPIO.setup(7, GPIO.IN) => Relai OFF
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) => Relai ON

Que penses-tu de ce fonctionnement ?

Vous pouvez contrôler une voie sans problème en logique negative, ce qui est le fonctionnement standard de ces cartes à relais (si tant est que cette carte est standard: je maintiens mes feroces reserves au vu del’absence de lien vers un schéma).

Pour ne pas faire courir de risques au GPIO, vous pouvez

a) mettre des resistances de protection (pour une autre carte, il était recommandé 1 K; je pense que 470 Ohm suffisent) entre le GPIO du RPi et un channel; les resistances valent peut être 0.01 euro piéce, et sont souvent vendues par correspondance (seule solution en péride de confinement) par paquets de 10 (il y a un paquet avec 10 resistances de 1K, 10 de 100k…: il faut donc de bons yeux ou un multimètre pour trouver la bonne).

b) Avec les specifications du port du RPi (max 50 MA sur l’ensemble du port, dont 16 mA par broche de port), vous pouvez piloter jusqu’à … 3 canaux (en espèrant qu’aucune des pattes ne mangera plus de 16 mA).

Si ça vous suffit, c’est gagné…

sinon, une resistance de protection de 1K (mise peut être en serie avec une LED a 0.1 E$ pièce, qui vous signale que le relais doit être allumé en logique négative: je ne sais pas si vous avez des LEDs sur votre carte) vous donnera une intensité de court cirucit de 4 Ma (2.5 MA si LED) -> vous pouvez aller jusqu’à 10 canaux (16 avec une LEd en série) sans compromettre la durée de vie sur le long terme de votre RPi (on respecte les spécifications: noter que le RPi peut resister à un dépassement modéré des specifications, mais autant dormir tranquille!
ex: Raspberry pi + relais 5v électrovanne 24v était, entre autres défauts -rattrappables- , un peu en dehors des spécifs; ceci un peu n’était pas gênant, mais peut faire vieillir prématurément )…
Edité : vous auriez interet, si vous avez un multimètre, à regarder l’intensité allant du RPi vers la carte; a priori, votre RPi a une sonde de temperature dans le CPU, près du GPIO: ; si vous pouviez la monitorer https://linuxhint.com/raspberry_pi_temperature_monitor/ (on peut faire deux … ou plus ssh sur le même RPi), ça ne serait pas nuisible…
Si mes yeux d’un autre millénaire ne se sont pas trompés, le regulateur serie de votre carte (12v ->5v) n’a pas de radiateur: il chauffera enormément si, en plus de beaucoup de relais, il alimente votre RPi, se mettant en protection thermique (un coup il sera trop chaud, et ça ne marchera pas; puis ça redemarrera… jusqu’à trop chaud) à certains moments (pas sur de courts essais; peut être l’été suivant; c’est une façon désagréable de tourner en bourrique).

Ok merci beaucoup pour toutes ces explications détaillées.
J’ai bien des indicateurs LED sur ma carte mais je ne sais pas si elles sont au niveau commande des relais ou sortie des relais.
Je peux possiblement dépasser les 3 relais simultanés. Je peux limiter ça de façon logiciel mais je pense quand même mettre des résistances comme vous préconisez.
Merci pour l’astuce de la température CPU, je vais monitorer ça.
Je vais tester l’intensité demandée lors de la commande des relais.
Donc je dois avoir :

  • Moins de 50mA entre le GND du pi et le GND de la carte. (je prends au niveau GND car il y a du courant qui rentre par le GPIO de commande)
  • Moins de 16mA entre le PIN de commande de la carte et le GPIO du Raspberry

Edit :
J’ai 3,6mA sur le GPIO quand il est activé. J’aurai rarement plus de 3 relais activés donc je pense que ça va le faire.
Merci de votre aide.

Là, avec votre schema, vous allez mesurer la somme des courants du GPIO et de la carte RPi . Cette mesure est non seulement biaisée, mais superflue :

normalement, si les dispersions des LEDs (je parie que les LEDs sont situées près du coupleur d’entrée, et non près des relais…) et des LEDs IR des optocoupleurs ne sont pas trop grandes, une mesure sur un canal suffirait (et ensuite, vous multipliez par le nombre de canaux); à titre de précaution, vous pouvez regarder sur plusieurs canaux…
. Normalement, avec une resistance de 1k (j’avais calculé, sur une carte à 8 sorties et munie d’un schema, 470 O), la sensibilité aux dispersions des LEDs est atténuée, voire négligeable…