Alimente um relé de 5V a partir dos pinos GPIO

22

Eu tenho um banco de relés (5) que pretendo executar no meu Pi. Estou usando relés de 5V TE Connectivity, alimentados pelos kits de relés de alta potência da Sparkfun, que usam um transistor NPN para acionar o relé.

Até agora, o problema que estou tendo é que não consigo ligar o relé. Os pinos de saída GPIO não fornecem 5V? Eu pensei que o Pi fez no GPIO.

hightekjonathan
fonte
4
Não, os pinos Gpio são de 3,3 volts.
Steve Robillard
Então você sabe como eu poderia modificar meu circuito?
hightekjonathan
1
Será necessário um fornecimento de 5 volts e lembre-se de ligar todos os motivos juntos - eu estou fazendo isso para mudar a luz do sinal da torre como este ebay.com/itm/...
Steve Robillard
2
Eu sugeriria que ele funcionasse com uma fonte de alimentação separada primeiro e depois resolvesse a complexidade das necessidades de energia do Pi e a portabilidade. Como se costuma dizer, a melhor maneira de comer um elefante é uma mordida de cada vez.
21315 Steve Steve Robillard
1
Todos os motivos estão ligados. E o positivo de 5v está conectado ao comum no darlington. Eu segui o diagrama.
hightekjonathan 27/02

Respostas:

36

Por que não simplesmente assim?

O Raspberry Pi alterna entre 0 e 3V3, mais do que suficiente para saturar o Q1, que assume o trabalho "pesado": ligar / desligar o relé + 5V. Dependendo dos relés que você estiver usando, pequenas modificações para D1 e Q1 podem ser aplicadas.

Raspberry Pi controlando um relé

GeertVc
fonte
Excelente resposta! E uma maneira muito segura de fazer isso.
Piotr Kula
3
Ótima resposta, que deve resolver "perguntas de revezamento" de uma vez por todas. Talvez seja bom acrescentar que o fato de que as tensões de alimentação do Pi e do relé sejam iguais ou ao menos compartilhem um GND comum. Embora isso possa parecer óbvio para o engenheiro elétrico, pode ser uma armadilha para iniciantes.
Ghanima
@ Ghanima: Sim, você tem razão, com certeza. Mas, como você mencionou, para mim é "óbvio" se eu vir um símbolo de chão, que isso é para os dois lados (aqui: framboesa e revezamento). E eu deliberadamente liguei o relé com + 5V (pode até ser + 24V ou qualquer voltagem CC baixa segura) para mostrar explicitamente ao público que é o objetivo do circuito acima ter voltagens diferentes nos dois locais. Esse é o objetivo do circuito.
GeertVc
1
Qual é o objetivo do R2?
ErikH 5/11
2
@erikH: esse resistor garantirá que a base de Q1 tenha um nível fixo (neste caso, conectado ao terra) caso a entrada em R1 flutue. Se você tem certeza de que a entrada nunca flutua, o R2 não é necessário, mas é uma espécie de "salvaguarda". Se a entrada puder flutuar e você não tiver o R2 conectado, o transistor poderá começar a alternar de maneira descontrolada.
GeertVc
7

# Introdução #

O OP gostaria de usar o Rpi para controlar com segurança um banco de 5 módulos de relé Beefcake da Sparkfun . Ele teve um problema porque o nível lógico Rpi GPIO é de 3,3V, mas seu relé usa controle lógico de 5V. Ele quer saber como modificar o Rpi para contornar o problema de disparidade do nível lógico. Suas escolhas incluem o seguinte: usar o transistor BC5468 para acionar a bobina do relé; obter um relé de isolamento óptico e acioná-lo usando ULN2803; usando um driver de origem como UDN2981, ...

Após a investigação, sugiro agora algumas soluções, com seus respectivos prós e contras. O OP pode escolher uma solução após negociar risco, confiabilidade, custo etc.

# Conteúdo #

Solução 1 - Modificando o resistor de polarização do transistor NPN

Solução 2 - Usando UDN2981 para mudar o sinal GPIO de 3,3V do Rpi para 5V

Solução 3 - Usando 74HC03 e 74HC04 para mudar o sinal GPIO de 3,3V do Rpi para 5V

Solução 4 - Usando 74HCT125 para fazer a conversão de nível lógico

Solução 5 - Usando TXS0102 para fazer a conversão de nível lógico

Soution 6 - Usando 2N2222 para converter nível lógico

Solução 7 - Usando 2N7000 para fazer a conversão de nível lógico

FAQ1 - Como alimentar o Rpi e o módulo de relé e amarrar o aterramento

FAQ2 - Como evitar problemas de entrada flutuante

FAQ3 - Meu relé está sempre ativado, seja alta ou baixa, é porque o sinal Rpi Low não é baixo o suficiente?

FAQ3 - Meu sinal RPI GPIO Low não pode desligar o relé, mas definir o GPIO como a entrada faria. Vou machucar meu Rpi se fizer isso?

Sugestão para solução de problemas de hardware

Sugestão para solução de problemas de software

Referências

Solução 1. Modificando a polarização do transistor NPN para torná-lo compatível com 3.3V

Existem dois tipos gerais de soluções:

(1) modifique o circuito de entrada do nível lógico de 5V do módulo para se adaptar aos sinais de 3,3V,

(2) use um conversor de nível lógico de 3,3V a 5V para mudar os sinais de 3,3V do Rpi para 5V.

Agora começo com (1).

Investigação

O módulo de relé Beefcake da Sparkfun possui um transistor NPN 2N3904 (Q2) acionando a bobina (U1). Ele foi projetado para os sinais lógicos de 5V do Arduino.

Diagrama esquemático do kit de controle de relés SparkFun

Eu tenho um módulo de transistor NPN KY019 semelhante que pode ser acionado pelos sinais de 3.3V da Rpi. Então, verifiquei seus requisitos de sinal de entrada para descobrir por que o KY019 pode receber sinais de 3,3V, mas o Beecake não.

KY019 spec

Eu descobri que o KY-019 tem um nível de trigger de 2.5V e 0.1mA . Esse sinal é amplificado pelo transistor NPN para 50mA, alto o suficiente para gerar a bobina para ativar o relé.

Especificação da bobina Tongling

O GPPI Rpi (com alto nível acima de 2,8V e limite máximo de corrente de 16mA ), pode fornecer confortavelmente 4mA, não deve haver problemas ao dirigir diretamente o módulo.

A bobina tem um tempo de resposta de 10mS. Programei o pino 17 do Rpi GPIO para alternar o módulo do relé no período de 40 ms (25 cps) e encontrei o relé clicando alegremente conforme o esperado. (Eu estava usando fios de conexão de 2 metros para os sinais GPIO, portanto, o sinal na extremidade da entrada do relé é um pouco barulhento.)

Teste de alternância KY019

Como modificar o módulo Beefcake para torná-lo compatível com a lógica 3.3V

O transistor NPN Beefcake possui um resistor limitador de corrente R2 de valor 1K. Esse resistor limita a corrente de base no nível alto da lógica do Arduino 5V. A corrente de base dentro do limite, após amplificação (geralmente hFE> 100), é grande o suficiente para gerar a bobina.

Cálculo da corrente do Arduino 5V GPIO no módulo de relé Beefcake:

Corrente do Arduino i ~ (4V [Arduino Alto] - 1V [Vce (sat)]) / 1K [R]) = 3V / 1K = 3mA

No entanto, o sinal alto da lógica do Rpi é mais baixo que o Arduino, portanto a corrente limitada correspondente é menor e após a amplificação não é grande o suficiente para acionar a bobina.

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

A modificação é simples - basta substituir 1K R2 por um resistor menor, digamos 510R.

Corrente Rpi i (após modificação) = (3V - 1V) / 501R = 4mA

Estou adivinhando a educação com base em análise e experimentação de circuitos. Eu acho que meu palpite é 90% provavelmente correto.

Análise de risco

Embora o pequeno transistor NPN 2N3094 de sinal possa ser usado para comutação de carga pequena, não é tão confiável. Para comutação de relé, é mais seguro usar transistores de potência como SS8050, UDN2981, especialmente projetados para cargas indutivas.

O OP quer um método seguro que não frite seu Pi; portanto, para confiabilidade, um driver de origem como o UDN2981 é o caminho a seguir.

/ ...

# Solução 2 - Usando UDN2981 para acionar o módulo de relé Beefcake #

Os comentários apontam que o módulo de relé Sparkfun Beefcake do OP é acionador de alto nível; portanto, o driver de dissipador comumente usado ULN2803 não pode ser usado. Um driver semelhante ao ULN2803, mas o fornecimento atual, em vez do naufrágio atual, deve ser usado

Eu acho que o UDN2981 é um driver adequado para o módulo de relé do OP.

Eu verifiquei com sucesso o UDN2981 dirigindo um módulo de relé de alto nível semelhante ao Beefcak e o ULN2803 um de baixo gatilho. Abaixo está um resumo.

UDN2981 controlando Módulos de relé do tipo de entrada de transistor NPN de gatilho alto

Testei manualmente o UDN2981, sem conectar ao Rpi, para piscar 4 LEDs, para garantir que o circuito esteja funcionando bem.

uln2803 udn2981 foto

Depois, configurei 4 módulos de relé do tipo de entrada de transistor NPN (KY019) e conectei as 4 entradas do módulo de relé a 4 saídas de canal UDN2981.

KY019 x 4

Então eu conectei 4 pinos RIO 3.3V GPIO diretamente às 4 entradas do canal UDN2981. Usei a seguinte função python para alternar 4 módulos de relé a 25 cps.

função python para alternar 4 relés

O resultado foi bom. Os 4 módulos de relé clicam e os LEDs piscam a 25cps conforme o esperado. Os sinais de saída Rpi GPIO permaneceram perto de 3,3V e os sinais de saída UDN em torno de 4,0V, o que implica que nenhuma entrada foi sobrecarregada.

Alternar forma de onda do módulo

UDN2981 controlando Módulos de relé opto-isolados de alto gatilho

O OP também considerou o uso de módulos de relé opto-isolados porque eles são mais seguros. Utilizei com sucesso o mesmo UDN2981 para controlar 4 módulos de relé opto-isolado de gatilho de alto nível (MK055).

Módulos de relé MK055

Na verdade, o UDN2981 pode ser usado para controlar qualquer tipo de módulo High trigger, independentemente dos tipos de transistor NPN ou opto-isolados.

No entanto, para os módulos Low trigger, seja o transistor PNP ou opto-isolado, o driver de origem UDN2981 não funciona, o ULN2803 ou outro driver de coletor deve ser usado.

ULN2803 que controla a entrada do transistor PNP de baixo gatilho ou módulos de relé opto-isolados

Eu verifiquei com sucesso o driver do coletor ULN2083 pode controlar 4 módulos de relé opto-isolado de baixo gatilho. Testei pela primeira vez piscando manualmente 4 LEDs e depois usei a mesma função python acima para testar os 4 módulos. Os resultados também foram bons.

Módulo de relé MK101

Discussão

Prós e contras de ULN2803 e UDN2981

Prós

  1. O ULN2803 e o UDN2981 podem ser acionados diretamente pelo sinal lógico TTL ou CMOS com tensões de alimentação de 3,3V ou 5V.

  2. Suas saídas nominais de 500mA com diodos de fixação são adequadas para comutação de relés e motores de passo.

Contras

  1. ULN2803 e especialmente UDN2981 não são tão comuns.

  2. Eles têm 8 canais e, portanto, têm um tamanho maior de pacote DIP de 18 pinos. Para menos canais, 74HC03 / 04 ou 74HCT125 mais comum com pacote DIP de 14 pinos são mais comuns e mais fáceis de manusear.

# Solução 3 - Usando 74HC03 e 74HC04 para aumentar o sinal GPIO de 3,3V do RPi #

O uso do UDN2981 para acionar um módulo de relé é muito importante, porque eles são projetados com diodos fly back incorporados para energizar diretamente o relé.

O UDN2981 não é comum e não é para iniciantes experimentar. Para iniciantes, os ICs de portas lógicas muito comuns e baratos, os portões Quad NAND 74HC03 e os inversores hexa HC04 podem fazer o mesmo trabalho que o UDN2981, alterando os sinais lógicos de 3,3V.

Eu verifiquei com êxito o HC03 e o HC04 mudando a lógica de 3,3V para 5V e o encontrei trabalhando tanto para entrada de transistor quanto para módulos de gatilho de alto nível opto-isolados.

hc03 04 esquemático do conversor

hc03 hc04 ky019 mk047

hc03 hc04 ky019 ky047

# Referências #

R1. Como um relé elétrico funciona? - TechyDIY

R2. Relay Switch Circuit - Tutoriais em eletrônica

R3. Beefcake Relay Control - Guia de Conexão - SparkFun

R4. Amortecedores digitais e tri-state - Tutoriais sobre eletrônica

R5. Resistores de pull-up - Tutoriais sobre eletrônica

R6. Tutorial de Níveis de Lógica - SparkFun

Arduino Voh 4.2V, Vol 0.9V

R7. Especificação de tensão e corrente do pino GPPI Rpi

Rpi Voh 2,4V, Vol 0,7V

R8. Transistor bipolar - Tutoriais em eletrônica

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

# A.3 Conversor de nível lógico usando HCT125 #

Então testei outro conversor, o HCT125. Fiquei feliz ao descobrir que funciona bem. O sinal 5V0 convertido do HCT125 não caiu quando conectado ao módulo de relé acionado por transistor NPN.

Conversor de nível HCT125

/ ...

Fim dos apêndices

** * Resposta longa a ser excluída * **

Essa resposta longa é muito longa e confusa. Agora estou tentando remover os parágrafos irrelevantes e talvez substituí-los, fazendo perguntas relevantes e respondendo a mim mesmo.


Como verificar o Photo Coupler / Opto Isolated Relay Module

  1. Pegue um fio de ponte.
  2. Conecte uma extremidade ao pino de sinal / entrada do módulo de relé.
  3. Segure a outra extremidade e toque nos pinos Vcc (+) e Gnd (-) e verifique os resultados abaixo.

Tabela de resultados de teste do módulo de relé

2.1 Tipo de entrada do transistor

Para o popular tipo de entrada de transistor NPN bipolar, o sinal do driver de origem (sinal Rpi GPIO ou sinal RPi GPIO após conversão de nível lógico de 3,3V a 5V) vai para a base do transistor através de um LED de série e resistor de polarização.

Exemplo de módulo de relé de entrada de transistor (BJT NPN)

Existem outros circuitos de comutação de relés não tão populares como descritos neste tutorial de comutação de relés

2.2 Tipo de entrada do fotoacoplador

O relé do tipo de entrada do fotoacoplador possui um phtocoupler como entrada. O fotoacoplador aciona outro transistor que, por sua vez, aciona a bobina do relé.


Apêndice C - Conversor de nível lógico usando TXS0102

Agora eu sei que o Rpi GPIO pode dirigir diretamente o módulo de relé, mas há dois problemas. Primeiro, o sinal GPIO com um longo fio de conexão é barulhento e, portanto, não é confiável. Segundo, o diodo do volante do motor 1N4148 pode não suprimir completamente a EMF da bobina, e se, infelizmente, o 1N4148 quebrar ou não estiver conectado corretamente (mau contato, junta de solda seca etc.), o EMF traseiro poderá danificar o Rpi.

Então, decidi usar um conversor de nível lógico para mudar o sinal Rpi GPIO de 3V3 para 5V. Eu tentei o conversor TXS102 pela primeira vez e achei que estava funcionando bem. Além de mudar o sino do GPIO, o ruído no nível alto também é bastante reduzido.

Foto e forma de onda TXs0102

No entanto, encontrei um grande problema ao alimentar o singelo GPIO de 5V convertido no módulo de relé. O relé ainda estava ligado e desligado como antes, com o sinal 3V3, mas quando usei o osciloscópio para verificar a forma de onda, descobri surpreendentemente que o sinal de 5V caiu pela metade, para 2,2V .

Suspeitei que o motivo era que o TXS0102 pode reduzir a corrente muito melhor do que fornecer corrente para o módulo de relé. Para verificar meu palpite, alimentei o sinal de 5V em outro módulo de relé, um tipo de fotoacoplador, modelo MK01.

Desta vez, descobri que o sinal de 5V não caiu nenhuma quantidade perceptível.

Concluí rapidamente que o módulo de relé do tipo transistor NPN é uma má escolha. Pararia de testar esse tipo de relés a partir de agora e passaria para o tipo de fotoacoplador.

Também testei outro módulo driver de fotoacoplador MK101. Este módulo possui um jumper para selecionar gatilho mais alto ou baixo. Descobri que, para disparo baixo, o nível de sinal 5V convertido do TSX0102 não é afetado. Mas quando o disparo baixo é selecionado, o nível de sinal convertido de 5V caiu para cerca de 2,5V, embora o relé ainda esteja funcionando.

txs0102 testar módulos de gatilho alto baixo


Apêndice E - Conversor de nível lógico usando HC04

HCT125 não é tão comum. Então, tentei mais um circuito conversor, usando o portão NAND de dreno aberto quad HC03 e o inversor hexadecimal HC04. Quando testei a saída HC04, achei muito barulhenta. Imaginei que um dos motivos era estar usando fontes de alimentação diretas, uma para rpi e outra para o conversor. Até eu conectei os pontos de aterramento das fontes de alimentação para fazer um ponto comum, o ruído não desapareceu. Eu então usei uma fonte de alimentação para rpi e conversor, e o ruído desapareceu.

Saída ruidosa do conversor

insira a descrição da imagem aqui

Eu tentei o sinal de saída HC04 para o módulo de relé no modo Low trigger (que requer corrente de afundamento, mas não no modo High trigger (que requer corrente de fornecimento). o módulo de relé.

Apêndice F - Problema de entrada flutuante do conversor de nível HC04

A última vez que experimentei o conversor de nível baseado no HC03, em um módulo de relé do fotoacoplador, descobri que, se eu deixasse a entrada flutuante, o módulo captava o ruído e o relé era ligado e desligado loucamente. Eu pensei que a frequência fosse talvez 1kHz. Eu não tinha certeza se era algum tipo de oscilação de feedback positivo. Mas quando usei o escopo para verificar, surpreendentemente descobri que era 50Hz! Eu acho que é algum tipo de ressonância. Mas não sei qual é a diferença entre ressonância e oscilação. Talvez eu devesse olhar de novo. Enfim, acho que preciso adicionar um resistor pull up / down em algum lugar.

Problema de entrada flutuante do conversor de nível HC04


Abaixo para ser encurtado ou excluído

# Apêndices #

# A1. Placa do módulo de relé do acoplador óptico / foto acoplador e esquema esquemático #

O módulo de relé isolado opto possui um acoplador de foto com IC de 4 pinos. A imagem abaixo mostra um photoCoupler PC1 (com seus 4 pinos marcados 1, 2, 3, 4 em verde) e um transistor Q1. Os ICs nem sempre são marcados. Nesta imagem, PC1 é EL354 e Q1 8050.

Foto do módulo de relé do tipo de entrada do fotoacoplador

Esquema do módulo de relé de entrada do fotoacoplador

Links do diagrama

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

tlfong01
fonte
1
tlfong01: "Portanto, o sinal GPIO 3V3 da Rpi pode acionar diretamente o relé." : Você não deve dizer que, ao ler esta linha, pode dar a impressão a pessoas não técnicas de conectar diretamente um pino GPIO do RPi à bobina de um relé. Com devastadoras conseqüências ... Há uma razão para a adição do 2N3904 ... Você deveria dizer "sinal 3V3 GPIO do Então RPI pode acionar diretamente o relé módulo " em vez ...
GeertVc
Obrigado por apontar o meu erro descuidado de não pensar nas pessoas não técnicas. E quando fiz a correção, descobri que cometi outro erro ao inserir duas fotos idênticas da KY019. Na verdade, o primeiro deve ser o esquema do módulo SparkFun.
tlfong01
Não tem problema, estamos aqui para ajudar uns aos outros ... :-)
GeertVc
O motivo pelo qual existe uma discrepância usando um GPIO diretamente versus um GPIO com um shifter é que o shifter se destina a fornecer uma tensão específica (5V). Um pino lógico de 3,3V, por outro lado, é especificado com limites indicando a diferença entre baixo e alto. Para o pi, isso significa que qualquer coisa acima de 1,3V é alta . Se você está afundando através da resistência ao terra (ou seja, puxando a corrente), deve obter 3,3V, mas provavelmente não é isso que a entrada do relé faz - ela flutua.
goldilocks
@ goldilocks: Sim, é confuso. OA diz que seu kit de relé usa um transistor NPN para acionar o relé [bobina]. Uma resposta parece sugerir a modificação do transistor [para BC5468]. Outra sugestão é usar o darlington ULN2803, .. Preciso ler os comentários mais uma vez para clarear minha mente.
Tlfong01 13/05/19