Ir ao conteúdo

Posts recomendados

Postado

Bom dia a todos,

 

Estou com um problema parecido, pesquisei bastante, mas é complicado até de buscar algo que você não sabe ao certo o que é !

 

Sei que é interferência sem dúvida, mas gostaria além de solucionar, entender melhor.

 

Construi um dispositivo com alguns componentes, estou prototipando ainda, utilizei alguns itens como:

- Arduino NANO (ATMEGA328P);

- Display 20x4 com módulo I2C;

- Botões comuns;

- Fonte de 5VDC ~ 1A

- Módulo de Relé com 2 Canais;

 

Antes de falar os problemas irei citar algumas informações pertinentes:

 

- Utilizo uma entrada de interrupção através de um botão que serve como BOTÃO VOLTAR no menu:

#define BT_VOLTAR   3

pinMode(BT_VOLTAR, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(BT_VOLTAR), funcBT_VOLTAR, FALLING);

 

- Utilizo um dos relés para comutar um contator em outro equipamento, o contator está fora do meu equipamento, não forneço tensão para a bobina dele, só utilizo um contato seco do meu relé; 

 

- Esse outro dispositivo (externo) através do contator faz uma partida direta de um motor AC de baixa potência alimentado por 220V;

 

- Utilizo uma fonte de 5VDC-1A (no meu dispositvo) com alimentação de 90~275VAC; (Alimento com 220VAC (tomada) da rede elétrica)

 

Agora o PROBLEMA:

- A aplicação desenvolvida funciona bem, não há supostos "bugs" !

- Quando ligo o motor funciona normalmente, por quanto tempo eu quiser, sem interferência nenhuma !!

- No instante que desligo o motor sempre acontece a anomalia, o meu menu VOLTA !!!

 

Comentários e pensamentos:

- Parece ser bem óbvio que aquela entrada de interrupção citada anteriormente é atuada ! Aí meu menu VOLTA !

- Penso que acontece uma pequena queda de tensão nos 5VDC originada da fonte, que é alimentada pela mesma tensão AC da rede elétrica no motor, PORÉM uma vez que minha fonte funciona de 90~275VAC não creio que a queda de tensão na saída dos 5VDC seja originada pela queda na entrada, SE HOUVER !!

 

Deve estar havendo algum ruído / interferência ?

Isso é EMI (Interferência Eletromagnética) ?

Faz sentido colocar um Supressor de Ferrite no cabo de alimentação desse meu dispositivo que alimenta a fonte 5VDC ?

Há alguma outra palavra chave para esse tipo de problema para que eu consiga pesquisar ainda mais ?

 

Obrigado pessoal !!

  • Amei 1
  • Membro VIP
Postado

Olá amigo. neste caso a solução é quase bem simples e claro exigiu alguns anos de calejamento mas vou te passar...

1 hora atrás, SkullDevil disse:

No instante que desligo o motor sempre acontece a anomalia, o meu menu VOLTA !!!

No sw: antes de desligar (ou ligar) desabilite a entrada de interrupt mas não só isso: torne a entrada do botão saída e com nível 0.. e tem mais: No hw: coloque capacitores de alguns nF em paralelo com os botões.

😁

  • Curtir 1
Postado

Fala galera, tudo bem ?

 

 

1 hora atrás, Ricardov disse:

É interferência sim. Existem muitos tópicos sobre isso, com dicas valiosas. É importante apresentar o diagrama do circuito e fotos da montagem física.

Ricardo, eu pesquisei bastante, mas não conseguia visualizar nos outros problemas esse problema meu, ninguem falava que acontecia quando desligava o motor.

 

Você têm algumas palavras chaves além de INTERFERÊNCIA, RÚIDO, EMI, existe um nome específico para isso que acontece ?

 

De tanto que pesquisei que descobri até que existe um componente chamado "Ferrite Bead" que pode-se colocar no pino de outros componentes para contornar interferências específicas em uma trilha/circuito. Eu só conhecia o comum para cabo !

 

Obrigado Ricardo !!

 

 

29 minutos atrás, .if disse:

Olá amigo. neste caso a solução é quase bem simples e claro exigiu alguns anos de calejamento mas vou te passar...

No sw: antes de desligar (ou ligar) desabilite a entrada de interrupt mas não só isso: torne a entrada do botão saída e com nível 0.. e tem mais: No hw: coloque capacitores de alguns nF em paralelo com os botões.

😁

Beleza .if ? 

 

Cara, eu confesso que não tinha pensado nessa solução de desabilitar a interrupção ou transformar em uma saída no momento que eu fosse ligar/desligar o motor.

 

Eu fui logo tentando resolver a parte elétrica/eletrônica do problema, vou fazer essa alteração no software e volto para dar os resultados !!

 

Muito obrigado por compartilhar seus conhecimentos !! Excelente sacada !!

  • Curtir 1
  • Membro VIP
Postado

É isso aí amigo. estamos aqui pra isso. Como você foi simpático, veja mais uma dica: faça um filtro digital minimalista: faça o sistema ignorar pulso estreito algo como...

#define PINO RB0 //ou a definição de pino de seu compilador
static bit botao; //ou boolean e afins .. global

void interrupt mudanca_de_estado() //ou a definição de interrupt do seu compilador
{
char tmp=0;
while (!PINO) tmp++;
if (tmp>20) botao=1; // se ficou um tempo pressionado, é válido
else botao=0; //se não, é ruído
}

😁

 

  • Amei 1
Postado
1 hora atrás, .if disse:

É isso aí amigo. estamos aqui pra isso. Como você foi simpático, veja mais uma dica: faça um filtro digital minimalista: faça o sistema ignorar pulso estreito algo como...

#define PINO RB0 //ou a definição de pino de seu compilador
static bit botao; //ou boolean e afins .. global

void interrupt mudanca_de_estado() //ou a definição de interrupt do seu compilador
{
char tmp=0;
while (!PINO) tmp++;
if (tmp>20) botao=1; // se ficou um tempo pressionado, é válido
else botao=0; //se não, é ruído
}

😁

 

 

Fala .if, vou te agradecer novamente, rsrs !!

 

Olha só, eu até cheguei a usar uma ideia no mesmo software pelo fato daquele efeito DeBounce nos outros botões, porém aí por ser uma entrada de interrupção, passou despercebido essa questão !! Realmente eu acho que essa ideia vai ser mais fácil !!

 

Tive algumas outras dificuldades também com a interrupção, pois eu não fazia ideia de que não é possível chamar outras instruções na função da interrupção que também usa interrupção ... Por exemplo: Funções do próprio LCD.

 

Voltando para o assunto da interferência elétrica/eletrônica, eu gostaria mesmo de ter uma luz para conseguir entender de vez esse problema, pois no passado fiz uma outra aplicação na época da faculdade, que travava a comunicação CANBUS que o sistema possuía !! Aí pensando aqui, não daria para resolver via programação esse problema com módulo CAN BUS MCP2515, ou daria ?

 

A interferência eletromagnética está sendo um vilão em meus projetos !! =/

 

Muito obrigado .if !!

  • Curtir 1
Postado

@SkullDevil ,

 

Faz o seguinte : use baixa impedância em todos os botões .... ou seja, resistores de Pull Up ou de Pull Down no máximo de 1 K ohm, e se possível separe a fonte de alimentação do seu relé... isso costuma resolver esse problema.

 

Paulo  

  • Curtir 2
Postado
Em 25/03/2022 às 19:17, aphawk disse:

@SkullDevil ,

 

Faz o seguinte : use baixa impedância em todos os botões .... ou seja, resistores de Pull Up ou de Pull Down no máximo de 1 K ohm, e se possível separe a fonte de alimentação do seu relé... isso costuma resolver esse problema.

 

Paulo  

Opa, tudo joia Paulo ?

 

Eu estou utilizando o Pull Up do próprio controlador ATMEGA328P, não seria suficiente ? Para tratar esse ruído, o correto não seria um capacitor ? Gerando um certo delay no descarregamento ?

 

Em relação a alimentação, fiz um teste no dia, eu cheguei a tirar todo e qualquer vínculo do dispositivo com o outro (motor), até afastei um meio metro um do outro ... e dei o comando no outro equipamento manualmente, mesmo assim o menu voltou !! Sendo que a único coisa que os equipamentos tinham em comum era a rede elétrica 220VAC de alimentação, isso porque não estavam nem na mesma tomada !

 

Cheguei a ligar o outro equipamento no 220VAV e o meu no 127VAC para verificar ... e aconteceu a mesma coisa !! Por isso a primeira coisa que me veio em mente foi usar um ferrite no cabo de alimentação deste meu equipamento !! Mas antes preciso entender tudo isso antes de seguir esse caminho ....

 

No meu entendimento o que geraria uma interação nessa entrada digital, uma vez que estava configurada como Pull Up seria uma queda de tensão, e grande ainda, para ser interpretada como nível lógico "zero", e os ruídos no qual muito li fazendo as pesquisas eram para evitar oscilações extremas ou não de FREQUÊNCIA ! É isso que está me confundindo, o que a frequência afetaria nessa entrada digital ? Estou falando alguma besteira ?

 

Obrigado pelas dicas Paulo !!

Postado
1 hora atrás, SkullDevil disse:

Eu estou utilizando o Pull Up do próprio controlador ATMEGA328P, não seria suficiente ? Para tratar esse ruído, o correto não seria um capacitor ? Gerando um certo delay no descarregamento ?

 

Quando você usa o pull up interno , ele é um resistor acima de 50K. Isso torna a impedância muito alta na entrada do Atmega, e qualquer ruído eletromagnético vai causar interferência. Vai por mim, use resistores de baixo valor que vão resolver bastante o seu problema.

Um capacitor cerâmico de 100 nF também ajuda bastante, ligado ao GND.

 

1 hora atrás, SkullDevil disse:

Em relação a alimentação, fiz um teste no dia, eu cheguei a tirar todo e qualquer vínculo do dispositivo com o outro (motor), até afastei um meio metro um do outro ... e dei o comando no outro equipamento manualmente, mesmo assim o menu voltou !! Sendo que a único coisa que os equipamentos tinham em comum era a rede elétrica 220VAC de alimentação, isso porque não estavam nem na mesma tomada !

 

Se existem fios do teclado ou do display que passam perto dos fios por onde circulam altas correntes, eles recebem interferência por indução. Não precisam estar acoplados com algum fio em comum ....

E sim, a interferência pode entrar direto da rede de 110V ou de 220V, por isso sugiro colocar no primário de cada transformador de fonte um capacitor de 0.1 uF por 400V para ajudar a filtrar esses ruídos, bem como um de 100 nF cerâmico na saída das fontes de 5V e de 12V.

 

Mas o teclado com apenas os Pull Ups internos também pode ser o responsável por isso.

 

1 hora atrás, SkullDevil disse:

É isso que está me confundindo, o que a frequência afetaria nessa entrada digital ? Estou falando alguma besteira ?

 

Sim, está falando uma pequena besteira hehehe.... o Pull Up interno é muito bom para fazer testes na bancada, mas na vida real não servem para nada, muito menos em ambiente industrial ou em equipamentos que tenham relés ou motores. O problema não é de frequência exatamente, e sim de picos de ruido eletromagnético gerados por liga/desliga de cargas de alta corrente, como motores.

 

Paulo

  • Membro VIP
Postado

O fio que vai do botão até a entrada é longo? Neste caso ele é uma bela antena. Geralmente o R & C resolve (você não disse se testou). Mas pode ser que o ruído esteja entrando por outras portas e não necessariamente pela que suspeitas. Coloque R & C nas que puder, além da técnica que mencionei tornar todas saídas no momento certo pra literalmente fechar as portas. Vi agora que seu display é i2c. Isso é um problema pois você tem pouco controle sobre quando ele é entrada ou saída mas analise seu d.s. pra ver. Não leia nada dele, nem status, busy, ram e afins.

Também pode estar havendo queda no vcc ou ripple muito alto. Não alimente relés pela mesma v do mc, claro. Se vem pelo ar, blindagenzinha básica pode ajudar. .. algo como envolver o sistema com papel alumínio.

  • Curtir 1
Postado

Ruídos e recursos:

O resistor de pull up do controlador pode ser utilizado sim mas com algumas ressalvas: num projeto meu utilizo esse recurso mas quem dá a cara a tapa para o ambiente externo é a base de um transistor, utilizo-o como escudo do controlador contra ruídos nos cabos. Dependendo do comprimento do cabo associado a uma forte pancada magnética pode queimar o controlador. A base do transistor é um zener natural de 1V contra altos picos positivos e para proteção de picos negativos um diodo antiparalelo pode ser posto. Um resistência da base ao GND define a corrente mínima para acionamento do transistor. Para o cálculo dessa resistência lembre-se que o transistor começa a comutar com 0,45V. O transistor deve ser colocado próximo ao controlador.

 

Afaste o tanto quanto possível esse relé do controlador.

 

Na fiação quer vai do controlador (Arduíno no seu caso) para o ambiente externo sempre que possível utiliza pares trançados com o GND.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!