Procesamiento Digital de Señales

Cambio de amplitud señal seno Arduino

Objetivos:  Generar una señal seno Arduino y cambiar su amplitud con un potenciometro.

 

#include <TimerOne.h>
#include <SPI.h>         // Remember this line!
#include <DAC_MCP49xx.h>
#define SS_PIN 10
 
DAC_MCP49xx dac(DAC_MCP49xx::MCP4921,SS_PIN);
 
 
int y;  // salida
int muestra=0;  // numero de muestra
float frecuencia=60;  // frecuencia de senal a generar
float frecuenciadigital;  // frecuencia digital
float frecuenciamuestreo=10000;// 1 K Hz

int amplitud_dig;

float amplitud;
 
void ISR_timer(){
 
y=floor((amplitud*sin(2*3.1416*muestra*frecuenciadigital)) + 2048);  // calculo seno digital de 12 bits  // calculo sino digital de 12 bits;  // calculo sino digital de 12 bits

 muestra++;  // aumenta la muestra  

 dac.output(y); // manda la salida al DAC
 
  
}
 
void setup(){
  
  Serial.begin(9600);    // incializa comunicacions serial
  Timer1.initialize(100); //  Periodo de muestreo   // Dispara cada 1 ms =1000s  
  Timer1.attachInterrupt(ISR_timer);// Activa la interrupcion y la asocia a ISR_timer
 
 
  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(){
  
  frecuenciadigital=frecuencia/frecuenciamuestreo;


  amplitud_dig=analogRead(A0);  /// conversión analogica digital

  amplitud=amplitud_dig*2;



  
  
    
}

 

Deja un comentario

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