Uno de mis colegas está diseñando un reloj digital con pantallas de 7 segmentos. La función del reloj recae en un circuito integrado de Reloj en Tiempo Real, PCF8563.
El CI de RTC funciona con un cristal de 32.768kHz y sus capacitores externos (un capacitor es fijo y el otro es un ajustador para el ajuste de frecuencia). El ajuste se garantiza midiendo la función de salida de 1Hz (frecuencia de prueba) del CI de RTC usando un contador/frecuencímetro de precisión. Por cierto, el protocolo de comunicación entre el MCU y el CI de RTC es I²C con una velocidad de 400kHz.
En lugar de utilizar módulos de pantalla de 7 segmentos (como este), decidió utilizar LEDs SMD de carcasa 0603 discretos para lograr el efecto de pantalla de 7 segmentos (esto es importante) y para ser más económico. Colocó estos LEDs en un lado de la PCB, mientras que el otro lado está lleno de otros componentes (es decir, regulador, MCU, batería de respaldo, CI de controladores, etc). La PCB está hecha de material FR4 de 1.6mm de espesor.
PROBLEMA
Las pantallas se multiplexan con una frecuencia de 100Hz (mínimo). Antes de que los LEDs se enciendan, la frecuencia de prueba medida a partir de la salida del CI de RTC se puede ajustar a 1.00000Hz. Sin embargo, una vez que el MCU comienza a multiplexar los LEDs, la frecuencia de prueba cambia a 1.5Hz o incluso 2.5Hz y se mantiene inestable.
PRUEBAS Y ERRORES
Poner a tierra la caja metálica externa del cristal, añadir áreas de tierra, ajustar la frecuencia de multiplexación no funcionó. Es bastante interesante que el uso de módulos de pantalla de 7 segmentos o separar el CI de RTC y sus componentes externos (es decir, cristal y capacitores) a otra PCB no causa ningún problema.
PREGUNTA
A pesar de que el uso de una PCB separada para el bloque de RTC o el uso de módulos de pantalla de 7 segmentos resuelve todos los problemas, está limitado a utilizar solo una PCB que albergue todos los componentes. Entonces, ¿qué puede estar causando este problema de cambio de frecuencia? ¿Qué se debe hacer para solucionarlo?