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.
Respostas:
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.
fonte
# 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.
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.
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é.
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.)
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.
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.
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.
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.
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).
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.
Discussão
Prós e contras de ULN2803 e UDN2981
Prós
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.
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
ULN2803 e especialmente UDN2981 não são tão comuns.
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.
# 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.
/ ...
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
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.
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.
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.
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.
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.
Links do diagrama
35 : https://i.stack.imgur.com/cWkRi.jpg
fonte