Circuito funciona em placa de ensaio, mas não PCB

9

Eu tenho um circuito bastante simples que funciona perfeitamente na placa de ensaio, mas estou tendo muitos problemas para transferi-lo para uma PCB. Estou vendo um comportamento muito estranho que está fora da minha experiência atual, por isso espero receber alguns conselhos.

O circuito implementa um sensor de movimento wifi, embora o problema que eu estou tendo ocorra antes de chegar à parte de RF, ou mesmo à parte uC do diagrama: insira a descrição da imagem aqui

Eu circulei a parte que está tendo problemas.

R3 é um resistor de pull-down, que é necessário porque o AMN42121 aciona a saída HIGH quando o movimento é detectado, mas o deixa suspenso sem movimento, portanto, o pull-down é necessário.

Eu usei C1 para suavizar a transição entre movimento e nenhum movimento. C1 faz com que o nível de saída vá para LOW lenta e suavemente, para que o estado "sem movimento" seja alcançado após alguns segundos sem movimento.

Inversor há interrupções externas do b / c attiny são acionadas por baixo nível, então eu preciso inverter a lógica. É uma pena que eu tenha usado um pacote DIP tão grande para um inversor, mas não consegui encontrar mais nada.

Eu fiz um PCB de dupla face para este circuito, que se parece com isso: insira a descrição da imagem aqui

Novamente, apenas montei a área circulada até agora.

Depois de soldar S1, R3 e C1, recebo o seguinte sinal da saída do sensor: insira a descrição da imagem aqui

É exatamente o que eu quero ver, então está tudo bem até este ponto.

Em seguida, soldei um soquete para o IC2 e liguei o inversor. É aqui que os mistérios começam. No começo estava tudo bem, mas depois de um tempo mexendo com o quadro, o circuito parou de funcionar. Quando coloco uma sonda na saída do sensor, em vez do sinal agradável que vimos acima, vejo variações nos dois exemplos a seguir:

Exemplo 1: insira a descrição da imagem aqui

Exemplo 2: insira a descrição da imagem aqui

Observe que, ao contrário do primeiro exemplo, o sinal no segundo exemplo não é gerado pelo movimento - que a forma do dente de serra apenas surge por si própria sem qualquer ação minha.

Após muitos testes, consegui estabelecer o seguinte:

  1. Desconectar o inversor da tomada faz com que o sensor funcione corretamente novamente.
  2. Cortar a energia do inversor e deixá-lo conectado faz com que o sensor funcione.
  3. O uso de um inversor diferente não tem efeito.
  4. Mergulhar a placa com removedor de fluxo ou acetona e esfregar com uma escova às vezes faz com que o sensor funcione novamente, mas muito brevemente. Em um ponto, consegui fazer o sinal parecer assim esfregando agressivamente com uma escova de dentes: insira a descrição da imagem aqui

Observe que, mesmo nesta última imagem, o sinal não está retornando ao nível LOW até o fim. O efeito desapareceu quase assim que parei de escovar.

Até agora, isso indica algum defeito de solda, exceto que eu realmente não consigo ver o problema. Analisei cuidadosamente o quadro com ampliação poderosa e testei todos os pontos em que pude pensar em continuidade - tudo dá certo. Aqui está um close do trabalho de solda no soquete IC e no sensor: insira a descrição da imagem aqui

Agora estou sem idéias, então qualquer conselho seria muito apreciado. Obrigado.

EDITAR:

Acabei de descobrir algo interessante. Um exame mais detalhado do exemplo # 2 (o sinal da forma dente de serra) revela que a inclinação descendente é um segmento da curva de descarga C1 esperada. Quando o nível de tensão se aproxima do limiar do inversor e passa muito tempo lá, o inversor parece estar ficando confuso! Ele está gerando essa pequena explosão de ruído e, em seguida, faz algo para retornar a entrada para HIGH, ou simplesmente fica nesse estado barulhento "indeterminado" indefinidamente até que a saída do sensor fique ALTA novamente b / c de movimento (Exemplo # 1).

Para testar essa teoria, substituí C1 por uma tampa 10 vezes menor, tornando a curva de descarga muito mais íngreme e "voila!" - o inversor não está mais ficando confuso e o circuito funciona!

Obviamente, isso derrota o propósito de C1, já que agora não está fornecendo tanto atraso quanto eu quero. Não sei por que não tive esse problema com o inversor na placa de ensaio, mas sugere que poderia haver uma solução muito fácil que possa resolver esse problema. Eu li que as tábuas de pão têm uma grande capacitância "perdida", então talvez eu só precise adicionar estrategicamente mais capacitores em algum lugar? Alguma ideia?

EDIT 2: Fornecendo uma vista superior, já que alguns comentaristas solicitaram: insira a descrição da imagem aqui

Val Blant
fonte
Bananas sagradas, essas juntas de solda parecem terríveis . Você precisa desesperadamente de algum fluxo lá.
perfil completo de Connor Wolf
@ Connor Wolf: Você está se referindo aos pinos do IC que não estão conectados a nada? Aqueles quase não são soldados, porque não vi motivo para soldá-los. Ou você está falando sobre as outras juntas de solda?
Val Blant
Por que você está usando um inversor? Conecte a saída do sensor ao PB2 com um resistor em série de 220-470 ohms e você estará pronto. Você pode adicionar um resistor pull down, mas 10Meg é muito alto. Altere com 10k. Além disso, você não precisa conectar C1. Você pode fazer a filtragem no software com uma rotina simples de atraso. Além disso, C1 pode estar adicionando carga ao sensor para que, quando o IC do inversor estiver conectado, a carga seja excessiva que o sensor não possa acionar, talvez?
Abdullah kahraman
Eu verifiquei agora e o sensor pode fornecer uma saída máxima de 100uA! O inversor exige cerca de 1mA de corrente de entrada! Portanto, o resistor pull-down acima sugerido, que é 10k, é demais. Mudá-lo com um 330k ou 470k
Abdullah kahraman
@abdullah kahraman: Sinto muito - não entendo sua ideia. INT0 no attiny é acionado na transição para LOW, portanto, "nenhum movimento" deve ser representado pela entrada HIGH. Isso não está certo? Você poderia explicar sua idéia com mais detalhes?
Val Blant

Respostas:

7

EDIT - por causa da minha interpretação incorreta do circuito, estou editando a resposta para focar na saída do sensor - você está usando a saída analógica para alimentar o inversor - se estiver, talvez deva tentar um gatilho Schmitt como um 74HC14

Andy aka
fonte
11
@ValBlant Eu não sou especialista no cara ATtiny - se você estabeleceu, tem que ser essa polaridade do que é - quais são os níveis de sinal de entrada no inversor - você poderia, mas não aplicaria níveis lógicos adequados - também poderia precisar um inversor de gatilho schmidtt como 74HC14?
Andy aka
11
Talvez se você remover a tampa e ver como é a aparência, se necessário, você pode fazer algo no código ATtiny que mantém o circuito ativo entre os transientes? Você colocou um desacoplador de 10n no inversor, como sugerido por alguém anteriormente?
Andy aka
11
Eu acho que você precisará de um gatilho Schmitt - eles podem lidar com tempos de subida e subidas analógicos desleixados - é isso que eles devem fazer. Talvez o seu circuito original tenha funcionado por causa de um acaso, embora sempre haja uma boa razão!
Andy aka
11
@ValBlant Observe a especificação "tempo de subida e descida da entrada" na folha de dados do TC74HC04 - que especifica os sinais de entrada mais lentos recomendados (tempos de subida / queda de 500ns em Vcc = 4,5V). É uma especificação fácil de perder, especialmente porque a folha de dados da Toshiba não especifica explicitamente o máximo.
21713 Chris Johnson
11
Usar um inversor com um gatilho Schmitt resolveu meu problema.
Val Blant
11

Sem estudar seu circuito detalhadamente, o óbvio é que você não tem capacitores de desacoplamento.

Solde um nos pinos de alimentação de cada chip.

Além disso, o comentário 'esfregar faz com que funcione' sugere que você tem uma junta seca ou uma conexão intermitente em algum lugar. Inspecione toda a sua solda com cuidado.

Com relação ao exagero de um chip DIL, você poderia ter usado apenas um transistor e colocar o atraso no software.

Buzby
fonte
ok, acabei de ler sobre o que são capacitores de desacoplamento. Estou surpreso por precisar de algo assim para alimentar um inversor, que não é um dispositivo de alta velocidade, mas com certeza vou tentar. A maioria das fontes sugere uma tampa de 0,1uF de cerâmica nos pinos de alimentação do IC. Não tenho tampas de cerâmica nessa faixa, mas tenho alguns eletrolíticos. Isso funcionará ou preciso absolutamente de uma cerâmica para isso?
Val Blant
No que diz respeito ao inversor, comecei com um transistor a princípio, mas depois percebi que um inversor de transistor consome muita energia quando está aberto. Meu circuito deve funcionar em torno de 60uA (quando não está transmitindo), o que eu não consegui alcançar com um transistor, mas o inversor IC parecia fazer o trabalho.
achou
Apenas experimentei eletrolíticos de 0,1uF e 1uF como tampas de desacoplamento sem nenhuma alteração. No entanto, descobri algo interessante que acho que pode ser uma dica. Vou atualizar o post principal com as novas informações.
achou
3

Sua principal preocupação parece estar reduzindo o consumo de energia.

O AMN42121 consome cerca de 50uA continuamente. O 74HC04 consome cerca de 20uA continuamente. O ATTINY85 consome cerca de 300uA intermitentemente, quando acordado. O rádio usará miliamperes quando transmitir.

Com que frequência o sensor será acionado? Você fez algum cálculo de energia para estimar a vida útil da bateria?

Sugiro que você descarte o inversor e o capacitor de "desaceleração", conecte o sensor diretamente ao MCU com um pulldown de 10K de acordo com a folha de dados do sensor e escreva a lógica de atraso no MCU.

[EDIT] Embora você tenha entendido um pouco errado, fico feliz em ver que você está testando seu circuito em um estágio de cada vez. É muito mais fácil do que tentar encontrar um projeto concluído com falha.

Buzby
fonte
11
Também não vejo a necessidade de um inversor. O AVR possui interrupções de alteração de pinos PCI além do INT0 / 1. O PCI detecta uma alteração no estado do pino, seja ALTO ou BAIXO. Você pode acionar isso e adicionar código de devolução.
Lyndon
Eu acho que 74HC04 consome muito mais do que isso.
Abdullah kahraman
Fazer um cálculo detalhado da duração da bateria e algumas análises de algoritmos do código no meu uC mostra que vocês estão certos - não estou ganhando muito ao usar o inversor em vez da interrupção Pin Change. Se eu fizesse de novo, faria como você sugere. No entanto, minha vida útil da bateria no circuito atual será de 270 dias no pior dos casos, então acho que vou deixar o design como está, usar um gatilho Schmitt no meu inversor e seguir para o próximo projeto. Obrigado a todos!
Val Blant