# 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.
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.
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.
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.)
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.
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.
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.
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.
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).
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.
Discussion
Avantages et inconvénients des ULN2803 et UDN2981
Avantages
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.
Leurs sorties nominales de 500 mA avec diodes à pince conviennent pour commuter des relais et des moteurs pas à pas.
Les inconvénients
ULN2803 et en particulier UDN2981 ne sont pas si communs.
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.
# 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.
/ ...
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é
- Obtenez un cavalier.
- Connectez une extrémité à la broche signal / entrée du module relais.
- Tenez l'autre extrémité et touchez les broches Vcc (+) et Gnd (-) et vérifiez les résultats ci-dessous.
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.
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.
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.
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.
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.
Liens de diagramme
35 : https://i.stack.imgur.com/cWkRi.jpg