Conversión de Analógico a Digital#

Definición de ADC#

La conversión de analógico a digital (ADC) es un proceso que convierte señales analógicas en valores digitales. Los microcontroladores utilizan ADC para leer señales analógicas de sensores y otros dispositivos.

Advertencia

El voltaje de referencia del ADC varía según el microcontrolador. Consulta la hoja de datos del microcontrolador para obtener información específica.

Cuantificación y Codificación de Señales Analógicas#

Las señales analógicas son continuas y pueden tomar cualquier valor dentro de un rango dado. En cambio, las señales digitales son discretas y solo pueden adoptar valores específicos. La conversión de una señal analógica a digital implica dos pasos: cuantificación y codificación.

Conversión de Analógico a Digital

Figura 13 Conversión de Analógico a Digital#

Tabla 5 Ejemplos de Codificación y Cuantificación#

Resolución

Niveles de Cuantificación

Código Digital

8 bits

256

0x00 a 0xFF

12 bits

4,096

0x000 a 0xFFF

16 bits

65,536

0x0000 a 0xFFFF

Cuantificación#

Divide la señal analógica en niveles discretos. El número de niveles determina la resolución del ADC.

Nota

La resolución de un ADC se mide en bits y se calcula como 2^n, donde n es el número de bits.

Tabla 6 Resoluciones de ADC#

Resolución

Niveles de Cuantificación

Descripción

8 bits

256

Un ADC de 8 bits tiene 256 niveles de cuantificación, lo que significa que puede representar la señal analógica con 256 valores diferentes.

12 bits

4,096

Un ADC de 12 bits tiene 4,096 niveles de cuantificación, lo que permite representar la señal analógica con 4,096 valores distintos.

16 bits

65,536

Un ADC de 16 bits tiene 65,536 niveles de cuantificación, permitiendo representar la señal analógica con 65,536 valores distintos.

Codificación#

Asigna un código digital a cada nivel de cuantificación. Este código digital representa el valor de la señal analógica en dicho nivel.

Equivalencia de lectura de ADC en diferentes alternativas#

adc_value = adc.read() # Leer el valor del ADC

Código de Ejemplo#

Advertencia

MicroPython no se encuentra disponible para la placa de desarrollo Cocket Nova su ejemplo es solo para SDCC.

A continuación, se muestra un ejemplo de código para leer continuamente un valor ADC e imprimirlo:

MicroPython y Arduino IDE#

Nota

El siguiente código está diseñado para funcionar con el microcontrolador RP2040 en la placa de desarrollo DualMCU.

import machine
import time

# Configuración del ADC
A0 = machine.Pin(26, machine.Pin.IN)  # Inicializar pin A0 para entrada
adc = machine.ADC(A0)                 # Crear objeto ADC

# Lectura continua
while True:
    adc_value = adc.read_u16()        # Leer el valor del ADC
    print(f"Lectura ADC: {adc_value:.2f}")  # Imprimir el valor
    time.sleep(1)                     # Retraso de 1 segundo

Arduino IDE y SDCC#

#define LED_BUILTIN 34

int sensorPin = 11;
int ledPin = LED_BUILTIN;
int sensorValue = 0;

void setup() {
   pinMode(ledPin, OUTPUT);
   pinMode(sensorPin, INPUT);
}

void loop() {
   sensorValue = analogRead(sensorPin);
   digitalWrite(ledPin, HIGH);
   delay(sensorValue);
   digitalWrite(ledPin, LOW);
   delay(sensorValue);
}