👥 Autores


Jesús Camarena

Tabla de contenido

🔸 Introducción


La lectura de valores digitales es una operación fundamental en las aplicaciones con microcontroladores, ya que permite interactuar con el mundo exterior. Los valores digitales se pueden leer desde sensores, interruptores, botones y otros dispositivos electrónicos, y se pueden utilizar para controlar luces, motores, relés y otros componentes. Para un correcto funcionamiento, es crucial configurar adecuadamente los pines de entrada y emplear resistencias pull-up o pull-down.

📘 Fundamento Teórico


La lectura de valores digitales es un concepto fundamental en el ámbito de la electrónica y la programación. Se refiere a la medición de un estado binario en un sistema electrónico. Un estado binario es aquel que puede tener solo dos valores posibles, como encendido/apagado, verdadero/falso, alto/bajo, etc.

En el contexto de los microcontroladores, la lectura de valores digitales es la medición del estado binario de los pines de entrada/salida digitales. Los pines digitales se pueden configurar para actuar como entradas o salidas y pueden tener solo dos valores posibles: HIGH (1) o LOW (0).

📖 Configuraciones para la lectura de botones


Los botones (también conocidos como pulsadores o interruptores) se pueden leer mediante la configuración de una entrada digital. Sin embargo, para que la lectura sea precisa y fiable, es importante utilizar resistencias de pull-up o pull-down para evitar que la entrada flote en un estado indeterminado.

📄 Valores TTL

En los circuitos lógicos TTL (Transistor-Transistor Logic), los valores lógicos 0 y 1 se determinan según los niveles de tensión de entrada:

Voltaje de Entrada (Vin) Nivel Lógico Definición
0V < 0.8V 0 Voltaje de entrada bajo (0)
0.8V ≤ Vin ≤ 2.0V Indeterminado (?) Zona de transición (ambigua)
Vin > 2.8V 1 Voltaje de entrada alto (1)

📄 Configuración con resistencia pull-down en un botón de no retención:

En esta configuración, se conecta una resistencia entre el pin de entrada digital y GND. El botón se conecta entre el pin y Vcc (+5V). Cuando se presiona el botón, el pin de entrada se conecta a Vcc, y se lee como HIGH (1). Cuando no se presiona, la resistencia pull-down conecta el pin a GND, leyéndose como LOW (0).

Push button MCU Voltage
0 (sin presionar) LOW (0) 0V
1 (presionado) HIGH (1) +5V

Untitled

📄 Configuración usando un led

La siguiente configuración presenta como conectar un botón utilizando un LED para observar si el botón se encuentra presionado o no

Untitled

$$ Vsource = Vled + Vres $$

$$ Punto de lectura = Vres - Vled $$

$$ Vres - Vled < 0.8V = LOW $$

$$ 0.8V ≤ Vres - Vled ≤ 2.8V < 0.8V = Desconocido $$

$$ Vres - Vled > 2.8V = HIGH $$

📄 Configuración con resistencia pull-up en un botón de no retención: :

En esta configuración, se conecta una resistencia de valor alto entre el pin de entrada digital y Vcc.

El botón se conecta entre el pin de entrada digital y GND (tierra). Cuando se presiona el botón, se cierra el circuito y se establece una conexión a tierra, lo que hace que el pin de entrada digital se lea como un valor lógico 0. Cuando el botón no se presiona, la resistencia de pull-up mantiene el pin de entrada digital en un estado de alta impedancia, lo que hace que el pin se lea como un valor lógico 1.

image.png

Push button MCU Voltaje
0 (sin presionar) HIGH (1) +5V
1 (presionado) LOW (0) 0V

📄 Configuración de RESET

La configuración del circuito de RESET en microcontroladores es crítica para garantizar un reinicio limpio del sistema. Se recomienda el uso de un capacitor de desacoplo y una resistencia pull-up adecuada para este propósito. Puedes consultar más detalles en la Nota de Aplicación de Atmel sobre EMC.

Untitled

Untitled

📄 Configuración activando la resistencia pull - up internas del MCU

Algunos microcontroladores permiten habilitar resistencias pull-up internas mediante software. Estas resistencias internas son de valor elevado (20kΩ a 50kΩ) y se activan para mantener el pin en HIGH (1) cuando no hay una conexión física a GND.

Untitled

Push button Voltaje MCU
0 (sin presionar) +5V HIGH (1)
1 (presionado) 0V LOW (0)

<aside> ⚠️ Es importante tener en cuenta que las resistencias de pull-up internas pueden ser menos precisas y menos potentes que las resistencias de pull-up externas, por lo que en algunos casos críticos puede ser necesario utilizar resistencias de pull-up externas para garantizar una lectura fiable de los botones.

</aside>

📄 Port Pin Configurations en el Microcontrolador AVR

Los puertos de entradas y salida (I/O) son la interfaz entre el bus de datos interno y los (las terminales) pines asignados a estas funciones en el microcontrolador (MCU), las entradas y salidas se mantienen en rangos de nivel de voltaje TTL

Untitled

LOW: indica que el estado está en nivel bajo de acuerdo a los niveles TTL esta entre 0V - 0.8V de tensión, es un “0 lógico”

HIGH: indica que el estado está en nivel alto de acuerdo a los niveles TTL esta entre 2.8V - 5V de tensión, es un “1 lógico”

📖 Puerto paralelo


El puerto paralelo permite el intercambio de datos en múltiples pines simultáneamente. Las configuraciones pull-down o pull-up aseguran una correcta lectura de los estados lógicos.

Conexión de entradas con resistencias Pull - DOWN

Untitled


DDRB = 0xFF; // Configura PORTB como salida
DDRD = 0x00; // Configura PORTD como entrada
PORTB = PIND; // Copia el valor de PIND en PORTB

Conexión de entradas con resistencias Pull - UP

Untitled


DDRB = 0xFF; // Configura PORTB como salida
DDRD = 0x00; // Configura PORTD como entrada
PORTB = ~PIND; // Copia el valor negado de PIND en PORTB

🧠 Ejercicios