Eu tenho o botão da campainha da minha casa conectado a uma placa de desenvolvimento GHI EMX . O software avalia a hora do dia e determina se a campainha deve tocar ou não.
Nota lateral: Isso foi implementado como uma maneira de lidar com brincadeiras de ding-dong-ditch que eu estava recebendo.
Isso tudo funciona muito bem, exceto por um problema, o fio conectado à placa EMX tem cerca de 15 metros de comprimento e gera interferência suficiente para a placa pensar que alguém apertou o botão e, portanto, minha campainha toca em intervalos aleatórios o dia. Tanto minha esposa quanto meu cachorro não apreciam isso (mas as crianças acham muito divertido).
Tentei corrigir o problema seguindo os conselhos encontrados neste artigo e implementando o seguinte circuito:
Isso não resolveu o problema, mas achei que colocar um resistor de 3k no resistor de 1k e substituir o capacitor .01uF por um 40uF funcionou um pouco melhor, mas qualquer coisa além de 3k causa um atraso notável ao pressionar o botão antes da campainha toca. A diferença para o meu circuito é que a placa funciona em 3,3V em vez de 5V (o que eu suponho que piora o problema) e, em vez de conectar ao terra, o comutador completa o circuito (ou seja, dois fios vão entre o microcontrolador e o comutador).
O fio que passa entre o comutador e o microcontrolador é um fio de campainha padrão que não é blindado ou torcido. Substituir o fio da campainha por um fio blindado não é, infelizmente, uma opção, pois isso exigiria que eu rasgasse o drywall.
Analisei a seguinte pergunta aqui , mas isso parece estar lidando com um ADC que pode ser um pouco diferente do meu problema. Qualquer ajuda seria muito apreciada.
Atualização
Depois de ler mais da documentação , parece que, embora o microcontrolador seja alimentado por 3,3V, é tolerante a 5V nos pinos de E / S. Posso ajustar para um valor mais alto do resistor se eu usar 5V, mas isso ajudará alguma coisa?
fonte
Respostas:
O que o esquema não mostra é o enorme zumbido de 60Hz no modo comum e como os motivos são interconectados com a proximidade de linhas CA e transientes da linha de energia.
Seu exemplo é um bom exemplo de como não fazer interface com cabos longos.
Posso sugerir no futuro;
Uma vez que muitas opções não estão disponíveis. Faz estes;
Com esta solução, a impedância do circuito da chave baixa impedância no fechamento e baixa impedância com a tampa de seleção através da chave quando aberta. O zumbido CM será absorvido e o ruído diferencial de RF será suprimido.
-alimentação com a mesma tensão de alimentação que o uC, com boa tampa de RF no chip.
fonte
Uma solução simples pode ser deixar o sistema da campainha como estava antes de iniciar este projeto e usar o microcontrolador para desligar a alimentação do alto-falante da campainha da porta com um relé quando você não quiser ouvir a campainha.
Atualizar
Eu não estou muito familiarizado com os sistemas de campainha (que não seja um google rápido), portanto, o seguinte pressupõe que você tenha pelo menos dois condutores que vão do seu MCU ao comutador.
A placa GHI EMX que você possui possui um ADC de 10 bits para que você possa enviar 12vDc (ou mais) para a campainha e usar um divisor de tensão simples para que a tensão no MCU não ultrapasse 5 volts no máximo. Então, no lado do software, tudo o que você faria é ler o ADC e, se o valor for> 1000 (talvez seja necessário brincar com esse número, e 1023 é o máximo em um ADC de 10 bits), a campainha foi pressionada.
Seria algo assim (tente não ficar impressionado com minhas incríveis habilidades de edição gráfica):
Outra opção semelhante é usar um gatilho schmitt com uma tensão de entrada mais alta. Mas isso exigiria peças extras e é mais esforço do que a opção ADC.
Editar
A resposta de Chris Stratton fez uma boa observação sobre o fluxo atual. Se você alterar o resistor de 100k, puxe-o para ~ 220ohm, o que pode ajudar.
fonte
Na verdade, existe uma solução muito simples para esse problema.
A chave para entender esta solução é pensar por que uma campainha eletromecânica simples não toca devido a interferência semelhante. A resposta, é claro, é que ela requer que a potência real do anel flua através do circuito fechado - a interferência não acoplará energia suficiente no circuito aberto para tocar falsamente.
Você pode criar uma situação semelhante usando um resistor pullup de baixo valor, com o botão da campainha conectado ao terra. Cem ohms de resistência significariam que cerca de 25 miliamperes de corrente teriam que fluir antes que a entrada do microcontrolador fosse puxada para baixo o suficiente para ler como "0". A comunicação serial de longo curso geralmente é feita com uma corrente de 20 mA; portanto, 25 mA devem ser suficientes, mas você pode facilmente ajustar para cima ou para baixo.
Você pode rejeitar ainda mais a interferência com o software no microcontrolador, que exige que o botão seja mantido fechado - sem folgas - por aproximadamente 100 mS antes de ser reconhecido como um anel válido.
Pode-se argumentar que esse método está desperdiçando energia, no entanto, a energia é consumida apenas durante o tempo em que a campainha é pressionada. O resistor precisa ter a capacidade de manuseio de energia (térmica) para a possibilidade de o botão travar permanentemente fechado, mas esse não seria o caso comum para calcular o consumo de energia.
fonte
O cabo de 15 metros está agindo como uma antena. Você precisa usar um capacitor de alimentação direta (por exemplo, W2F11A4708AT1F ) para filtrar a interferência de RF.
fonte