Procesamiento Digital de Señales

Muestrar una señal analógica con arduino y recuperarla

El objetivo de este articulo es mostrar como muestrear una señal analógica de arduino convertirla en digital y después convertirla en nuevamente en analógica

 

Vamos a muestrar la señal a frecuencia de 10 K Hz es decir un periodo  de 100 micro segundos, para hacer un muestra cada ese tiempo vamos a usar la libreria “TimerOne.h”  para generar un interrupción por tiempo cada 100 micro segundos, cada ese tiempo se ejecuta la función muestrea() que toma un valor analógico, lo convierte en digital de 10 bits, se convierte a 12 bits y se manda al DAC MCP4921

 

Código arduino

 

#include // Remember this line!
#include
#define SS_PIN 10

DAC_MCP49xx dac(DAC_MCP49xx::MCP4921, SS_PIN);
#include “TimerOne.h”

int xn; // señal de entrada
long yn; // señal de salida

void muestrea () { // se ejecuta cada 100 us

xn=analogRead(A0); //se lee la señal analógica y se convierte en digital de 0 a 1024

yn=map(xn,0,1024,0,4096); // se mapa xn de 0 1024 a 0 4096 ya que el DAC es de 12 bits

dac.output(yn); // se manda yn al DAC

}

void setup() {

Timer1.initialize(100); // Dispara cada 1 ms
Timer1.attachInterrupt(muestrea); // Activa la interrupción y la asocia a muestrea
dac.setSPIDivider(SPI_CLOCK_DIV16);

// Use “port writes”, see the manual page. In short, if you use pin 10 for
// SS (and pin 7 for LDAC, if used), this is much faster.
// Also not strictly required (no setup() code is needed at all).
dac.setPortWrite(true);

}
void loop() {

}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *