Problemas 74HCT373

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Problemas 74HCT373

Mensagempor diegosilva » 29 Jan 2007 16:03

Gurizada,

Sou novo por aqui e estou com um problema que está me dando muita dor de cabeça:

Projetei um circuito com 16 relés, controlados por um PIC18F452 e interfaceados por dois 74HCT373., juntamente com mais dois 74HCT373 estão sendo usados no circuito para outras funções.
Esse circuito comunica com um PC através da porta serial.
As entradas dos 373 estão ligadas à porta D do pic. Seus pinos de OE estão aterrados, e os pinos de LE estão conectados a dois pinos da porta C do PIC.
Através do PC os relés são acionados. Se eu acionar aleatoriamente os relés eles funcionam normalmente. O problema que identifiquei é se eu acionar na ordem crescente. Ligo do 1º até o 6º e funciona tranquilamente, quando ligo o 7º, o sétimo é ligado, porém os outros 6 desligam. Se eu ligar o oitavo acontece a mesma coisa. Isso ocorre sempre nessa ordem. Quando desligo o 7º e o 8º, os outros 6 voltam a ligar.
Já no outro latch (o segundo 373 controla os relés do 9º ao 16º), não acontece esse problema.
Já verifiquei solda, mau contatos, já fiz umas 20 vezes teste de continuidade e tudo está conectado certo.
coloquei resistores de 10K de pull-down na porta D do PIC e resistores de 10K de pull-up no pinos LE do latches.
As saídas dos laches tem, cada uma, um resistor de 10K polarizando um BC548, que aciona cada relé.
Verifiquei as rotinas de software centenas de vezes e não encontrei problemas.
Estou a 3 semanas sobre esse problema e não consigo resolver.
Hoje retirei o segundo latch (o que liga os relés do 9º ao 16º) e o problema não ocorreu mais. Mas se colocá-lo novamente, volta a ocorrer.
Verifiquei também, que quando os 6 relés desligam, os pinos de saída dos latches que os comandam, ficam com uma tensão de 1,63V, enquanto que os pinos que comandam os relés 7 e 8 ficam com 5V. Ora, se o latch funciona com lógica binária, como poderia ter uma tensão de 1,63V em 6 de suas 8 saídas??


O que será que pode ser??
Por favor, estou desesperado!!

Abraço a todos
diegosilva
Bit
 
Mensagens: 13
Registrado em: 20 Nov 2006 11:13
Localização: Porto Alegre - RS

Mensagempor zachary » 29 Jan 2007 16:21

Olá Diego!

O 373 tem os pinos de entrada "D" próximo aos de saida "Q", uma baixa isolação (causada pela resina da solda, umidade, e pela propria confecção do impresso) entre esses pinos poderia causar esse problema.

Outra coisa, vc está trabalhando com que CLOCK no PIC?

Dê uma verificada na sua fonte de alimentação.

Se puderes por uma foto da placa ou esquema aqui ajudaria bastante.

Abraço

Zac
Editado pela última vez por zachary em 30 Jan 2007 08:36, em um total de 1 vez.
"Nada tema, com SMITH não há problema"

(Dr. Zachary Smith)
Avatar do usuário
zachary
Nibble
 
Mensagens: 87
Registrado em: 08 Dez 2006 12:22
Localização: Porto Alegre - RS

Mensagempor diegosilva » 29 Jan 2007 16:45

Bom, lá vai:

Esse é o código que atualiza os relés do primeiro LATCH:

// Configure latches
PORTD = do_1_port;
LATD = do_1_port;
Delay_us (1);
LATCH_DO_1 = 1;
Delay_us (1);
LATCH_DO_1 = 0;
Delay_us (1);

O que atualiza o segundo latch é extamente igual, porém com outra variavel e aciona outro pino.

Fiz um jpeg com a placa e o layout, mas não consegui postar aqui.

Quanto a fonte. Estou usando duas fontes chaveadas de 1 A cada. Uma para o +12 e outra para o -12. O projeto possui duas placas. Um onde encontra-se o PIC, e a outra onde estão os relés e os latches. Estou interligando-as através de um flat-cable de uns 15cm de comprimento.

O que poderia fornecer mais para auxiliar?


Abraço!
diegosilva
Bit
 
Mensagens: 13
Registrado em: 20 Nov 2006 11:13
Localização: Porto Alegre - RS

Mensagempor MOR_AL » 29 Jan 2007 19:57

Olá diegosilva.

Você está alterando apenas um relé por vez?. Tente acionar todo o byte de uma vez.
Por exemplo. Se você quer ligar apenas um relé (com'1' lógico por exemplo), leia os outros e faça um "OU" lógico, com o seguinte byte. Onde você quizer ligar, o bit correspondente tem que estar em um, os outros devem permanecer em zero. Assim você só liga o desejado, mas não altera os outros. Para desligar use um "E" lógico com a leitura dos relés. O bit a ser desligado deverá estar em '0' e os outros em '1'.
Pode estar acontecendo erro devido às capacitâncias dos componentes conectados à porta.

Você pode criar também uma variável com o estado dos relés. Faça as alterações nesta variável e envie-a para a saída.

Outra solução seria aumentar o tempo de 1 us. Se é para acionar relé, você pode aumentar este tempo para 100 ms (por exemplo). Com isso você garante que as capacitâncias expúrias tenham tempo de carregar para o valor correto.


A fonte chaveada também provocaria comportamento semelhante, porém, neste caso seria um comportamento errático, não repetitivo.

Tente isso e me diga se resolve.

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor zachary » 30 Jan 2007 09:15

Acredito que o problema possa estar na montagem, talvez "crosstalk" (interferência gerada pelo campo eletrico) entre os condutores do flat-cable.

O que vc pode experimentar é por intercalar as ligações no "flat" com um sinal de GND:
Código: Selecionar todos

CABO DA PLACA DO PIC PARA A PLACA DO 74HC373 (ORIGINAL)

  D0  D1  D3  D4  D5  D6  D7  CS1 CS2   
   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |
  D0  D1  D3  D4  D5  D6  D7  CS1 CS2   


CABO DA PLACA DO PIC PARA A PLACA DO 74HC373 (ALTERADO)

  D0  GND D1  GND D3  GND D4  GND D5  GND D6  GND D7 ....
   |   |   |   |   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |   |   |   |   |   |
  D0  GND D1  GND D3  GND D4  GND D5  GND D6  GND D7 ....





Isso deve minimizar o problema de "CROSSTALK".

Abraço

Zac
"Nada tema, com SMITH não há problema"

(Dr. Zachary Smith)
Avatar do usuário
zachary
Nibble
 
Mensagens: 87
Registrado em: 08 Dez 2006 12:22
Localização: Porto Alegre - RS

Mensagempor zachary » 30 Jan 2007 13:03

Diego

Para por seu JPEG aqui, siga essas instruçoes:

http://www.asm51.eng.br/phpbb/viewtopic.php?t=847

Abraço

Zac
"Nada tema, com SMITH não há problema"

(Dr. Zachary Smith)
Avatar do usuário
zachary
Nibble
 
Mensagens: 87
Registrado em: 08 Dez 2006 12:22
Localização: Porto Alegre - RS

Mensagempor diegosilva » 30 Jan 2007 15:29

Caro MOR_AL,

A solução que implementei é justamente uma de tuas sugestões, pois altero primeiramente o bit em uma variável e em seguida escreve essa variável no latch.
Quanto as temporizações, já experimentei aumentar e diminuir os delays, porém o problema persiste. O que poderia fazer quanto á fonte chaveada?? Existe algum filtro?

Caro Zachary,

Estou testando tua sugestão da nova configuração do flat-cabe. Enquantro isso estou enviando as imagens do circuito.


Agradeço a atenção de todos e continuo na peleia.

Abraço!


Layout:

Imagem


E placa:

Imagem
Diego Silva
diegosilva
Bit
 
Mensagens: 13
Registrado em: 20 Nov 2006 11:13
Localização: Porto Alegre - RS

Mensagempor MOR_AL » 30 Jan 2007 19:05

Olá Diego Silva.

Bom, a minha sugestão agora é observar as saídas do PIC com o auxílio de um osciloscópio. Pontos D do 373 e o pino correspondente do PIC.
Só por desencargo de consciência, verifique se a tensão AC sobreposta à fonte de alimentação, junto aos capacitores de desacoplamento (PIC e 373s) está correta. Para fontes chaveadas, as transições desta tensão não devem ser superior a 150mVpp.

Todo o circuito está apenas em uma placa? Qual é o tamanho das conecções entre o PIC e os 373?

Se o problema é sério, e parece ser, procure analisar o sistema como blocos separados e trabalhe por eliminação.

1 - Se você suspeita da fonte chaveada, substitua-a (provisoriamente) por uma linear. Com isso você ou detecta o problema na fonte ou conclui que não é ela a causadora do problema.
2 - Retire um dos 373. Veja se mudou alguma coisa no que ficou.
3 - Os relés.
a) Retire a carga dos relés e verifique se altera alguma coisa. Caso negativo, veja o item b.
b)Se eles acionam uma carga maior, o que deve ser verdade, retire os relés e substitua-os por leds com os devidos resistores de limitação de corrente.

Caro Diego Silva.

Eletrônica é assim mesmo. A maior parte das vezes o problema é coisa boba.

Poste aqui seus resultados.

Boa sorte.

MOR_AL.

PS: Veja a transição gerada nos coletores dos transistores que acionam os relés. Observe também a sobretensão devido à comutação dos relés, na fonte de +12 Vcc. Os 1N4007 não possuem comutações rápidas.
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Solução!

Mensagempor diegosilva » 30 Jan 2007 22:11

Gostaria de agradecer a todos que ajudaram!
Muito obrigado!! Consegui resolver o problema.
Após inúmeros testes, fiz um segundo cabo, onde somente os pinos de LE passavam por ele, e o circuito funcionou corretamente.
Tudo leva a crer que o problema era o tal CROSSTALK.

Mais uma vez, muito obrigado Zachary e Mor_Al pela ajuda de vocês!!

Um forte abraço e no que precisarem prendam o grito!!
Diego Silva
diegosilva
Bit
 
Mensagens: 13
Registrado em: 20 Nov 2006 11:13
Localização: Porto Alegre - RS


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x