El circuito funciona en la placa de pruebas pero no en la PCB

9

Tengo un circuito bastante simple que funciona perfectamente en la placa de pruebas, pero tengo muchos problemas para transferirlo a una PCB. Veo un comportamiento muy extraño que se encuentra fuera de mi experiencia actual, así que espero obtener algunos consejos.

El circuito implementa un sensor de movimiento wifi, aunque el problema que tengo ocurre mucho antes de llegar a la parte RF, o incluso a la parte uC del diagrama: ingrese la descripción de la imagen aquí

He marcado la parte que está teniendo problemas.

R3 es una resistencia pull-down, que se requiere b / c AMN42121 impulsa la salida HIGH cuando se detecta movimiento, pero la deja colgando sin movimiento, por lo que se necesita pull-down.

Usé C1 para suavizar la transición entre movimiento y sin movimiento. C1 hace que el nivel de salida vaya a BAJO lenta y suavemente, por lo que se alcanza el estado "sin movimiento" después de unos segundos sin movimiento.

El inversor está allí b / c Las interrupciones externas de Attiny se activan por un nivel BAJO, por lo que necesito invertir la lógica. Es lamentable que tuve que usar un paquete DIP tan grande para un inversor, pero no pude encontrar nada más.

He hecho una PCB de doble cara para este circuito, que se ve así: ingrese la descripción de la imagen aquí

De nuevo, solo he ensamblado el área circundada hasta ahora.

Después de soldar S1, R3 y C1, obtengo la siguiente señal de la salida del sensor: ingrese la descripción de la imagen aquí

Esto es exactamente lo que quiero ver, así que todo está bien hasta este punto.

Luego solde en un zócalo para IC2 y conecte el inversor. Aquí es donde comienzan los misterios. Al principio todo estaba bien, pero después de un rato de jugar con la placa, el circuito dejó de funcionar de repente. Cuando coloco una sonda en la salida del sensor, en lugar de la buena señal que vimos arriba, veo variaciones en los siguientes dos ejemplos:

Ejemplo 1: ingrese la descripción de la imagen aquí

Ejemplo 2 ingrese la descripción de la imagen aquí

Tenga en cuenta que, a diferencia del primer ejemplo, la señal en el segundo ejemplo no se genera por el movimiento; esa forma de diente de sierra simplemente emerge por sí misma sin ninguna acción mía.

Después de muchas pruebas, pude establecer lo siguiente:

  1. Desenchufar el inversor del zócalo hace que el sensor vuelva a funcionar correctamente.
  2. Cortar la energía al inversor mientras lo deja enchufado hace que el sensor funcione.
  3. Usar un inversor diferente no tiene ningún efecto.
  4. Empapar la placa con quitafuegos o acetona y fregar con un cepillo a veces hace que el sensor vuelva a funcionar, pero muy brevemente. En un momento pude hacer que la señal se viera así frotando agresivamente con un cepillo de dientes: ingrese la descripción de la imagen aquí

Tenga en cuenta que incluso en esta última imagen, la señal no regresa a nivel BAJO en todo momento. El efecto desapareció casi tan pronto como dejé de cepillarme.

Hasta ahora, esto apunta a algún defecto de soldadura, excepto que realmente no puedo ver el problema. He revisado el tablero con cuidado con una magnífica ampliación y probé la continuidad de todos los puntos que se me ocurrieron: todo funciona. Aquí hay un primer plano del trabajo de soldadura en el zócalo IC y el sensor: ingrese la descripción de la imagen aquí

Ya no tengo ideas, por lo que cualquier consejo sería muy apreciado. Gracias.

EDITAR:

Acabo de descubrir algo interesante. Un examen más detallado del ejemplo # 2 (la señal de la forma del diente de sierra) revela que la pendiente descendente es un segmento de la curva de descarga de C1 esperada. Cuando el nivel de voltaje se acerca al umbral del inversor y pasa demasiado tiempo allí, ¡el inversor parece estar confundido! Está generando ese pequeño estallido de ruido y luego hace algo para devolver la entrada a ALTO, o simplemente se queda en ese estado ruidoso "indeterminado" indefinidamente hasta que la salida del sensor vuelve a ALTO nuevamente b / c de movimiento (Ejemplo # 1).

Para probar esta teoría, reemplacé C1 con una tapa que es 10 veces más pequeña, haciendo que la curva de descarga sea mucho más empinada y "¡voilá!" - ¡el inversor ya no se confunde y el circuito funciona!

Por supuesto, esto anula el propósito de C1, ya que ahora no proporciona tanto retraso como yo quiero. No estoy seguro de por qué no tuve este problema con el inversor en la placa de pruebas, pero sugiere que podría haber una solución muy fácil que pueda solucionar este problema. Leí que las placas de pruebas tienen una gran capacitancia "parásita", así que ¿tal vez solo necesito agregar estratégicamente algunos capacitores más en alguna parte? ¿Algunas ideas?

EDITAR 2: Proporciona una vista superior ya que algunos comentaristas lo solicitaron: ingrese la descripción de la imagen aquí

Val Blant
fuente
Plátanos santos, esas juntas de soldadura se ven terribles . Necesitas desesperadamente un flujo allí.
Connor Wolf
@Connor Wolf: ¿Te refieres a los pines IC que no están conectados a nada? Esos están apenas soldados, b / c no vi ninguna razón para soldarlos. ¿O estás hablando de las otras juntas de soldadura?
Val Blant
¿Por qué estás usando un inversor? Conecte la salida del sensor a PB2 con una resistencia en serie de 220-470 ohmios y estará listo para comenzar. Puede agregar una resistencia desplegable, pero 10Meg es demasiado alta. Cámbialo con un 10k. Además, no necesita conectar C1. Puede filtrar en el software con una simple rutina de retraso. Además de eso, C1 puede estar agregando carga al sensor para que cuando el IC del inversor esté conectado, la carga sea demasiado que el sensor no pueda manejar, ¿tal vez?
Abdullah Kahraman
¡Lo he comprobado ahora y el sensor puede dar una salida máxima de 100uA! ¡El inversor requiere aproximadamente 1 mA de corriente de entrada! Entonces, la resistencia desplegable anterior que he sugerido, que es 10k, es demasiado. Cámbialo con 330k o 470k
abdullah kahraman
@abdullah kahraman: Lo siento, no entiendo tu idea. INT0 en attiny se activa en la transición a LOW, por lo que "no motion" debe representarse con la entrada HIGH ¿Eso no está bien? ¿Podría explicar su idea con más detalle?
Val Blant

Respuestas:

7

EDITAR: debido a mi interpretación errónea del circuito, estoy editando la respuesta para centrarme en la salida del sensor: ¿está utilizando la salida analógica para alimentar el inversor? Si es así, debería probar un disparador Schmitt como un 74HC14

Andy alias
fuente
1
@ValBlant No soy un experto en el tipo ATtiny, si has establecido que tiene que ser esa polaridad, entonces cuáles son los niveles de señal de entrada en el inversor, podrías pero no aplicar los niveles lógicos adecuados, también podrías necesitar Un inversor Schmidtt disparador como 74HC14?
Andy aka
1
Tal vez si quita la tapa y ve cómo se ve entonces, si es necesario, ¿puede hacer algo en el código ATtiny que mantenga vivo el circuito entre transitorios? ¿Puso un desacoplador de 10n en el inversor como sugirió alguien antes?
Andy aka
1
Creo que necesitará un gatillo Schmitt: pueden manejar tiempos de subida y caída lentos analógicos descuidados, eso es lo que están destinados a hacer. ¡Tal vez su circuito original funcionó debido a una casualidad, aunque siempre hay una buena razón!
Andy aka
1
@ValBlant Tenga en cuenta la especificación de "tiempo de subida y bajada de entrada" en la hoja de datos TC74HC04, que especifica las señales de entrada más lentas que se recomiendan (tiempos de subida / caída de 500 ns a Vcc = 4.5V). Esta es una especificación fácil de omitir, especialmente porque la hoja de datos de Toshiba no la especifica explícitamente como máxima.
Chris Johnson
1
Usar un inversor con un disparador Schmitt resolvió mi problema.
Val Blant el
11

Sin estudiar su circuito con gran detalle, lo obvio es que no tiene condensadores de desacoplamiento.

Suelde uno a través de los pines de alimentación de cada chip.

Además, su comentario de 'fregar hace que funcione' sugiere que tiene una articulación seca o una conexión intermitente en alguna parte. Inspeccione todas sus soldaduras con cuidado.

En cuanto a que un chip DIL es excesivo, podría haber usado un transistor y poner el tiempo de retraso en el software.

Buzby
fuente
ok, acabo de leer sobre los condensadores de desacoplamiento. Me sorprende que necesite algo así para alimentar un inversor, que no es un dispositivo de alta velocidad, pero definitivamente lo intentaré. La mayoría de las fuentes sugieren una tapa de cerámica de 0.1uF a través de los pines de alimentación del IC. No tengo ninguna tapa de cerámica en ese rango, pero tengo algunos electrolíticos. ¿Funcionará o necesito absolutamente una cerámica para esto?
Val Blant el
Con respecto al inversor, en realidad comencé con un transistor al principio, pero luego me di cuenta de que un inversor de transistor consume demasiada energía cuando está abierto. Mi circuito debe funcionar a alrededor de 60 uA (cuando no está transmitiendo), lo que no pude lograr con un transistor, pero el IC del inversor parecía hacer el trabajo.
Val Blant
Acabo de probar los electrolíticos de 0.1uF y 1uF como tapas de desacoplamiento sin ningún cambio. Sin embargo, descubrí algo interesante que creo que puede ser una pista. Actualizaré la publicación principal con la nueva información.
Val Blant
3

Su principal preocupación parece ser la reducción del consumo de energía.

El AMN42121 consume aproximadamente 50 uA de forma continua. El 74HC04 consume alrededor de 20uA continuamente. El ATTINY85 consume unos 300 uA de forma intermitente, al despertar. La radio usará miliamperios cuando transmita.

¿Con qué frecuencia se activará el sensor? ¿Has hecho algún cálculo de potencia para estimar la duración de la batería?

Le sugiero que descarte el inversor y el condensador de 'desaceleración', conecte el sensor directamente a la MCU con un pulldown de 10K según la hoja de datos del sensor y escriba la lógica de retardo de tiempo en la MCU.

[EDITAR] Aunque tienes las cosas un poco mal, me alegra ver que estás probando tu circuito etapa por etapa. Es mucho más fácil que tratar de encontrar un proyecto completo.

Buzby
fuente
1
Tampoco veo la necesidad de un inversor. El AVR tiene PCI - Interrupciones de cambio de pin además de INT0 / 1. PCI detecta un cambio en el estado del pin ya sea ALTO o BAJO. Puede activar eso y luego agregar un código antirrebote.
lyndon
Creo que 74HC04 consume mucho más que eso.
Abdullah Kahraman
Hacer un cálculo detallado de la duración de la batería y un análisis de algoritmo del código en mi uC muestra que ustedes tienen razón: no estoy ganando mucho al usar el inversor en lugar de la interrupción de cambio de pin. Si volviera a hacerlo, haría lo que sugieres. Sin embargo, la duración de la batería con el circuito actual será de 270 días en el peor de los casos, por lo que creo que dejaré el diseño tal como está, usaré un disparador Schmitt en mi inversor y pasaré al próximo proyecto. ¡Gracias a todos!
Val Blant