Alimentez un relais 5 V à partir de broches GPIO

22

J'ai une banque de relais (5) que je cherche à exécuter depuis mon Pi. J'utilise des relais 5V TE Connectivity, alimentés par les kits de relais haute puissance de Sparkfun, qui utilisent un transistor NPN pour déclencher le relais.

Jusqu'à présent, le problème que j'ai est que je ne peux pas faire basculer le relais. Les broches de sortie GPIO ne fournissent-elles pas 5 V? Je pensais que le Pi l'avait fait sur le GPIO.

hightekjonathan
la source
4
Non, les broches Gpio sont de 3,3 volts.
Steve Robillard
Connaissez-vous un moyen de modifier mon circuit?
hightekjonathan
1
Il faudra une alimentation de 5 volts et un rappel pour connecter tous les motifs ensemble - je fais cela pour allumer un signal de tour comme celui-ci ebay.com/itm/…
Steve Robillard
2
Je suggérerais de le faire fonctionner avec une alimentation séparée, puis d'aborder la complexité des besoins en énergie du Pi et la portabilité. Comme on dit, la meilleure façon de manger un éléphant est une bouchée à la fois.
Steve Robillard
1
Tous les motifs sont liés. Et le 5v positif est connecté au commun sur le Darlington. J'ai suivi le schéma.
hightekjonathan

Réponses:

36

Pourquoi pas simplement comme ça?

Le Raspberry Pi bascule entre 0 et 3V3, plus que suffisant pour saturer Q1, ce qui prend le relais du travail "lourd": allumer / éteindre le relais + 5V. Selon les relais que vous utilisez, de petites modifications pour D1 et Q1 peuvent s'appliquer.

Raspberry Pi contrôlant un relais

GeertVc
la source
Excellente réponse! Et un moyen très sûr de le faire.
Piotr Kula
3
Belle réponse, cela devrait résoudre une fois pour toutes les "questions-relais". Il serait peut-être bon d'ajouter que le fait que les tensions d'alimentation du Pi et du relais doivent être identiques ou au moins partager un GND commun. Bien que cela puisse sembler évident pour l'ingénieur électricien, cela pourrait être un piège pour les débutants.
Ghanima
@Ghanima: Oui, vous avez certainement raison. Mais comme vous l'avez mentionné, pour moi, c'est "évident" si je vois un symbole au sol, c'est pour les deux côtés (ici: framboise et relais). Et j'ai délibérément alimenté le relais avec + 5V (peut même être + 24V ou n'importe quelle basse tension continue sûre) pour montrer explicitement au public que le but du circuit ci-dessus est d'avoir des tensions différentes sur les deux sites. C'est le but du circuit.
GeertVc
1
Quel est le but de R2?
erikH
2
@erikH: cette résistance s'assurera que la base de Q1 a un niveau fixe (dans ce cas, connecté à la masse) au cas où l'entrée à R1 flotterait. Si vous êtes sûr que l'entrée ne flottera jamais, alors R2 n'est pas nécessaire, mais c'est une sorte de "sauvegarde". Si l'entrée peut flotter et que vous n'avez pas de R2 connecté, alors le transistor peut commencer à commuter de manière incontrôlée.
GeertVc
7

# Introduction #

L'OP souhaite utiliser Rpi pour contrôler en toute sécurité une banque de 5 modules relais Beefcake de Sparkfun . Il a eu un problème car le niveau logique Rpi GPIO est de 3,3V, mais son relais utilise un contrôle logique 5V. Il veut savoir comment modifier Rpi pour contourner le problème de disparité de niveau logique. Ses choix sont les suivants: utiliser le transistor BC5468 pour piloter la bobine de relais; obtenir un relais d'isolement optique et le piloter en utilisant ULN2803; en utilisant un pilote source tel que UDN2981, ...

Après enquête, je suggère maintenant quelques solutions, avec leurs avantages et inconvénients respectifs. Le PO peut choisir une solution après avoir compromis le risque, la fiabilité, le coût, etc.

# Contenu #

Solution 1 - Modification de la résistance de polarisation du transistor NPN

Solution 2 - Utilisation de UDN2981 pour augmenter le signal GPIO 3,3 V de Rpi à 5 V

Solution 3 - Utilisation de 74HC03 et 74HC04 pour augmenter le signal GPIO 3,3 V de Rpi à 5 V

Solution 4 - Utilisation de 74HCT125 pour effectuer une convergence de niveau logique

Solution 5 - Utilisation de TXS0102 pour effectuer une conversion de niveau logique

Soution 6 - Utilisation de 2N2222 pour effectuer une conversion de niveau logique

Solution 7 - Utilisation de 2N7000 pour effectuer une conversion de niveau logique

FAQ1 - Comment alimenter le module Rpi et le module relais et lier les masses ensemble

FAQ2 - Comment éviter les problèmes de saisie flottante

FAQ3 - Mon relais est toujours activé, que ce soit une entrée High ou Low, est-ce parce que le signal Rpi Low n'est pas assez bas?

FAQ3 - Mon signal Rpi GPIO Low ne peut pas désactiver le relais, mais définir GPIO comme entrée le ferait. Vais-je blesser mon Rpi si je le fais?

Suggestion de dépannage matériel

Suggestion de dépannage logiciel

Les références

# Solution 1. Modification de la polarisation du transistor NPN pour le rendre compatible 3.3V #

Il existe deux types généraux de solutions:

(1) modifier le circuit d'entrée du niveau logique 5V du module pour s'adapter aux signaux 3,3V,

(2) utilisez un convertisseur de niveau logique de 3,3 V à 5 V pour augmenter les signaux 3,3 V de Rpi à 5 V.

Je commence maintenant par (1).

Enquête

Le module de relais Beefcake du Sparkfun possède un transistor NPN 2N3904 (Q2) entraînant la bobine (U1). Il est conçu pour les signaux logiques 5V d'Arduino.

Schéma du kit de contrôle de relais SparkFun

J'ai un module de transistor NPN similaire KY019 qui peut être piloté par les signaux 3,3 V de Rpi. J'ai donc vérifié ses exigences en matière de signal d'entrée pour savoir pourquoi le KY019 peut recevoir des signaux 3,3 V, mais pas Beecake.

Spécifications KY019

J'ai trouvé que KY-019 a un niveau de déclenchement de 2,5 V et 0,1 mA . Ce signal est amplifié par le transistor NPN à 50mA, suffisamment haut pour dynamiser la bobine pour activer le relais.

Spécifications de bobine Tongling

Rpi GPIO (avec un niveau élevé supérieur à 2,8 V et une limite de courant maximale de 16 mA ), peut facilement alimenter 4 mA, il ne devrait y avoir aucun problème à piloter directement le module.

La bobine a un temps de réponse de 10 ms. J'ai programmé la broche 17 de Rpi GPIO pour basculer le module de relais à une période de 40 ms (25 cps) et j'ai trouvé le relais cliquetant comme prévu. (J'utilisais des fils de connexion de 2 mètres de long pour les signaux GPIO, donc le signal à l'extrémité d'entrée du relais est un peu bruyant.)

Test de bascule KY019

Comment modifier le module Beefcake pour le rendre compatible avec la logique 3.3V

Le transistor NPF Beefcake possède une résistance de limitation de courant R2 de valeur 1K. Cette résistance limite le courant de base au niveau élevé logique Arduino 5V. Le courant de base dans la limite, après amplification (généralement hFE> 100), est suffisamment grand pour activer la bobine.

Calcul du courant Arduino 5V GPIO dans le module relais Beefcake:

Courant Arduino i ~ (4V [Arduino High] - 1V [Vce (sat)]) / 1K [R]) = 3V / 1K = 3mA

Cependant, le signal élevé logique du Rpi est inférieur à Arduino, donc le courant limité correspondant est plus petit et après amplification n'est pas assez grand pour entraîner la bobine.

Courant Rpi i ~ ((3V [Rpi High] - 1V) / 1K = 2mA

La modification est simple - remplacez simplement 1K R2 par une résistance plus petite, par exemple 510R.

Courant Rpi i (après modification) = (3V - 1V) / 501R = 4mA

Je fais l'hypothèse de l'éducation basée sur l'analyse et l'expérimentation des circuits. Je pense que ma supposition est correcte à 90%.

Analyse de risque

Bien que le transistor NPN à petit signal 2N3094 puisse être utilisé pour la commutation de petites charges, il n'est pas si fiable. Pour la commutation de relais, il est plus sûr d'utiliser des transistors de puissance tels que SS8050, UDN2981, spécialement conçus pour les charges inductives.

L'OP veut une méthode sûre qui ne ferait pas frire son Pi, donc pour la fiabilité, un pilote source tel que UDN2981 est le chemin à parcourir.

/ ...

# Solution 2 - Utilisation de l'UDN2981 pour piloter le module relais Beefcake #

Les commentaires soulignent que le module de relais Sparkfun Beefcake de l'OP est un déclencheur de haut niveau, par conséquent le pilote d'évier couramment utilisé ULN2803 ne peut pas être utilisé. Un pilote similaire à ULN2803, mais l'approvisionnement actuel, plutôt que le naufrage actuel, doit être utilisé à la place

Je pense que l'UDN2981 est un pilote approprié pour le module de relais de l'OP.

J'ai vérifié avec succès que UDN2981 conduisait un module de relais de tirage de haut niveau similaire au Beefcak et ULN2803 un module de déclenchement bas. Voici un résumé.

UDN2981 contrôlant les modules de relais de type d'entrée à transistor NPN à déclenchement élevé

J'ai d'abord testé manuellement UDN2981, sans me connecter à Rpi, pour faire clignoter 4 LED, pour m'assurer que le circuit fonctionne bien.

uln2803 udn2981 photo

J'ai ensuite installé 4 modules de relais de type d'entrée à transistor NPN (KY019), et connecté les 4 entrées de module de relais à 4 sorties de canal UDN2981.

KY019 x 4

J'ai ensuite connecté 4 broches GPIO Rpi 3,3 V directement aux 4 entrées de canal UDN2981. J'ai utilisé la fonction python suivante pour basculer 4 modules de relais à 25 cps.

fonction python pour basculer 4 relais

Le résultat était bon. Les 4 modules de relais cliquent et les LED clignotent à 25 cps comme prévu. Les signaux de sortie Rpi GPIO sont restés proches de 3,3 V et les signaux de sortie UDN autour de 4,0 V, ce qui implique qu'aucune entrée n'a été surchargée.

Basculer la forme d'onde du module

UDN2981 contrôlant les modules de relais à déclenchement élevé et opto-isolés

L'OP a également envisagé d'utiliser des modules de relais opto-isolés car ils sont plus sûrs. J'ai utilisé avec succès le même UDN2981 pour contrôler 4 déclencheurs de haut niveau, modules de relais opto-isolés (MK055).

Modules relais MK055

En fait, UDN2981 peut être utilisé pour contrôler tout type de modules de déclenchement haut, quel que soit le type de transistor NPN ou opto-isolé.

Cependant, pour les modules à déclenchement bas, qu'ils soient à transistor PNP ou opto-isolés, le pilote de source UDN2981 ne fonctionne pas, ULN2803 ou un autre pilote de récepteur doit être utilisé.

ULN2803 contrôlant l'entrée du transistor PNP à déclenchement bas ou les modules de relais opto-isolés

J'ai vérifié avec succès que le pilote d'évier ULN2083 peut contrôler 4 modules de relais opto-isolés à déclenchement bas. J'ai d'abord testé manuellement 4 LED clignotantes, puis j'ai utilisé la même fonction python ci-dessus pour tester les 4 modules. Les résultats ont également été bons.

Module relais MK101

Discussion

Avantages et inconvénients des ULN2803 et UDN2981

Avantages

  1. ULN2803 et UDN2981 peuvent être directement pilotés par un signal logique TTL ou CMOS avec des tensions d'alimentation de 3,3 V ou 5 V.

  2. Leurs sorties nominales de 500 mA avec diodes à pince conviennent pour commuter des relais et des moteurs pas à pas.

Les inconvénients

  1. ULN2803 et en particulier UDN2981 ne sont pas si communs.

  2. Ils ont 8 canaux et ont donc une taille de boîtier DIP 18 broches plus grande. Pour moins de canaux, les 74HC03 / 04 ou 74HCT125 plus courants avec boîtier DIP à 14 broches sont plus courants et plus faciles à manipuler.

# Solution 3 - Utilisation des 74HC03 et 74HC04 pour augmenter le signal GPIO 3,3 V du RPi #

L'utilisation de l'UDN2981 pour piloter un module relais est un gros problème, car ils sont conçus avec des diodes de retour intégrées pour alimenter directement le relais.

L'UDN2981 n'est pas courant et n'est pas destiné aux débutants. Pour les débutants, les CI de porte logique très courants et bon marché, les portes NAND quadruple 74HC03 et les onduleurs hexagonaux HC04 peuvent faire le même travail que l'UDN2981, en augmentant les signaux logiques de 3,3 V.

J'ai vérifié avec succès que HC03 et HC04 ont déplacé la logique 3,3 V à 5 V et je l'ai trouvée fonctionnant à la fois pour l'entrée de transistor et les modules de déclenchement de haut niveau opto-isolés.

schéma du convertisseur hc03 04

hc03 hc04 ky019 mk047

hc03 hc04 ky019 ky047

# Les références #

R1. Comment fonctionne un relais électrique? - TechyDIY

R2. Circuit de commutation de relais - Tutoriels électroniques

R3. Guide de raccordement du contrôle du relais Beefcake - SparkFun

R4. Tampons numériques et tampons à trois états - Tutoriels électroniques

R5. Résistances de rappel - Tutoriels électroniques

R6. Tutoriel sur les niveaux logiques - SparkFun

Arduino Voh 4.2V, Vol 0.9V

R7. Spécifications de tension et de courant des broches GPIO Rpi

Rpi Voh 2.4V, Vol 0.7V

R8. Transistor bipolaire - Tutoriels électroniques

================

# A.3 Convertisseur de niveau logique utilisant HCT125 #

J'ai donc testé un autre convertisseur élévateur, HCT125. J'étais heureux de constater que cela fonctionne bien. Le signal HCT125 converti 5V0 n'a pas chuté lorsqu'il était connecté au module de relais piloté par transistor NPN.

Convertisseur de niveau HCT125

/ ...

Fin des annexes

** * Réponse longue à supprimer * **

Cette longue réponse est trop longue et désordonnée. J'essaie maintenant de supprimer les paragraphes non pertinents et peut-être de les remplacer en posant des questions pertinentes et en répondant moi-même.


Comment vérifier le coupleur photo / module relais opto-isolé

  1. Obtenez un cavalier.
  2. Connectez une extrémité à la broche signal / entrée du module relais.
  3. Tenez l'autre extrémité et touchez les broches Vcc (+) et Gnd (-) et vérifiez les résultats ci-dessous.

Tableau des résultats des tests du module relais

2.1 Type d'entrée transistor

Pour le type d'entrée de transistor NPN bipolaire populaire, le signal de pilote de source (signal Rpi GPIO ou RPi GPIO après conversion de niveau logique de 3,3 V à 5 V) va à la base du transistor via une LED série et une résistance de polarisation.

Exemple de module de relais à transistor (BJT NPN)

Il existe d'autres circuits de commutation de relais moins populaires comme décrit dans ce tutoriel de commutation de relais

2.2 Type d'entrée du photocoupleur

Le relais de type entrée photocoupleur a un phtocoupleur comme entrée. Le photocoupleur commande un autre transistor qui à son tour entraîne la bobine de relais.


Annexe C - Convertisseur de niveau logique utilisant TXS0102

Maintenant, je sais que Rpi GPIO peut piloter directement le module relais, mais il y a deux problèmes. Tout d'abord, le signal GPIO avec un long fil de connexion est bruyant, donc pas si fiable. Deuxièmement, la diode du volant 1N4148 peut ne pas supprimer complètement l'EMF arrière de la bobine, et si malheureusement le 1N4148 tombe en panne ou n'est pas correctement connecté (mauvais contact, joint de soudure sec, etc.), l'EMF arrière peut endommager le Rpi.

J'ai donc décidé d'utiliser un convertisseur de niveau logique pour augmenter le signal Rpi GPIO de 3V3 à 5V. J'ai d'abord essayé le convertisseur TXS102 et je l'ai trouvé fonctionnant bien. En plus de monter le GPIO siganl, le bruit au niveau élevé est également considérablement réduit.

TXs0102 photo et forme d'onde

Cependant, j'ai trouvé un gros problème lors de l'alimentation du signal GPIO 5 V converti au module relais. Le relais était toujours activé et désactivé comme auparavant, avec le signal 3V3, mais quand j'ai utilisé la lunette pour vérifier la forme d'onde, j'ai trouvé très surprenant que le signal 5V a diminué de moitié, à 2,2V .

Je soupçonnais que la raison était que le TXS0102 pouvait bien mieux absorber le courant que l'approvisionnement en courant du module relais. Pour vérifier ma supposition, j'ai envoyé le signal 5V à un autre module de relais, un type de photocoupleur déroulant, modèle MK01.

Cette fois, j'ai trouvé que le signal 5V n'a pas chuté de façon notable.

J'ai donc rapidement conclu que le module de relais de type transistor NPN est un mauvais choix. Je cesserais de tester ce type de relais à partir de maintenant et passerais au type de relais à photocoupleur.

J'ai également testé un autre module pilote de photocoupleur MK101. Ce module dispose d'un cavalier pour sélectionner un déclencheur supérieur ou un déclencheur bas. J'ai trouvé que pour le déclenchement bas, le niveau de signal 5V converti du TSX0102 n'est pas affecté. Mais lorsque le déclenchement bas est sélectionné, le niveau du signal 5V converti est tombé à environ 2,5V, bien que le relais fonctionne toujours.

txs0102 test modules de déclenchement haut-bas


Annexe E - Convertisseur de niveau logique utilisant HC04

HCT125 n'est pas si commun. J'ai donc essayé un autre circuit de convertisseur, en utilisant la porte NAND à drain ouvert quadruple HC03 et l'onduleur hexagonal HC04. Lorsque j'ai testé la sortie HC04, je l'ai trouvée très bruyante. J'ai deviné qu'une des raisons était que j'utilisais des alimentations dirrerent, une pour rpi, une autre pour le convertisseur. Même j'ai connecté les points de masse des alimentations électriques pour faire un point commun, le bruit n'a pas disparu. J'ai ensuite utilisé une alimentation pour rpi et convertisseur, et le bruit a disparu.

Sortie convertisseur bruyante

entrez la description de l'image ici

J'ai essayé le signal de sortie HC04 pour le module de relais en mode de déclenchement bas (qui nécessite un courant de descente, mais pas en mode de déclenchement élevé (qui nécessite un courant de source). Je vais donc ajouter la porte hexadécimale HC04 NON qui peut fournir du courant à le module relais.

Annexe F - Problème d'entrée flottante du convertisseur de niveau HC04

La dernière fois que j'ai essayé le convertisseur de niveau basé sur HC03, sur un module de relais à photocoupleur, j'ai constaté que si je laissais l'entrée flottante, le module captait le bruit et le relais s'allumait et s'éteignait follement. Je pensais que la fréquence était peut-être de 1 kHz. Je ne savais pas si c'était une sorte d'oscillation de rétroaction positive. Mais quand j'ai utilisé la lunette pour vérifier, j'ai trouvé étonnamment que c'était 50Hz! Je suppose que c'est une sorte de résonance. Mais je ne sais pas quelle est la différence entre la résonance et l'oscillation. Peut-être que je devrais encore lunettes. Quoi qu'il en soit, je pense que je dois ajouter une résistance pull up / down quelque part.

Problème d'entrée flottante du convertisseur de niveau HC04


Ci-dessous pour être raccourci ou supprimé

# Annexes #

# A1. Carte et schéma du module relais opto-isolé / coupleur photo #

Le module de relais opto-isolé a un photocoupleur qui est un IC à 4 broches. L'image ci-dessous montre un photoCoupler PC1 (avec ses 4 broches étiquetées 1, 2, 3, 4 en vert) et un transistor Q1. Les CI ne sont pas toujours marqués. Dans cette image, PC1 est EL354 et Q1 8050.

Module de relais du type d'entrée du photocoupleur photo

Schéma du module de relais d'entrée du photocoupleur

Liens de diagramme

 35 : https://i.stack.imgur.com/cWkRi.jpg

tlfong01
la source
1
tlfong01: "Le signal GPIO 3V3 de Rpi peut donc directement piloter le relais." : Vous ne devriez pas dire que parce que la lecture de cette ligne peut donner l'impression aux personnes non techniques de connecter directement une broche GPIO du RPi à la bobine d'un relais. Avec des conséquences dévastatrices ... Il y a une raison pour l'ajout du 2N3904 ... Vous devriez dire "Donc le signal GPIO 3V3 de RPi peut directement piloter le module relais " à la place ...
GeertVc
Merci d'avoir signalé mon erreur imprudente de ne pas avoir pensé aux personnes non techniques. Et quand j'ai fait la correction, j'ai trouvé que j'avais fait une autre erreur en insérant deux images identiques du KY019. En fait, le premier devrait être le schéma du module SparkFun.
tlfong01
Pas de problème, nous sommes là pour nous entraider ... :-)
GeertVc
La raison pour laquelle il existe une différence en utilisant un GPIO directement par rapport à un GPIO avec un levier de vitesses est que le levier de vitesses est destiné à fournir une tension spécifique (5 V). En revanche, une broche logique 3,3 V est spécifiée avec des seuils indiquant la différence entre le bas et le haut. Pour le pi, cela signifie que tout ce qui dépasse 1,3 V est élevé . Si vous vous enfoncez dans la résistance à la terre (c.-à-d. En tirant du courant), vous devriez obtenir 3,3 V, mais ce n'est probablement pas ce que fait l'entrée du relais - elle flotte.
goldilocks
@goldilocks: Oui, c'est déroutant. OA dit que son kit de relais utilise un transistor NPN pour déclencher le relais [bobine]. Une réponse semble suggérer de modifier le transistor [en BC5468]. Une autre suggestion est d'utiliser darlington ULN2803, .. J'ai besoin de lire les commentaires une fois de plus pour me vider l'esprit.
tlfong01