RTV forum PL | NewsGroups PL

Analiza widma z karty ADC 16-bit przy 250kHz niskie tło i brak 2. harmonicznej?

co robie zle??

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Analiza widma z karty ADC 16-bit przy 250kHz niskie tło i brak 2. harmonicznej?

Goto page 1, 2  Next

Greg(G.Kasprowicz)
Guest

Thu Jun 19, 2008 6:37 pm   



Hej
mam taki dziwny problem.
Zbudowalem karte pomiarowa 36x ADC 16 bit, 250kHz (AD7656), rownoczesne
probkowanie i przetwarzanie we wszystkich kanalach.
No i zaczalem jej testy.
Zbudowalem generator na mostku Wiena, zebralem SignalTapem 8192 probek,
wrzucilem do Matlaba no i jaja..
tutaj jest wynik FFT
https://gkasprow.web.cern.ch/gkasprow/temp/ADC_spectrum.png
Licze widmo w ten sposob:

spectrum = 20*log(abs(fft( data(:,2) .* BLACKMAN(8192)))./5.1404e7);
plot(spectrum(1:4096))


wektor danych ma 2 kolumny - index oraz dane, dlatego uzywam: data(:,2)
mnoze go przez okno Blackman'a. W przypadku okien hanninga otrzymuje podobny
poziom tla. Bez okna mam listki boczne, ale poziom tla jest podobny.
Ta liczba: 5.1404e7 jest poziomem 1 prazka, dziele cale widmo w celu
znormalizowania do 0dB.
Ale to bez znaczenia, chodzi tylko by sie od 0 dB zaczynalo.
Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.
Do tego ten generator..
czyzby udalo mi sie zbudowac taki superprecyzyjny zeby mial tak male
znieksztalcenia, iz nie widze 2 harmonicznej?
Nie chce mi sie wierzyc..

Oczywiscie uzycie okna redukuje energie sygnalu, w przypadku Blackmann'a
jest to 0.55x, ale tutaj chodzi raczej o rzedy wielkosci.
Przetwornik jest poprzedzony wzmacniacem instrumentancyjnym i filtrem RC
80kHz 2-giego rzedu.

Zapewne robie cos glupiego, ale patrzymy z kumplem i kombinujemy i jak na
razie bez pomyslow...

Mirek
Guest

Thu Jun 19, 2008 9:53 pm   



Greg(G.Kasprowicz) wrote:

Quote:
tutaj jest wynik FFT
https://gkasprow.web.cern.ch/gkasprow/temp/ADC_spectrum.png
Licze widmo w ten sposob:

spectrum = 20*log(abs(fft( data(:,2) .* BLACKMAN(8192)))./5.1404e7);
plot(spectrum(1:4096))


Wrzuć plik z tymi próbkami, to może ktoś się pobawi i coś odkryje (taki
pomysł).

Mirek.

John Smith
Guest

Thu Jun 19, 2008 10:06 pm   



Greg(G.Kasprowicz) wrote:
Quote:
Hej
mam taki dziwny problem.
[...]


Hej,
Uzyskanie takich wyników jest nawet teoretycznie niemożliwe (dla ADC 16bit)
z uwagi na szum kwantyzacji.
W pdf-e na stronie 14 masz przebiegi odniesienia i takie można w praktyce uzyskać.
Błąd może tkwić w przeskalowaniu, nie znam Matlab-a na tyle aby pomóc.

Warto też zwrócic uwagę, że "podłoga" jest płaska, zbyt płaska. Trzeba
wrócic do podstaw, wyświetlic przebieg z funkcji czasu, obliczenia
uruchomić na przebiegach wygenerowanych a nie policzonych.
K.

J.F.
Guest

Thu Jun 19, 2008 11:56 pm   



On Thu, 19 Jun 2008 19:37:18 +0200, Greg(G.Kasprowicz) wrote:
Quote:
Zbudowalem karte pomiarowa 36x ADC 16 bit, 250kHz (AD7656), rownoczesne
probkowanie i przetwarzanie we wszystkich kanalach.
No i zaczalem jej testy.
Zbudowalem generator na mostku Wiena, zebralem SignalTapem 8192 probek,
wrzucilem do Matlaba no i jaja..
tutaj jest wynik FFT
https://gkasprow.web.cern.ch/gkasprow/temp/ADC_spectrum.png
Licze widmo w ten sposob:

spectrum = 20*log(abs(fft( data(:,2) .* BLACKMAN(8192)))./5.1404e7);
plot(spectrum(1:4096))

a jaka czestotliwosc generatora/probkowania ?

Bo pierwsza sprawa - jesli okresow nie miesci sie dokladna
wielokrotnosc, to powinno poszerzyc prazek.

Quote:
Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.

W zasadzie mozliwe - Mirek dobrze pisze - szum jest rzedu -90dB, ale
w calym pasmie. Czyli we wszystkich probkach razem.

Quote:
czyzby udalo mi sie zbudowac taki superprecyzyjny zeby mial tak male
znieksztalcenia, iz nie widze 2 harmonicznej?
Nie chce mi sie wierzyc..

A w jaki sposob zbudowales ? Bo brak parzystych moze byc uzasadniony.

Gorzej z trzecia.

Quote:
Oczywiscie uzycie okna redukuje energie sygnalu, w przypadku Blackmann'a
jest to 0.55x, ale tutaj chodzi raczej o rzedy wielkosci.
Przetwornik jest poprzedzony wzmacniacem instrumentancyjnym i filtrem RC
80kHz 2-giego rzedu.

Zapewne robie cos glupiego, ale patrzymy z kumplem i kombinujemy i jak na
razie bez pomyslow...

Zapomnieliscie usunac z programu testowego generowania sinusa ? :-)

J.

Greg(G.Kasprowicz)
Guest

Fri Jun 20, 2008 12:06 am   



Quote:

Tak się nigdy nie robi - bo to bez sensu i może mylić gdy porównujesz
pomiary dla różnych częstotliwości sygnału. Normalizuje się moc/energię.

OK, ale to tylko zmienia w skali logarytmicznej polozenie 0dB

Quote:

Normalizacja amplitudy prążka widma ma sens jedynie w przypadku tzw.
widma koherentnego/synchronicznego (gdy nie ma przecieku widma).

Ale to bez znaczenia, chodzi tylko by sie od 0 dB zaczynalo.
Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.

Co zmierzyłeś to nie wiem ;)

Ale wg moich symulacji (też blackman ale w octave;)
masz SNR ~ 50dB, interpretacja widma to nie taka bułka
z masłem.

To wynik symulacji kwatyzacja 16-bit sinus full zakres (niebieski) + szum
SNR=50dB (czerwony):

http://www.zind.ikem.pwr.wroc.pl/tmp/elektronika/spectrum1.pdf

Wystaw gdzieś surowe dane.

plik jest tutaj:
https://gkasprow.web.cern.ch/gkasprow/temp/ADC_data.txt
dzieki za zainteresowanie

Greg(G.Kasprowicz)
Guest

Fri Jun 20, 2008 12:10 am   



Quote:
spectrum = 20*log(abs(fft( data(:,2) .* BLACKMAN(8192)))./5.1404e7);
plot(spectrum(1:4096))

a jaka czestotliwosc generatora/probkowania ?
probkowanie to 75MHz/256

generator - ok 1kHz, nie mierzylem dokladnie.

Quote:

Bo pierwsza sprawa - jesli okresow nie miesci sie dokladna
wielokrotnosc, to powinno poszerzyc prazek.

Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.

W zasadzie mozliwe - Mirek dobrze pisze - szum jest rzedu -90dB, ale
w calym pasmie. Czyli we wszystkich probkach razem.

tyle ze w datasheetcie jest to ok -120dB

Quote:

czyzby udalo mi sie zbudowac taki superprecyzyjny zeby mial tak male
znieksztalcenia, iz nie widze 2 harmonicznej?
Nie chce mi sie wierzyc..

A w jaki sposob zbudowales ? Bo brak parzystych moze byc uzasadniony.


mostek Wiena + porstownik na wyjsciu, regulator PD i optorezystor do
regulacji wzmocnienia.

Quote:

Gorzej z trzecia.

Oczywiscie uzycie okna redukuje energie sygnalu, w przypadku Blackmann'a
jest to 0.55x, ale tutaj chodzi raczej o rzedy wielkosci.
Przetwornik jest poprzedzony wzmacniacem instrumentancyjnym i filtrem RC
80kHz 2-giego rzedu.

Zapewne robie cos glupiego, ale patrzymy z kumplem i kombinujemy i jak na
razie bez pomyslow...

Zapomnieliscie usunac z programu testowego generowania sinusa ? :-)

to byloby dobre:)

Aczkolwiek nie mam programu testowego...
czysty hardware, lacznie z odczytem ADC. Wyjscie ADC czytam SignalTapem,
dane importuje bezposrednio do Matlaba.
Co ciekawe, inne kanaly przetowrnika widza 2 i 3 harmoniczna sygnalu, tylko
ten jeden, "trefny" jej nie widzi.
w 2 losowo wybranych 2 harmoniczna jest na poziomie - 86 dB o ile dobrze
kojarze.

Greg(G.Kasprowicz)
Guest

Fri Jun 20, 2008 12:12 am   



Quote:

Wrzuć plik z tymi próbkami, to może ktoś się pobawi i coś odkryje (taki
pomysł).

plik jest tutaj:

https://gkasprow.web.cern.ch/gkasprow/temp/ADC_data.txt

Guest

Fri Jun 20, 2008 12:53 am   



John Smith <dam9723@buziaczek.pl> wrote:
Quote:


Greg(G.Kasprowicz) wrote:
Hej
mam taki dziwny problem.
[...]


Hej,
Uzyskanie takich wyników jest nawet teoretycznie niemożliwe (dla ADC 16bit)
z uwagi na szum kwantyzacji.

Możliwe, możliwe - szum kwantyzacji jest rozłożony w widmie.

Wyniki symulacji:

http://www.zind.ikem.pwr.wroc.pl/tmp/elektronika/spectrum1.pdf

Wykres niebieski sama kwantyzacja obliczona wg: floor(sin()*2^15)

Quote:
Warto też zwrócic uwagę, że "podłoga" jest płaska, zbyt płaska. Trzeba
wrócic do podstaw, wyświetlic przebieg z funkcji czasu, obliczenia
uruchomić na przebiegach wygenerowanych a nie policzonych.

Wykres czerwony to dodany szum gaussowski SNR=50 dB

Guest

Fri Jun 20, 2008 1:05 am   



"Greg\(G.Kasprowicz\)" <Grzegorz.Kasprowicz_usunto_@cern.ch> wrote:
Quote:
wektor danych ma 2 kolumny - index oraz dane, dlatego uzywam: data(:,2)
mnoze go przez okno Blackman'a. W przypadku okien hanninga otrzymuje podobny
poziom tla. Bez okna mam listki boczne, ale poziom tla jest podobny.
Ta liczba: 5.1404e7 jest poziomem 1 prazka, dziele cale widmo w celu
znormalizowania do 0dB.

Tak się nigdy nie robi - bo to bez sensu i może mylić gdy porównujesz
pomiary dla różnych częstotliwości sygnału. Normalizuje się moc/energię.

Normalizacja amplitudy prążka widma ma sens jedynie w przypadku tzw.
widma koherentnego/synchronicznego (gdy nie ma przecieku widma).

Quote:
Ale to bez znaczenia, chodzi tylko by sie od 0 dB zaczynalo.
Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.

Co zmierzyłeś to nie wiem ;)

Ale wg moich symulacji (też blackman ale w octave;)
masz SNR ~ 50dB, interpretacja widma to nie taka bułka
z masłem.

To wynik symulacji kwatyzacja 16-bit sinus full zakres (niebieski) + szum
SNR=50dB (czerwony):

http://www.zind.ikem.pwr.wroc.pl/tmp/elektronika/spectrum1.pdf

Wystaw gdzieś surowe dane.

PAndy
Guest

Fri Jun 20, 2008 8:33 am   



"Greg(G.Kasprowicz)" <Grzegorz.Kasprowicz_usunto_@CERN.CH> wrote in
message news:g3e5gf$6cp$1@inews.gazeta.pl...

Hmmm - mi to wyglada jakbyscie gdzies przyjeli zla skale i rozciagneli o
2, wszystko pokazuje ze noise floor jest na poziomie 70 paru dB i to
patrzac na amplitude probek ma to rece i nogi (blad w algorytmie - zle
skalowanie?)

Greg(G.Kasprowicz)
Guest

Fri Jun 20, 2008 9:29 am   



Quote:

Hmmm - mi to wyglada jakbyscie gdzies przyjeli zla skale i rozciagneli o
2, wszystko pokazuje ze noise floor jest na poziomie 70 paru dB i to
patrzac na amplitude probek ma to rece i nogi (blad w algorytmie - zle
skalowanie?)

na to wyglada ze chodzi o wspolczynnik 2..
zebralem probki z innego kanalu i wychodzi noise floor na -260dB!!!
co juz jest totalna bzdura.
Jesli przyjme do obliczen 10log to wyglada jak w datasheet'cie.
Ale chcialbym zrozumic dlaczego Mtlab tak mi to liczy.

Guest

Fri Jun 20, 2008 12:11 pm   



J.F. <jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
Bo pierwsza sprawa - jesli okresow nie miesci sie dokladna
wielokrotnosc, to powinno poszerzyc prazek.

Jest wystarczająco szeroki. Okno skutecznie go zwęża.

Quote:
Niezaleznie czy biore 1024, 2048 czy 8192 probek, poziom tla mam
ponizej -150dB, co jest niemozliwe dla takiego ADC.

W zasadzie mozliwe - Mirek dobrze pisze - szum jest rzedu -90dB, ale
w calym pasmie. Czyli we wszystkich probkach razem.

Szacunek SNR na podstawie danych czasowych Grega: 47dB
Obliczony wg:

w=abs(fft( X .* BLACKMAN(8192));
ps=sum(w(130:150).^2);
pc=sum(w(1:end/2).^2);
snr=10*log10(ps/(pc-ps))

Greg błędnie przy wyznaczaniu widma użył funkcji log zamiast log10.
log w matlabie to logarytm naturalny.

Quote:
Zapomnieliscie usunac z programu testowego generowania sinusa ? Smile

Dlatego napisałem - nie wiem co zmierzył Wink

Guest

Fri Jun 20, 2008 2:41 pm   



"Greg\(G.Kasprowicz\)" <Grzegorz.Kasprowicz_usunto_@cern.ch> wrote:
Quote:
spectrum = 20*log(abs(fft( data(:,2) .* BLACKMAN(8192)))./5.1404e7);
plot(spectrum(1:4096))

a jaka czestotliwosc generatora/probkowania ?
probkowanie to 75MHz/256
generator - ok 1kHz, nie mierzylem dokladnie.

Mnie wyszło (dla tego fs), że sygnał ma 4973.7 Hz (odchylenie std 0.5Hz)
z wyjątkiem ...

.... no właśnie - w przebiegu masz 6 chwil czasowych (widać je ładnie na
wykresie plot(diff(X))), w których są duże zakłócenia impulsowe (sieją po
całym paśmmie) i one sporo zaniżają SNR.

Jak weźmiesz fragment przebiegu y=x(2500+(1:2*1024)); to na widmie ładnie
widać 2 i 3 harmoniczną oraz coś przy 60 kHz

Greg(G.Kasprowicz)
Guest

Fri Jun 20, 2008 8:32 pm   



Quote:

Szacunek SNR na podstawie danych czasowych Grega: 47dB
Obliczony wg:

w=abs(fft( X .* BLACKMAN(8192));
ps=sum(w(130:150).^2);
pc=sum(w(1:end/2).^2);
snr=10*log10(ps/(pc-ps))

Greg błędnie przy wyznaczaniu widma użył funkcji log zamiast log10.
log w matlabie to logarytm naturalny.

dzieki, zrobilem obliczenia przy uzyciu programiku napisanego w C i wyszlo

podobnie jak Tobie..
Okazuje sie ze to byl trefny kanal - chyba cos sie odlutowalo.
W sasiednich mam noise floor na poziomie -120dB i tak powinno byc.
Dzieki.

J.F.
Guest

Fri Jun 20, 2008 9:15 pm   



On Fri, 20 Jun 2008 01:10:31 +0200, Greg(G.Kasprowicz) wrote:
Quote:
W zasadzie mozliwe - Mirek dobrze pisze - szum jest rzedu -90dB, ale
w calym pasmie. Czyli we wszystkich probkach razem.

tyle ze w datasheetcie jest to ok -120dB

Oni chyba znow cos naciagneli - 16 bitowy przetwornik ma
sumarycznie ~90dB. No i w dataszicie podobna liczba pada.

Natomiast spectrum .. to juz chyba zalezy na ile probek rozciagneli.

Quote:
A w jaki sposob zbudowales ? Bo brak parzystych moze byc uzasadniony.

mostek Wiena + porstownik na wyjsciu, regulator PD i optorezystor do
regulacji wzmocnienia.

Ale na czym wzmacniacz ? Bo symetria moze byc uzasadniona, petla widze
tez profesjonalna ..

J.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Analiza widma z karty ADC 16-bit przy 250kHz niskie tło i brak 2. harmonicznej?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map