IC que puxaria a saída para o chão, talvez NÃO o portão?


8

Eu tenho uma placa com quatro relés. Possui pinos Vcc, Gnd e In1-In4 padrão. Eu quero controlá-lo com o Arduino ou, no meu caso, um ESP32. No entanto, notei que, quando o pino de saída do meu controlador é puxado ALTO, nada acontece quando ele é puxado BAIXO, o relé será ativado.

Esse é um problema quando a placa é redefinida, pois todos os interruptores do relé serão ativados até e isso não é o que eu quero. Depois de algumas escavações, fiz o seguinte:

Inversor simples

Isso funciona como desejado, sempre há 5V no relé e o relé é desativado o tempo todo. Quando eu emitir um sinal para a base do Q1, ele puxará a saída para o chão e o relé será ativado.

No momento, tenho quatro desses relés e em breve terei mais. Então, eu gostaria de resolver isso com um IC. Em particular, eu estava olhando para o IC7404, que é um monte de portas NÃO, no entanto, não tenho certeza se isso resolverá o meu problema.

Então, existe um IC que puxe a saída para o chão quando o sinal estiver presente na entrada? O 7404 funcionará e não estou vendo nada? :)

Edit: Este é o módulo de relé que estou usando . Não consegui encontrar nenhuma ficha útil sobre ele.


1
Bem-vindo ao EE.SE. Vou seguir em frente e colocar um +1 em seu esquema. Provavelmente é solucionável com um inversor, mas para responder que precisamos de você, conhece seus requisitos de potência de saída. Você sabe quanta carga você tem?
winny

1
Você pode querer adicionar um diodo polarizado reverso da saída para 5 V se estiver operando um relé. O diodo flyback do Google ou o diodo de roda livre fornecerão mais informações
Colin

1
Forneça um link para a folha de dados dos relés. Precisamos saber quanta corrente eles exigem. Um 7404 provavelmente não será capaz de afundar corrente suficiente.
Elliot Alderson

Como assim, o sinal está presente? É uma alta tensão + 5V no nó "entrada" e o que é "sinal não presente", 0V ou desconhecido / desconectado?
R.Joshi

Não está claro por que os relés estariam ativos na redefinição, pois normalmente os pinos estão em um estado de alta impedância, a menos que você escolha imprudentemente os pinos de fita de modo ou aqueles envolvidos em um carregador de inicialização.
Chris Stratton

Respostas:


2

O fato de os relés estarem atuando na redefinição quando os pinos devem estar no modo de alta impedância é preocupante, e é algo que você precisa entender completamente para validar e corrigir o sistema.

Edit: agora que está claro que este é um erro de software no seu código, para resolver a unidade inadvertida baixa durante a inicialização, configure o bit do registro de dados de saída do pino para alto antes de definir o pino como uma saída.

Dito isto, uma resposta literal à sua pergunta original seria um chip contendo várias open collector inverters.

O 74xx05 é um exemplo.

O 74xx06 é semelhante, mas permite aplicar uma tensão aceitável à saída, mesmo quando ela excede a tensão de alimentação, por exemplo, você pode operar a peça em 3,3v, mas reduzir as saídas de 5v.

Mas estas não são a solução para o seu problema real .


Você estava certo, eu tive que verificar meus procedimentos de inicialização. Normalmente, defino todos os parâmetros de E / S e inicializo tudo, depois cuido do estado padrão dos pinos. Ao definir o pino como um pino de saída, ele entra automaticamente no estado LOW. Parece que houve tempo suficiente entre o pinMode () e o primeiro digitalWrite () que ajustou o pino para um estado ALTO, impedindo que o relé se engatasse. Portanto, minha solução agora é chamar pinMode () e, em seguida, definir imediatamente o pino como ALTO.
BigWhale 16/08/18

Defina-o como alto antes de torná-lo uma saída, não depois.
22818 Chris Stratton

Você tem um driver para o bobina do relé, sim? Adicione resistores de pullup às suas entradas, pronto.
CrossRoads

1
Os resistores pull-up do @CrossRoads não resolverão o problema nem melhorarão marginalmente as coisas. O problema é que o software do solicitante está fazendo as coisas na ordem errada, diminuindo o pino antes que ele o levante alto. A condução incorreta baixa superaria o seu resistor de pull-up. Além disso, esses são provavelmente os cátodos dos LEDs do acoplador óptico - uma flexão não fará nada, o que é necessário não é erroneamente concluir um caminho até o chão.
Chris Stratton

Os pullups manteriam os pinos altos enquanto o dispositivo passava pelo processo de redefinição / inicialização e os pinos estão flutuando.
CrossRoads 21/09

0

A solução mais simples é trocar as conexões dos pinos NO e NC do relé.

A próxima opção é inverter a lógica de programação para esse pino. Você pode adicionar algumas constantes

#define RELAY_ON LOW
#define RELAY_OFF HIGH

Para influenciar os relés para um determinado estado durante a redefinição (enquanto o pino de saída é de alta impedância), você pode adicionar um resistor de pull-up ou pull-down conforme necessário. O pino de IO sobrecarrega facilmente a corrente vazada através do resistor e ainda comuta adequadamente o relé.

Usando essas 2 técnicas, você pode escolher o estado padrão do relé para o estado sem energia. Ou porque ele é usado na maioria das vezes ou porque é a opção à prova de falhas.


Você não entendeu. O OP não deseja que os relés sejam ativados na redefinição .
Elliot Alderson

0

Aqui está um "Manual do usuário" para o seu relé. Você realmente nunca deve projetar um sistema sem ter todas as planilhas de dados primeiro.

A partir do esquema fornecido lá, pode-se ver claramente que você pode simplesmente conectar seu controlador diretamente aos pinos InX. Ou seja, nenhum dos esquemas que você criou é necessário.

Como a entrada dos optoacopladores é capaz de operar no modo de coletor aberto , sugiro que você mantenha os pinos correspondentes do seu uC como entrada / Z-alto quando desejar manter os relés no NC.

Como não estou familiarizado com o seu controlador, aqui estão alguns pseudo-códigos para ajudá-lo:

Inicialização, para cada pino que controla um relé:

Set direction to input
Set level to "0" (do NOT change direction to output)

Relé de comando para NÃO:

Set direction to output

Retransmissão de comando para NC:

Set direction to input

Normalmente, um uC acorda com seus pinos já como entrada, portanto a primeira linha da inicialização é redundante, mas é sempre mais seguro executá-lo para garantir que o sistema esteja em um estado conhecido. Verifique se você não possui algum código que inicie todos os pinos de maneira geral, com alguns valores como parte de algum código da placa da caldeira, sabe-se que os iniciantes cometem esse erro.

PS Para o tempo em que você realmente precisará de algum driver atual de inversão, use algo como um ULN2003A !


3
"um ULN" não faz parte. Mostre o número da peça real, não o oculte no link
Chris Stratton

Esta é a única parte da série que eu já usei, então sempre foi "apenas um ULN" para mim.
Equilibrius
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.