Cableado del interruptor de láminas

Estoy tratando de conectar un interruptor de lengüeta simple a mi Raspberry para verificar si mi puerta está abierta o no. Encontré muchos tutoriales en línea, pero todos sus esquemas se comportan de manera diferente, así que decidí crear uno yo mismo y verificar si parece razonable.

Mi primera prueba simplemente enciende un LED cuando el interruptor permite que fluya la corriente. Como mi LED es de 2V 20mA, una resistencia de (3.3-2)/0.02 = 65 Ohm debería ser suficiente, pero solo tengo 100 Ohm, debería estar bien ¿no?

ingrese la descripción de la imagen aquí

El siguiente paso es capturar el evento de cambio en el GPIO 5 escuchando una entrada de 3.3v.

Quiero que fluya una corriente máxima de 1 mA a través de mi pin, así que elijo una resistencia de alrededor de 3k Ohm. Di 5k para propósitos seguros.

ingrese la descripción de la imagen aquí

Aquí está el problema. En todos los ejemplos que encontré, la resistencia utilizada más común es 10k, y siempre es algo como esto:

ingrese la descripción de la imagen aquí

¿Por qué necesito una resistencia tan grande? ¿Y por qué debo conectar también a GND si mi GPIO recibe una cantidad razonable de voltaje y corriente (o 0 cuando el interruptor está apagado)?

Gracias de antemano.

Si no coloca una resistencia entre GND y GPIO, la entrada digital no será cero cuando el interruptor NO esté conectado, será de alta impedancia .

Respuestas (2)

Mi primera prueba simplemente enciende un LED cuando el interruptor permite que fluya la corriente. Como mi LED es de 2V 20mA, una resistencia de (3.3-2)/0.02 = 65 Ohm debería ser suficiente, pero solo tengo 100 Ohm, debería estar bien ¿no?

Eso estará bien.

El siguiente paso es capturar el evento de cambio en el GPIO 5 escuchando una entrada de 3.3v. Quiero que fluya una corriente máxima de 1 mA a través de mi pin, así que elijo una resistencia de alrededor de 3 k-ohm. Di 5k para propósitos seguros.

Te estás confundiendo en este punto.

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 1. Una entrada típica de microcontrolador con resistencia pull-up interna opcional.

La impedancia de entrada (resistencia) de un pin GPIO es muy alta. Si lo conecta al V +, podría consumir un par de microamperios incluso sin resistencia presente. Esto lo hace muy sensible a los voltajes perdidos o a los campos electromagnéticos y, si no se aborda, puede resultar en un encendido y apagado aleatorio de la entrada. La forma de resolverlo es agregar una resistencia pull-up o pull-down de resistencia suficientemente baja para hacer el trabajo. 10k suele ser un buen equilibrio entre ser lo suficientemente bajo y no tan bajo como para desperdiciar energía al aumentar la corriente a través de él.

La necesidad de pull-ups es tan común que la mayoría de los fabricantes los incluyen internamente con una opción de configuración para habilitarlos.

En su tercer diagrama, tiene el interruptor en el "lado alto", lo que significa que necesita una resistencia desplegable. Si el chip no tiene un menú desplegable interno, deberá agregar uno externo. 10k debería estar bien.

Por ejemplo, en la imagen 3, el GPIO ha configurado un resistor pull-up y cuando el interruptor está apagado, el GPIO generará la corriente 5V/10k=0.5mA y leerá como 0 lógico. Cuando el interruptor está encendido, el potencial de GPIO será de 5 V, por lo tanto, no fluirá corriente, el GPIO leerá un 1 lógico.
La imagen 2 representa lo mismo con la resistencia desplegable de GPIO habilitada (si existe). Una regla básica es que un GPIO no debe tener un cable flotante que actúe como antena, por lo que siempre debe "conectar" una resistencia pull-up o pull-down.
El ejemplo en la imagen 1 no es posible debido a la corriente excesiva que MCU tendría que hundir.

esquemático

simular este circuito : esquema creado con CircuitLab

Así es como se conecta el interruptor y el LED a la MCU. Habilite también la resistencia desplegable para una mejor supresión del ruido.

Entonces, ¿debería actualizar la resistencia? Calculé ese valor para la caída de voltaje del LED, ¿cómo debo calcularlo entonces?
¿Y podrías explicar un poco más esto? "La imagen 2 representa lo mismo con la resistencia desplegable de GPIO habilitada (si existe)".
@lateralus Debe definir el potencial adecuado para GPIO cuando el interruptor está apagado. Esto se hace con resistencias pull up/down incorporadas (si su MCU tiene esta posibilidad) o agregando una resistencia externa. El ejemplo 3 ya tiene una resistencia externa, por lo que no es necesario subir/bajar. Ejemplo 2, cuando el interruptor está apagado, el GPIO está flotando, por lo que no tiene un estado definido. Leerá 0 o 1 cualquier ruido que capte.