Problema de lectura de botón falso

Tengo un PCB principal y 3 tableros de botones. Puedes ver la conexión en la parte inferior de mi feo boceto de pintura. Cada botonera tiene 2 pulsadores y un LED de encendido. Uno de los botones cambia a GND y el otro cambia a 24V. Las señales de encendido y botón van juntas con un cable CAT6.

Esquema de pintura fea

El PCB principal incluye un microcontrolador PIC.

Circuito de entrada de PCB principal para botones aquí:

ingrese la descripción de la imagen aquí

TS para pulsadores de conmutación GND, ST para pulsadores de conmutación de 24V. Al lado derecho hay un ULN2003 conectado al microcontrolador con pull-ups.

Botones

Probé el circuito con un cable corto y funcionó. Cuando probé con cables más largos, a veces falla.

El PCB principal lee un botón presionado sin que se presione el botón.

También traté de agregar resistencias desplegables en el lado de entrada de la PCB principal de los botones de conmutación de 24V. Es una mayor precisión, pero a veces todavía falla.

Puedo cambiar muy poco el PCB principal (como agregar resistencias pull-up, pull-down) pero no mucho. Soy libre de hacer cambios en los botones.

Puede ser un problema básico, pero no pude resolverlo. Estoy abierto a cualquier solución para que los botones funcionen correctamente.

Editar: Sé que hay poca información, pero no puedo encontrar la causa del problema.

"a veces falla" no es un informe suficiente en un contexto de ingeniería
No hay mucho que podamos sugerir con esa descripción. Podría ser una mala conexión en el cable en cualquiera de los extremos o un interruptor defectuoso. Puede controlar el voltaje durante la pulsación de un botón para ver si ocurre algo extraño cuando falla la pulsación del botón, esto podría sugerir un problema potencial en otro lugar.
Tome oscilogramas de pulsaciones de botones, vea si puede identificar un patrón con los que no funcionan. Agregue eso a esta pregunta y podremos ayudar más.
Su problema puede ser un problema de software. Como han dicho otros, deberá usar un alcance y monitorear la salida de cada botón donde ingresa al microcontrolador. Si eso se ve bien, entonces puede descartar un problema de hardware. Entonces tendrás que examinar el código.
Piensa en lo que sucede en t 0 entre C1 y C21-26 cuando se presiona cualquier botón: estos capacitores se cortocircuitan y fluye una gran corriente a través del cable durante un período de tiempo muy corto, lo que probablemente induce voltajes en otros cables y se lee como falsas pulsaciones de teclas. Movería C21-26 después de R20-26 y reduciría mucho su valor.
Tiene un "Problema de lectura de botón falso" en el título de su pregunta.
@Transistor: Eso fue mi culpa. Hice un error tipográfico mientras arreglaba otros errores tipográficos.

Respuestas (1)

Necesita resistencias desplegables en sus líneas ST.

Sus botones cambian entre abierto y 24V.

El ULN2003 está hecho de pares de transistores Darlington. Se necesita muy poca corriente para hacerlos cambiar. Cualquier corriente parásita inducida en las líneas ST cuando los botones están abiertos hará que el ULN2003 cambie su salida a alta.

Probaría resistencias de 10k en las líneas ST, preferiblemente en la PCB principal.

Una vez que solucione eso, es posible que desee buscar el software antirrebote para todas sus entradas.