Práctica de Laboratorio: Reconstrucción de Señal Analógica

Adquisición ADC, Generación PWM y Filtrado Paso Bajo

1. Objetivo

▼

Adquirir una señal analógica, convertirla a digital mediante el ADC de Arduino, generar una señal PWM proporcional y reconstruir la onda analógica original utilizando un filtro paso bajo RC.

2. Simulador Interactivo: PWM + Filtro

▼

Experimenta con la modulación PWM y el filtrado paso bajo antes de montar el circuito real. Ajusta la señal moduladora, la frecuencia del PWM y el tipo de filtro para observar el efecto en la señal reconstruida y su espectro.

💡 Guía rápida: La frecuencia de corte del filtro debe ser mayor que la frecuencia de la señal moduladora pero menor que la frecuencia portadora del PWM para una reconstrucción óptima.
🔗 Abrir en pestaña nueva

3. Materiales

▼
  • Arduino Uno y cable USB.
  • Protoboard y cables de conexión.
  • Generador de funciones (o potenciómetro).
  • Osciloscopio (2 canales).
  • Resistores y condensadores según diseño del filtro.

4. Conexiones del Circuito

▼
  1. Entrada (ADC): Señal del generador al pin A0. GND del generador a GND de Arduino.
  2. Salida (PWM): Pin 9 de Arduino a un extremo del resistor R.
  3. Filtro Paso Bajo (RC): El otro extremo de R se conecta a un extremo del condensador C y a la punta del osciloscopio (Canal 2). El otro extremo de C va a GND.
  4. Referencia: Canal 1 del osciloscopio a la entrada (A0).

Calculadora de Filtro RC Paso Bajo

📦 Valores comerciales: La calculadora puede redondear automáticamente los resultados a los valores normalizados de la serie E12 (resistencias: 1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2 × potencia de 10) y serie E6 (capacitores: 1.0, 1.5, 2.2, 3.3, 4.7, 6.8 × potencia de 10), que son los más comunes en el laboratorio.
Frecuencia de corte: 15.92 Hz
Ingrese valores y presione Calcular

5. Código Arduino

▼
Nota sobre puerto serie: Este código no utiliza comunicación serial, por lo que no requiere Serial.begin() ni baud rate. El lazo ADC→PWM opera de forma autónoma. Si deseas depurar, descomenta las líneas marcadas con // DEBUG y usa Serial.begin(9600) (o el baud rate que prefieras: 115200, 250000, etc.).
// Práctica: ADC + PWM + Filtro RC
// No requiere puerto serie para funcionar.

// Frecuencia de muestreo deseada (Hz)
// Debe ser >> Fc del filtro y >> frecuencia de la señal
const unsigned long SAMPLE_PERIOD_US = 1000; // 1 ms -> 1 kHz

void setup() {
  pinMode(9, OUTPUT);           // Pin PWM
  // Serial.begin(9600);        // DEBUG: descomentar si se requiere depuración
}

void loop() {
  static unsigned long lastSample = 0;
  unsigned long now = micros();

  if (now - lastSample >= SAMPLE_PERIOD_US) {
    lastSample = now;

    // 1. Adquisición ADC (10 bits: 0-1023)
    int lectura = analogRead(A0);

    // 2. Mapeo a resolución PWM (8 bits: 0-255)
    int salida = map(lectura, 0, 1023, 0, 255);

    // 3. Generación PWM en pin 9 (~490 Hz en Uno)
    analogWrite(9, salida);

    // Serial.print(lectura); Serial.print(","); Serial.println(salida); // DEBUG
  }
}

6. Procedimiento

▼
  1. Diseñar el filtro con la calculadora: elegir Fc tal que F señal < Fc < F PWM (490 Hz).
  2. Armar el circuito y cargar el código en Arduino.
  3. Configurar el generador: onda senoidal/triangular de 1 a 5 Hz, amplitud 0-5V.
  4. Canal 1 del osciloscopio en A0 (entrada) y Canal 2 en la salida del filtro.
  5. Comparar ambas formas de onda: amplitud, fase y fidelidad de reconstrucción.

7. Resultados Esperados

▼
  • Antes del filtro: PWM de 490 Hz con duty cycle variable siguiendo la envolvente de la entrada.
  • Después del filtro: Reconstrucción de la onda original (senoidal/triangular).
  • Observaciones: Atenuación de amplitud y desfase inherentes al filtro RC de primer orden. Si Fc es muy baja, la respuesta se vuelve lenta; si es muy alta, queda rastro del PWM.