Este problema tiene décadas de antigüedad, pero no veo una respuesta directa en este sitio. quiero lo siguiente:
Este circuito solo permite comprobar el estado del botón desde el interior del microcontrolador. Nada sofisticado. Mis preguntas:
Primero, muchos microcontroladores y controladores de señales digitales tendrán resistencias pull-up internas. Aquí hay un ejemplo, un Atmel ATMega164.
Por lo general, habrá un registro que permita activar y desactivar los pull ups internos. Debido a las variaciones en el proceso de fabricación, estos pullups internos vienen en una gama muy amplia y no son una buena opción si necesita un control muy estricto sobre el consumo de corriente en aplicaciones de potencia ultra baja. Si mantener bajo el número de componentes es importante, esta es una manera fácil de hacerlo. Usar pull ups internos para el rebote del hardware no sería una buena idea, ya que no es posible predecir su valor exacto.
Ya sea el 100 el valor es adecuado depende. Si es solo un interruptor que un usuario activará periódicamente, entonces 100 sería una buena opción para minimizar el consumo de energía. Para las cosas que van a cambiar más rápidamente, como los codificadores rotatorios, el proceso por el que pasaría es
Entonces, si la corriente de sumidero máxima por pin GPIO fuera de 10 mA y operando a 5V: . Mantener este valor R lo más pequeño posible permitirá los bordes más nítidos y las frecuencias de conmutación más altas.
Puedes ser más simple que eso.
Simplemente use una resistencia interna pull-up/pull-down en su microcontrolador.
100k es adecuado, pero los pullups internos podrían ser un poco más bajos en algunas MCU, por ejemplo, en AVR atmega8 son 30-80kOhm para reset pull-up y 20-50kOhm para todos los demás pines de E/S.
Mejor no se puede responder sin criterios específicos para medir, que no ha proporcionado. En la mayoría de los casos, la topología que muestra está bien. Dos variaciones pueden ser "mejores" dependiendo de la situación:
Muchos microcontroladores tienen pullups internos en algunos de sus pines. Estos están destinados exactamente para este tipo de situación. La resistencia es entonces interna al micro y configura un poco en algún lugar para habilitarlo. La única parte externa requerida es solo el botón pulsador.
Otra variante útil a tener en cuenta es para diseños de baja potencia en los que el botón puede ser un interruptor que se puede cerrar durante largos períodos de tiempo. En ese caso, desea minimizar la corriente promedio a largo plazo a través de la resistencia pullup. Lo haces lo más grande posible, pero hay límites y desventajas por hacerlo demasiado grande. En su lugar, enciende el pull-up durante unos pocos µs a la vez para tomar una lectura de botón. Si comprueba el botón cada 1 ms y el pullup está activado durante 10 µs, la corriente de pullup promedio se reduce 100 veces. Con una resistencia externa, usa otro pin para impulsar el lado superior del pullup. Con un pullup interno, lo habilita/deshabilita en el firmware según sea necesario.
Ya he respondido esto extensamente aquí .
¿Mejor que ese diseño simple? Sí. Ponga una tapa en él y tendrá un interruptor de rebote de hardware simple.
El condensador sería una tapa de cerámica común de 0,1 uf. La resistencia sería de 10k. Este sitio tiene todos los detalles sobre por qué. En resumen, un circuito de rebote evita que el microcontrolador registre falsamente múltiples pulsaciones cuando presiona el botón. La configuración de resistencia/condensador suaviza el rebote mecánico del botón para que sea una transición constante.
EDITAR: el comentario que hice a continuación tenía la intención de hacer un seguimiento de lo que Olin había dicho más tarde sobre el circuito con un condensador para supuestamente agregar rebote. Lo siento, parece que aparece en el lugar equivocado. ¡Tal vez alguien pueda arreglar esto porque obviamente soy demasiado ciego o estúpido para ver cómo debería haberlo hecho!
Estoy de acuerdo con Olin: no proporciona un buen rebote. También agregaría que hacer un cortocircuito en el capacitor puede causar un gran aumento de corriente que puede reiniciar el microprocesador si el diseño de PCB no es realmente bueno. Algunos interruptores necesitan una corriente de humectación para funcionar de manera correcta y confiable y 100k puede ser demasiado alto para algunos interruptores (especialmente los interruptores de membrana).
NickHalden