Merhaba,
Program hafızası yetmediği için en fazla 512 örnek alabiliyorum.
Bu durumda FFT ile ancak yaklaşık olarak 1khz ile 16khz arasını tespit edebiliyorum.
Aynı zamanda 1khz altını da tespit edebilmem gerekiyor.
1024 örnek alabilsem iş çözülecek ama program memory yetmiyor.
Örnekleme frekansını düşürünce 1hz'e kadar tespit edebiliyorum ama bu sefer de doğal olarak yüksek frekansları göremiyorum.
Sonuçta, Çözünürlük = Fs / N
Ne yapmak lazım? Olmassa iki tane arduino kullanarak yapıcam. Nedir bu fakirlik :)
#define SAMPLES 512
#define SAMPLING_FREQUENCY 45000
double vReal[SAMPLES];
double vImag[SAMPLES];
illede atmega2560 ile yapman gerekmiyorsa, arduino due kullanabilirsin. 32 bitlik işlemci ve 512k flash, 100k ram (SAM3 serisi ARM tabanlı işlemci)
Aynen 2 katı program belleği varmış. Pwm 15'ten 12'ye düşüyor ama olsun.
Mega ile çözüm yoksa yapacak bir şey yok. Siparişi veriyorum :)
(https://image.ibb.co/e8qU8H/Due_Vs_Mega.png)
Teşekkürler.
Merhaba
Konu ile alakasız ama kusura bakmayın.
Bende geçenlerde stm32 üzerinde fft uygulaması gerçekleştirdim.Herşey güzel çalışıyor ama hız konusunda sıkıntı yaşadım overclock yaparak istediğim hıza yaklaştım.Siz arduinoda hız ile ilgili bir sorun yaşadınızmı.
İyi çalışmalar.
Hız sorunu yaşamadım.
Arduino Mega'da normalde adc 10 bit ama prescaler ile hızlandırılabiliyor. 40khz ile örnekleme yapabildim. Daha fazla da yapılabilir ama denemedim.
https://playground.arduino.cc/Code/Prescaler (https://playground.arduino.cc/Code/Prescaler)
Harici 16 bit ADC aldım(ADS1115) ama nedense düzgün çalışmadı. Sonra prescaler konusunu öğrenince gerek kalmadı zaten.