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.
Adquisición ADC, Generación PWM y Filtrado Paso Bajo
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.
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.
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
}
}