×
Ir ao conteúdo
  • Cadastre-se

Arduino Arduino comuta portas digitais ao iniciar


Posts recomendados

Olá pessoal,

 

Estou com um pequeno problema com o Arduino, na verdade já tinha notado este comportamento antes, mas nunca foi muito prejudicial, até eu precisar lidar com um sistema mais critico.

 

Estou fazendo um sistema para ligar e desligar computadores a partir de um servidor, onde neste servidor terá um programa em C# comunicando via porta serial com o Arduino e este envia sinais (digitais) para um módulo de reles com as saídas conectadas nas conexões ON/OFF de cada computador. Até então está tudo funcionando, porém caso eu desconecte a força do Arduino (acidentalmente por exemplo) ou desligue e ligue este servidor (que irá desligar e ligar o Arduino também), caso isto ocorra ao religar o Arduino antes do programa gravado nele iniciar, as portas digitais do Arduino fazem uma comutação ao reiniciar o arduino. Isto gera um grave problema, pois a ideia é que isto somente ocorra quando um usuário ordene pelo software de controle.

 

Alguém sabe por qual motivo esta comutação ao iniciar o arduino ocorre? Ou alguma maneira de mitigar isto?

 

Caso precise de mais informações a respeito posso enviar um diagrama (não tenho em mãos no momento)

 

Agradecido

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
18 horas atrás, toigogustavo disse:

alguma maneira de mitigar isto?

Sim amigo. Mesmo sem conhecer seu circuito, veja minha intuição: 

Ocorre que ao ligar, os pinos se assumem entrada e se ficam assim por muito tempo, pode haver interferências. Uma maneira soft de fazer contornar é programar imediatamente logo no início do programa todos os pinos como saída e em nível 0. Uma (uma) maneira caso seu mc seja algum avr é algo como DDRA=DDRB=DDRC=0xff;PORTA=PORB=PORTC=0x00; Outra mais hard é colocar resistores pulldown nas saídas. Dica: implemente ambas

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O esquema é este?

4Relay-esquematico.jpg

https://www.robtronics.com.br/eaduino/2020/08/4-relay-module/

Neste caso você deve colocar 1 nas saídas imediatamente.

DDRA=DDRB=DDRC=0xff;PORTA=PORTB=PORTC=0xff;

ou digitalwrite(2,1);digitalwrite(3,1);digitalwrite(4,1);digitalwrite(5,1);

Também sugiro que altere seu sw do arduino de modo a não acionar tudo simultaneamente.

A ideia de Paulão é boa. Uma alternativa à ela é controlar apenas o vcc dos leds.. pelo esquema é o pino 2 de J5. Um minimalismo teórico é apenas aplicar uma saída do arduíno nele. A mesma coisa só que: imediatamente em nível 0... um tempinho depois em 1.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A passagem pelo bootloader é rápida d+ pra causa dano. Bem pelo menos deveria ser. Caso se comprove, você tem a alternativa de removê-lo. Vais ter que usar um gravador de verdade ou outro arduino pra regravar se necessário. Outra seria você colocar um atraso: um resistor pro vcc e um capacitor no borne que mencionei acima. Meu chute vai para um R 2K2 e um C 1000uF. Neste caso nem precisa ser controlado pelo mc com eu disse.

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!