Tengo una aplicación en la que un botón pulsador y un codificador giratorio de código gris mecánico (entradas de usuario) deben montarse lejos de la placa de circuito impreso principal. 24" - 48" de distancia. Esto es por razones de espacio y embalaje.
¿Está bien tener el circuito RC antirrebote en la PCB y los interruptores/codificador conectados de forma remota a través de un cable, o es necesario que el circuito antirrebote esté con los interruptores?
Circuito codificador de la hoja de datos:
El antirrebote (y cualquier filtrado de ruido, circuitos de protección ESD) debe estar en la PCB principal.
Los interruptores en sí mismos no necesitan nada local, ni sería óptimo tener circuitos adicionales allí.
Editar: si el codificador de código Gray está activo (óptico o magnético), algunos circuitos remotos podrían ser útiles, sin duda, derivación de suministro, tal vez algunas resistencias en serie en las salidas, tal vez incluso un regulador de suministro local.
Como mencionó "aplicación", supondré que está ejecutando un código aquí que monitorea los botones y contactos. Si ese es el caso, puedo decirle desde mi experiencia que es mejor hacer su eliminación de rebotes mediante programación. Considere desarrollar una función a la que llame de vez en cuando para verificar si hay pulsaciones de botones. Sin profundizar en ningún lenguaje en particular, lo que haría la función es esto...
Eso es todo lo que hay también. No solo se ha ahorrado al menos 2 componentes por botón (la red RC), y ha creado efectivamente un filtro de "pared de ladrillos", mucho más preciso y consistente de lo que sería la red RC. Además, ha hecho que sea muy fácil cambiar el importante tiempo de rebote sin desoldar las piezas.
Una nota sobre esta metodología, también es posible llamar a una función similar por interrupción en lugar de llamarla como parte de una secuencia de turnos rotativos en el bucle de su programa principal. En mi opinión, esta NO es una buena idea, porque un contacto ruidoso defectuoso generaría muchas interrupciones que podrían atascar fácilmente su programa. Por lo general, en sistemas más grandes donde una interrupción en realidad informa pulsaciones de botones (como una interrupción de teclado en una computadora), las pulsaciones de botones ya han sido preprocesadas por una pequeña MCU dedicada en el propio teclado. Si lo está haciendo en un sistema más pequeño y haciendo TODO el rebote usted mismo, el método que sugiero es una mejor opción.
Si es mejor manejar el rebote de botones mediante programación, en hardware o una combinación de ambos, depende de la naturaleza del rebote. Algunos tipos de botones tienen una resistencia que puede cambiar erráticamente a medida que se presionan; si se empujan lentamente, este período errático puede extenderse en una fracción sustancial de segundo. Si un procesador puede distinguir entre una resistencia baja, una resistencia alta y un circuito abierto, ignorar las pulsaciones de botones hasta que se detecte una resistencia baja e ignorar las liberaciones hasta que se detecte un circuito abierto funcionará bien. Sin embargo, si un procesador no puede hacer tales distinciones, puede haber un límite en la cantidad de software que se puede hacer sin hardware adicional.
El enfoque más sólido en muchos casos es diseñar un sistema con contactos normalmente abiertos y normalmente cerrados; un enfoque de este tipo puede producir una corriente de reposo cercana a cero tanto en el estado de botón presionado como en el de botón no presionado, mientras que sufre prácticamente cero rebotes de cualquier forma. No veo ningún impedimento técnico para diseñar un codificador rotatorio con una funcionalidad similar, pero no conozco ningún codificador de este tipo que exista.
gismofx
Spehro Pefhany
gismofx
Spehro Pefhany
gismofx