Fundamentos del hardware: cómo funcionan las resistencias pull-down y pull-up

Si alguna vez ha conectado un botón a un Arduino, se ha encontrado con este diagrama:

Al principio, esto puede resultar confuso. Mis primeros pensamientos: “¿Por qué necesito una resistencia? Solo quiero que me diga si se está presionando el botón ".

Después de mucha lectura, no hubo una explicación simple.

Que está pasando aqui

En ese botón, también conocido como interruptor, los cables tienen la forma de una "H". Pero el medio no está conectado, o el circuito no está conectado, hasta que presionamos el botón.

En realidad, queremos leer del Arduino a 0cuando no hay nada conectado y a 1cuando se presiona el botón.

En Arduino, esto se llama Salida de entrada de propósito general (GPIO).

Entonces, podemos hacer algo como esto:

Conectamos positivo (5v, 3.3V o VCC) al lado izquierdo del circuito.

Ahora, cuando se presiona el botón, el GPIO leerá a 1, y todo está bien.

Bueno no. Echemos un vistazo al Diagrama 2 nuevamente:

Queríamos un 0cuando nada está conectado, pero ¿cómo puedes garantizarlo? Actualmente, no hay forma de garantizar el GPIO 0.

También hay frecuencias electromagnéticas en el aire que podrían atraer su GPIO hacia 0o 1. ¡Incluso podría fluctuar entre los dos! De esta manera, no podemos estar seguros de que es un 0(soy tan malo en los juegos de palabras). Esto también se conoce como lógica 0.

Una forma de obtener una lógica 0es atar el pin a tierra:

¡Hurra! Entonces, ahora es un cero lógico garantizado. Mientras presiona el botón, será 1ahora. ¿Correcto?

Bueno no.

Acabas de crear un cortocircuito. ?

Aquí es donde entra la resistencia. Para evitar un cortocircuito, necesitamos agregar resistencia a nuestro circuito. La resistencia mantiene las cosas bajo control.

La electricidad tomará el camino de menor resistencia. Su GPIO ahora registrará un 1cuando se presione el botón. Al igual que:

¡Woo Hoo! Ahora estamos trabajando con algo.

Ahora veamos lo contrario: resistencias pull-up. Es lo mismo pero al revés. Mientras no se presione el botón, el GPIO registrará un 1. Cuando presionó el botón, el GPIO será 0.

Mientras no esté pulsado, tenemos el GPIO conectado a positivo (VCC). Por lo tanto, cualquier corriente que exista se activará para que GPIO registre un archivo 1.

Es importante señalar aquí que la electricidad siempre quiere ir a tierra. Entonces, cuando presionamos el botón, la corriente que fluye fluirá a tierra. Por lo tanto, cualquier corriente que hubiera ido al GPIO va con él, dejando al GPIO en un nivel lógico 0.

? El fin.

¿Por qué escribí esto?

Me uní a Losant en septiembre de 2016 sin experiencia en hardware. Cada kit básico de hardware le ofrece un botón sin explicación de este concepto. Con suerte, esto también ayudará a que se apague la bombilla. ?

Esto solo arañó la superficie. Si desea profundizar, consulte estos recursos:

Resistencias pull-up - learn.sparkfun.com

Otra cosa a destacar es que cuanto mayor sea la resistencia para el pull-up, más lento será el pin para responder a… learn.sparkfun.com

Me encanta la retroalimentación. Por favor, avíseme si esto podría mejorarse. Si me equivoqué por completo en esto, ¡avísame! Me encantaría hacerlo mejor para los demás.