Ir ao conteúdo
  • Cadastre-se

Mosfets dão um pulso de funcionamento ao trocar estado do 74hc595


Posts recomendados

 

 

 

Tem um circuito que fiz de uma placa de controle, que é comando por 2 74hc595 em cascata, que acionam Vários motores vias mosfets

 

Para instalação, eu coloquei uma rede resistiva de 4,7K ohm. Ligando cada um dos pinos ao terra e depois liga diretamente ao gate de um mosfet canal N (desenhei abaixo a ligação)

 

image.png.a5479e3f7055b00d74ecd2d76dfdfc52.png

 

Mas está acontecendo um negócio que não consegui entender como resolver. As vezes, quando mudo o estado do 595 , alguns motores dão um pulso breve e funcionam por meio segundo, mesmo que não tenha comando para ele funcionar.
Já tentei colocar um resistores entre a rede resistiva e o gate do mosfet, não teve efeito.


Aqui está o void de atualização do 595:

void atualiza595()
{
  byte seq=0;
  digitalWrite(latchPin, LOW);  
  bitWrite(seq, 2, resist);//resistencia em si
  bitWrite(seq, 0, resist);//led indicador que a reistência está ligada
  bitWrite(seq, 1, bomba);
  bitWrite(seq, 3, cpurun);
  bitWrite(seq, 7, beep);  
  shiftOut(dataPin, clockPin, MSBFIRST, seq);                    
  
  
  bitWrite(seq, 0, led2);//vermelho
  bitWrite(seq, 1, led1);//verde
  bitWrite(seq, 2, solentagua);  
  bitWrite(seq, 3, exaustor);
  bitWrite(seq, 4, solsaidaagua);
  bitWrite(seq, 5, motsol1);
  bitWrite(seq, 6, motsol2);
  bitWrite(seq, 7, motmixer);  
  shiftOut(dataPin, clockPin, MSBFIRST, seq);
           
  digitalWrite(latchPin, HIGH);    
}

 

Link para o comentário
Compartilhar em outros sites

Não entendi
Seria fechar e abrir o latch entre cada pulso.

Algo tipo isso?

void atualiza595()
{
  byte seq=0;
  digitalWrite(latchPin, LOW);  
  bitWrite(seq, 2, resist);//resistencia em si
  bitWrite(seq, 0, resist);//led indicador que a reistência está ligada
  bitWrite(seq, 1, bomba);
  bitWrite(seq, 3, cpurun);
  bitWrite(seq, 7, beep);  
  shiftOut(dataPin, clockPin, MSBFIRST, seq);                    
  
digitalWrite(latchPin, HIGH);      
digitalWrite(latchPin, LOW);    
  
  bitWrite(seq, 0, led2);//vermelho
  bitWrite(seq, 1, led1);//verde
  bitWrite(seq, 2, solentagua);  
  bitWrite(seq, 3, exaustor);
  bitWrite(seq, 4, solsaidaagua);
  bitWrite(seq, 5, motsol1);
  bitWrite(seq, 6, motsol2);
  bitWrite(seq, 7, motmixer);  
  shiftOut(dataPin, clockPin, MSBFIRST, seq);
  
  digitalWrite(latchPin, HIGH);    
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

você tem algumas opções... pegar exemplo pronto na net ou entender como funciona o 595. Neste caso uma pesquisa rápida com as palavras mágicas 74hc595 timing diagram pode te abrir portas e mente. O resumo é simples: 8 pulsos num pino desloca 1 a 1 e 1 pulso em outro põe os 8 pra fora. No seu caso pode dar 16 pulsos antes de expulsá-los.

Obs: não quis muito deduzir o funcionamento dos mastigados shiftout e bitwrite. É + fácil (2me) criar com só o digitalwrite pois o entendimento do 595 (2me) é simples.

Link para o comentário
Compartilhar em outros sites

Será que um código com digitalwrites ficaria mais rápido? Não mencionei antes, são alguns e não todos mosfets que dão esse pulso. Aí fiz um teste, trocando eles no código de local e os mesmos mosfets continuaram pulsando. Cheguei a conclusão que é ruído.
 

Achei menções em fóruns em inglês que orientam a colocar um capacitor de 100uF entre o vcc e o gnd de cada um dos 595. Vou comprar 2 capacitores e soldar direto nas pernas dos 595.

Link para o comentário
Compartilhar em outros sites

Cuidado com o GND. Seu controle funciona com mA, sua potência com Amperes. O source dos mosfets tem que estar ligados no GND da fonte e não na placa onde está o 595 ou protoboard. 

O que quero dizer com isso é que tem que trazer 2 fios de GND da fonte, 1 para alimentar seu controle e outro para alimentar o source dos mosfets. Dessa forma terás o GND de potência e o GND de controle. 

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

2 horas atrás, Sérgio Lembo disse:

Cuidado com o GND. Seu controle funciona com mA, sua potência com Amperes. O source dos mosfets tem que estar ligados no GND da fonte e não na placa onde está o 595 ou protoboard. 

O que quero dizer com isso é que tem que trazer 2 fios de GND da fonte, 1 para alimentar seu controle e outro para alimentar o source dos mosfets. Dessa forma terás o GND de potência e o GND de controle. 

Obrigado, É uma placa de circuito e não protoboard, mas acredito ter entendido e acredito estar correto:
O GND dos mosfets está ligado diretamente no negativo da ponte retificadora que recebe 24V.
O GND do 595 está ligado no GND do 7805 que reduz a corrente pra 5V.

Link para o comentário
Compartilhar em outros sites

Um defeito de trinca na sua ponte resistiva também pode ocasionar isso. Como essa ponte se destina a garantir o zero volt nas situações de tri state do 595, substitua-a por resistores discretos de qualquer valor =>4k7. Se a substituição resolver a causa terá sido descoberta.

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

  • Membro VIP
7 horas atrás, Thiago Miotto disse:

Cheguei a conclusão que é ruído.

O ruído pra acionar o gate do mosfet tem que ser muito mas muito forte mesmooo pois teria que vencer a baxíssima impedância da saída do 595 ou seu layout teria que ser muito mal feito mesmo. Publique o circuito com fotos de seu ambiente e etc. Pra ambiente doméstico hobista (não profissional) há pouca chance de ruídos zoarem o barraco pelo gate. Ainda continuo achando que precisas entender a operação do 595 bem como do seu próprio programa bit a bit.

Além da dica de @Sérgio Lembo dar-te-ei outra... um capacitor - de fato um filtro rc - nos pinos de clock e latch do 595 evitam acionamento indevido também. Mas como te disse, são ruídos eventuais em ambientes industriais. No conforto do lar são pouco prováveis. A propósito, se prestares atenção...

23 horas atrás, .if disse:

Melhor você colocar o latch movido a pulso e não a nível, Algo como..

digitalWrite(latchPin, HIGH);
//delay(x);
digitalWrite(latchPin, LOW);    

 

no delay comentado, ele é justamente pra alarguear a largura do pulso pro caso de algum ajuste (ou 'falha de cálculo') do filtro rc: muito baixo não bloqueia ruído... muito alto bloquearia pulso estreito

  • Curtir 1
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...