Lettura segnale sinusoidale multiplo

salve, chiedo nuovamente il vostro aiuto, è possibile leggere un segnale sinusoidale dove c’è la presenza di più armoniche (poche in realtà) vicine tra loro sotto i 100hz con una precisione del singolo hz. Nel senso leggo il segnale verificando se c’è la presenza di una determinata frequenza e avere come risposta un la sua ampiezza? si parla di uno spettro molto ristretto, dove ci sono 3/4f alla volta circa.

Ho visto che esiste la libreria, freqcount che legge su un pin pwm in singolo segnale “da squadrare”, ma immagino che avendo + onde sovrapposte la cosa non sia fattibile!

Grazie a tutti per l’aiuto che ci date!
MisterZ

Devi passare dal dominio del tempo a quello della frequenza usando la trasformata di Fourier.

Nella pratica, devi usare la FFT (Fast Fourier Transform) oppure la FHT (Fast Hartley Transform) contenute nelle relative librerie:

http://wiki.openmusiclabs.com/wiki/ArduinoFFT

http://wiki.openmusiclabs.com/wiki/ArduinoFHT

Ho già provato quelle librerie, ma leggono di ottava in ottava fino al limite HW di arduino, leggevo max 5khz, a me non interessa andare così avanti calcolando che mi fermo già a 100hz, quindi limiti hw non dovrei averli, ho pensato di modificare quelle librerie per adattarle a quello che serva a me, ma è scritta praticamente tutta in assembler, e utilizza delle tabelle che non capisco come siano generate, immagino le usino come comparazione, ma non ho idea di come generarne altre che facciamo al mio caso!

cyberhs: il problema e' che se sovrapponi due (o piu) sinusoidi, specie se a frequenze diverse, quello che ottieni non e' piu una sinusoide ... :wink:

cmq le librerie ti danno già le varie ampiezze, in questo caso nemmeno serve fourier! la cosa bella sarebbe capire a quale frequenze corrispondono!