¿Usa el interruptor SPST como entrada digital?

10

Soy nuevo en "ingeniería eléctrica" ​​y estoy trabajando en un pequeño proyecto arduino. Quiero que se use un interruptor SPST como entrada digital en la placa.

Tengo uno de los cables del interruptor conectado a posative y el otro conectado a la entrada digital. El problema con esto es que cuando lo apago no puedo estar seguro de que la entrada estará conectada a tierra. ¿Cómo puedo asegurarme de que la entrada esté conectada a tierra cuando el interruptor está apagado?

¿Funcionaría si conectara la entrada digital a una resistencia que está conectada a tierra, de modo que cuando el interruptor esté apagado se conectará a tierra, pero cuando el interruptor esté encendido no se cortocircuitaría? ¿Funcionaría?

Bob Esponja
fuente

Respuestas:

9

La solución más convencional sería conectar un lado del interruptor a tierra. Conecte el otro a la entrada digital, y también a una resistencia entre 1 y 10 K ohmios que vaya al suministro positivo.

Ir hacia el otro lado, con una resistencia desplegable como describe Bruno, es posible pero menos preferido. Muchas entradas ya tienen un grado de pull-up implícito y leerán un '1' si no están conectadas, aunque no de manera confiable. Pero si su interruptor ya está conectado al riel positivo, entonces un pull down es una buena solución, aunque muchos prefieren usar una pequeña resistencia al conectar las entradas lógicas al riel positivo.

Muchos microcontroladores también tienen resistencias internas de pull-up y / o pull-down en los pines GPIO que se pueden habilitar escribiendo en un registro de configuración. Si está manejando una entrada de un microcontrolador de este tipo, es posible que no necesite una resistencia externa de extracción / elevación, aunque no todos los microcontroladores cuentan con estos.

Chris Stratton
fuente
44
Además, si está utilizando un uC con pull-ups o pull-ups incorporados, es una buena práctica habilitarlos en pines que no se utilizan para mantenerlos en un estado conocido.
Matt Young
En realidad, es más fácil para mi proyecto conectar el interruptor a tierra. Así que intentaré usar una resistencia pull-up. ¡Gracias!
Bob Esponja
2
¡Excelente! Vuelve cuando quieras preguntarnos sobre "cambio de rebote" :)
gbarry
Resulta que Arduino hará pullup automáticamente. No estoy seguro de cómo, pero en el código hay un "INPUT_PULLUP" digital y ni siquiera necesito una resistencia. Eso fue fácil. Además, sobre el rebote del interruptor, lo noté cuando estaba monitoreando la salida en serie. Así que acabo de agregar un retraso de 3 ms en el código. Me ahorró otro viaje a la tienda. :)
Bob Esponja
Si navega por la hoja de datos ATMEGA, verá que hay un bit que se puede escribir en un registro de configuración para habilitar la extracción. Las bibliotecas Arduino lo están haciendo más conveniente. Para el rebote, ignorar (esa) entrada durante un tiempo es un curso habitual, aunque 3 ms puede ser un poco corto. Si el retraso bloquea todo su sistema, es posible que deba mantenerlo corto, si solo ignora esa entrada, puede hacerlo un poco más, ya que las reactivaciones intencionales serían aún más lentas.
Chris Stratton
9

Sí, funcionaría como lo describiste. Eso se llama resistencia desplegable porque asegura que cuando el contacto está abierto, la entrada digital está en el estado lógico 0 (bajo). Por lo general, puede usar una resistencia de 10 KΩ para este propósito.

Bruno Ferreira
fuente
2

Eso funcionará y le dará una lógica positiva: un alto nivel (lógica "1") cuando el interruptor está cerrado.

Pero, como dice Chris, lo invertido es más común: un interruptor conectado a tierra y una resistencia pull-up (en lugar de pull-down) a la fuente de alimentación. Su lógica se invertirá: un "1" lógico se corresponderá con un interruptor abierto.

Una buena razón para la versión pull-up es que la mayoría de los microcontroladores los tienen integrados, y puede habilitarlos / deshabilitarlos según sus necesidades. Algunos microcontroladores también tienen desplegables configurables, pero estos son menos comunes.

Si desea un pull-up externo, 10 kΩ puede ser un buen valor. La entrada de un microcontrolador puede tener una corriente de fuga de hasta 1 µA, y luego 10 kΩ dejará caer 10 mV insignificantes. Los valores más bajos son ciertamente posibles, pero tenga en cuenta que tendrán una corriente mayor a tierra cuando el interruptor esté cerrado. Una resistencia de 1 kΩ consumirá 5 mA a 5 V de suministro, lo que es realmente un desperdicio de energía. Para los 10 kΩ son solo 500 µA. Para aplicaciones de muy baja potencia, puede aumentar el valor a 100 kΩ, pero recuerde la corriente de fuga; ¡1 µA dará una caída de 100 mV!

stevenvh
fuente