buenas.
estoy tratando de sacar una onda senoidal utilizando la tecnica de tablas y pwm desde un arduino mega, y mi idea es filtrar el pwm por medio de un filtro pasa bajas, y que el mismo este en resonancia, o sea que me filtre la señal pwm y se quede oscilando a su frecuencia de resonancia, es posible esto? he estado realizando las simulaciones, segun mis calculos mi programa me deberia de dar una onda senoidal (despues del filtro) de 5khz, pero esta solo sale a aprox. 550hz, estoy mal en concepto? adjunto programa, y screenshot del circuito en proteus.
estoy tratando de sacar una onda senoidal utilizando la tecnica de tablas y pwm desde un arduino mega, y mi idea es filtrar el pwm por medio de un filtro pasa bajas, y que el mismo este en resonancia, o sea que me filtre la señal pwm y se quede oscilando a su frecuencia de resonancia, es posible esto? he estado realizando las simulaciones, segun mis calculos mi programa me deberia de dar una onda senoidal (despues del filtro) de 5khz, pero esta solo sale a aprox. 550hz, estoy mal en concepto? adjunto programa, y screenshot del circuito en proteus.
Código:
/*frecuencia de senoidal= 5 kHz
periodo= 180 uS
calcular duty cycle cada: periodo/180= 1uS
*/
const int pwmPin=11;
const int seno[180]={127,131,135,140,144,149,153,157,162,166,170,174,178,182,186,190,194,198,201,205,208,211,215,218,221,224,227,229,232,234,236,239,241,243,244,246,247,249,250,
251,252,252,253,253,253,254,253,253,253,252,252,251,250,249,247,246,244,243,241,239,236,234,232,229,227,224,221,218,215,211,208,205,201,198,194,190,186,182,
178,174,170,166,162,157,153,149,144,140,135,131,127,122,118,113,109,104,100,96,91,87,83,79,75,71,67,63,59,55,52,48,45,42,38,35,32,29,26,24,21,19,17,14,12,10,
9,7,6,4,3,2,1,1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,17,19,21,24,26,29,32,35,38,42,45,48,52,55,59,63,67,71,75,79,83,87,91,96,100,104,109,113,118,122};
void setup() {
pinMode(pwmPin,OUTPUT);
TCCR1B = (TCCR1B & 0xF8) | 0x01 ; //cambio de frec. del pwm a 31.374 kHz
}
void loop() {
for (int i=0;i<180;i++){
analogWrite(pwmPin,seno[i]);
delayMicroseconds(1);
}
}
Adjuntos
Última edición: