Por lo general, para no entrar en un estado de indeterminación, los microcontroladores necesitan tener una referencia de tensión constante en sus entradas digitales activas, ya sea estado alto o bajo (3,3V ó 0V, por ejemplo). Esto nos da distinto tipo de entradas con cableados y comportamientos diferentes.
Si ya conoces esta cuestión, puedes saltar directamente al apartado 1.2.
Tipos de conexiones para las entradas digitales
Hay que recordar que no es lo mismo cero voltios que nada. Nada no es ninguna tensión, y por tanto, el microcontrolador no puede comparar su lectura con nada. Si pasa esto, las lecturas de las entradas fluctúan de forma aleatoria, generando multitud de errores.
Para evitar esta circunstancia se conecta en paralelo a la entrada digital una resistencia que obliga a tener siempre una señal de tensión sin que esto pueda provocar un cortocircuito.
Estas resistencias, denominadas Pull Up o Pull Down en función del esquema eléctrico realizado, pueden colocarse externamente o pueden encontrarse dentro del propio microcontrolador. En el segundo caso, por código podemos conectarlas o desconectarlas, obteniendo entradas con diferentes características. A continuación se explica mediante esquemas, pero además, en este vídeo se explican eléctricamente las diferentes opciones.
Para comprender los siguientes esquemas, se ha de tener en cuenta que todo lo que está dentro del rectángulo naranja simboliza el interior del microcontrolador. Las resistencias de 45 kOhm y los “interruptores” que están en serie con ellas, se encuentran dentro del micro. La de 10 kOhm la conectamos fuera.
- Si utilizamos INPUT (columna 1 de la tabla), estamos indicando que vamos a colocar una resistencia externa, por tanto no se activarán las resistencias internas. El comportamiento de la entrada dependerá de cómo coloquemos dichas resistencias.
- Resistencia externa pull down:
Si no presionamos el interruptor tenemos una lectura de 0V (estado bajo). Y si lo presionamos, tenemos un estado alto. Se puede observar cómo circula corriente por la resistencia de 10k en el segundo caso.
-
- Resistencia externa pull up:
Tenemos el comportamiento contrario. Si no se acciona el interruptor entra en el pin un estado alto de activación (3,3V). Cuando se activa, se detecta estado bajo. Esta conexión presenta un comportamiento similar al que tenemos cuando usamos un pulsador NC en electricidad.
Ahora lo que haremos será realizar los mismos dos circuitos anteriores pero activando resistencias internas del microcontrolador, lo que nos ahorra instalarlas externamente, simplificando el cableado.
- Si usamos el comando INPUT_PULLDOWN estamos conectando con la entrada digital una resistencia interna de 45 kOhm que va a 0V. Esto hará que obtengamos estados altos cuando metamos señales externas de 3,3V y estados bajos cuando no metamos nada. Estamos activando por código un circuito interno que queda igual que el circuito
- Si usamos el comando INPUT_PULLUP se está conectando con la entrada digital una resistencia interna con 3,3V, lo que provoca que se detecte un estado alto cuando no metamos nada al pin, y estado bajo cuando metamos 0V. No obtendremos ninguna lectura si metemos 3,3V desde fuera del pin. Queda el mismo circuito elaborado de forma externa en 1.2.