gsabac Postat Decembrie 30, 2016 Partajează Postat Decembrie 30, 2016 O problema deosebita pe care am rezolvat-o greu datorita dificultatilor matematice a fost micsorarea efectului de fereastra si numarului de esantioane asupra acuratetii FFT. Pentru calculul FFT am folosit un algoritm rapid 128,256,512,1024,2048 si 4096, care pentru 4096 de esantioane da un rezultat in circa 0,5mS. Problema care m-a nemultumit este modulatia virfurilor de amplitudine ale liniilor spectrale cu o frecventa egala cu aceea care corespunde duratei de achizitie a esantioanelor. Practic am masurat o diferenta intre maxim si minim de circa 20%, care nu am putut sa o reduc decit prin metoda aplicarii unei ferestre de tipul Dirichlet, Hamming, Hanning sau Blackman semnalului esantionat, inainte de calculul FFT. Acesata echivaleaza in timp cu cresterea treptata a nivelului esantioanelor la inceput si scaderea lor spre sfirsit. In domeniul frecventa aplicarea ferestrelor corespunde unui filtru de pondere in jurul componentelor spectrale. Clic pentru marirea imaginii. Programul si ecuatiile ferestrelor sunt urmatoarele: ReDim Matrix(numbers)For Counter = 0 To numbers 'fereastra Blackman-Nuttall plus corectia cu 0.0124 Matrix(Counter) = 0.0124 * CDbl(dataPCM_Left(Counter)) * (0.42 - 0.5 * Cos(2 * Pi * Counter / (numbers - 1)) + 0.08 * Cos(4 * Pi * Counter / (numbers - 1)))Next Counter 'yw = 0.54 - 0.46 * Cos(2 * Pi * i / (nsamples)) 'Hamming 'yw = 0.5 - 0.5 * Cos(2 * pi * i / (nsamples)) 'Hanning 'yw = 0.42 - 0.5 * Cos(2 * pi * i / (nsamples - 1)) + 0.08 * Cos(4 * pi * i / (nsamples - 1)) 'Blackman-Nuttall Dupa incercarea ferestrelor prezentate am ales modelul ferestrei Blackman-Nuttall, care in final a redus putin viteza de calcul, dar diferentele de nivel la balearea frecventei s-au redus sub 5% din 20%. Articolul de inspiratie l-am gasit explicat corect numai la National Instruments, toate celelalte referinte cercetate au fost sumare, parca facute dinadins sa nu se inteleaga nimic aplicativ Adrese utile pentru studiu. http://www.ni.com/white-paper/2709/en/ esantionarea si achizitia de date http://www.ni.com/white-paper/4844/en/ principiile ferestrelor in analiza semnalelor @gsabac Link spre comentariu
gsabac Postat Ianuarie 4, 2017 Partajează Postat Ianuarie 4, 2017 (editat) Introducerea unui filtru trece jos la un DSO are o filozofie aparte si in general se recomanda trecerea din domeniul timp in domeniul frecventa, prelucrarea numerica a esantioanelor de amplitudine la diverse frecvente, apoi revenirea in domeniul timp cu refacerea semnalului. Pentru aceste filtre s-a gasit o metoda numerica simpla iterativa, bazata pe functiile sin(x)/x si ferestrele de ponderare. Asa arata o secventa de prelucrare numerica pentru un filtru trece jos cu frecventa variabila. alim = nInterpolare * nPoints '600 sunt 10860 de puncte ftjMax = Val(FormOscilloscope.Text1.Text) ' 22000 este un FTJ cu frecventa, setat pe max = 22.050KHz pentru 44,1KHz esantionare wnwdth = 24 'Val(Text6.Text) '5...200 latimea ferestrei de interpolare puncte r_g = 2 * ftjMax / SampleRate rapW = 1 / wnwdth rapW1 = 1 / (wnwdth - 1) ksoc = doiPi * ftjMax / SampleRate ' coeficient de filtrare For ka = 1 To nPoints For iz = 1 To nInterpolare iw = iw + 1 ir = ka + iw '(npoints +npoints*ninterpolare)/ninterpolare xa = ir / nInterpolare r_y = 0 'Calc gain correction factor (ja - xa) For ia = -wnwdth / 2 To wnwdth / 2 - 1 'For 1 window width ja = Int(xa + ia) 'Calc input sample index Select Case isel Case 1 wind = 1 'Dirichlet, rectangle window Case 2 'yw = 0.54 - 0.46 * Cos(2 * pi * i / (nsamples)) 'Hamming window wind = 0.54 - 0.46 * Cos(doiPi * (0.5 + (ja - xa) * rapW)) Case 3 'yw = 0.5 - 0.5 * Cos(2 * pi * i / (nsamples)) 'Hanning window wind = 0.5 - 0.5 * Cos(doiPi * (0.5 + (ja - xa) * rapW)) Case 4 'Blackman-Nuttall window 'yw = 0.42 - 0.5 * Cos(2 * pi * i / (nsamples - 1)) + 0.08 * Cos(4 * pi * i / (nsamples - 1)) wind = 0.42 - 0.5 * Cos(doiPi * (0.5 + (ja - xa) * (rapW1))) + 0.08 * Cos(2 * doiPi * (0.5 + (ja - xa) * (rapW1))) End Select r_a = ksoc * (ja - xa) 'ksoc = doiPi* ftjMAX / SampleRate * (ja - xa) sinc = 1 If (r_a <> 0) Then sinc = Sin(r_a) / r_a 'functia SinX/X If (ja > 0) And (ja < alim) Then r_y = r_y + r_g * wind * sinc * (Yn(ja) - 150) ' Return new filtered sample, 1 esantion End If Next ia r_x = 1.025 * (xax(ka - 1) + (xax(ka) - xax(ka - 1)) * iz / nInterpolare) FormOscilloscope.Picture1.PSet (r_x, r_y + 150) Next iz Next ka Codul este tradus din C++ in Visual Basic 6B cu DirectX-9C si adaptat pentru acest osciloscop. Dupa nenumarate imbunatatiri si modificari osciloscopul pe calculator Art Oscilloscope final arata asa: Proiectul este liber ("free") ca cod pe zonele si tipurile de prelucrari numerice dar si pentru setarea pe calculator. @gsabac Editat Ianuarie 4, 2017 de gsabac Link spre comentariu
daniel ignat Postat Ianuarie 11, 2017 Partajează Postat Ianuarie 11, 2017 un DSU2020 de la Voltcraft ar fi ok Link spre comentariu
stazis Postat Mai 25, 2017 Partajează Postat Mai 25, 2017 Personal intetionez sa realizez acest osciloscop: http://www.scopefun.com . Este un proiect open source cu software, gerber, BOM si tot ce trebuie pt. realizare. Nu e tocmai usor de datorita SMD-urile de mici dimensiuni dar cu mult flux si rabdare cred ca se poate. Link spre comentariu
gsabac Postat Mai 25, 2017 Partajează Postat Mai 25, 2017 Personal intetionez sa realizez acest osciloscop: http://www.scopefun.com . Este un proiect open source cu software, gerber, BOM si tot ce trebuie pt. realizare. Nu e tocmai usor de datorita SMD-urile de mici dimensiuni dar cu mult flux si rabdare cred ca se poate. Realizarea este cea mai tare pe care a facut-o cineva ca persoana, atit ca frecventa cit si ca numar de esantioane (efective) memorate la mare viteza. Eu am gasit doar proiecte realizate de pina la 2K*8, cu memorii discrete de 50MHz si tot cu esantionare de 10 bit. Dupa mine este realizabil daca se cumpara ca atare cu soft cu tot si garantia de functionare sau ca chit, si soft, in caz contrar trebuiesc urmatoarele: - programul pentru FPGA si toate softurile si harnasamentul de scriere; - programul pentru microcontroller si scriere a lui in uC-ul indicat; - programul executabil pentru sistemul de operare folosit este dat in arhive; - procurarea componentelor intocmai ca in documentatie si la ce pret; - realizarea unui circuit multistrat cu treceri metalizate si plantarea unui circuit de asemenea precizie; - circuitul sau schema are ceva greseli, deci trebuie o erata; Succes ! @gsabac Link spre comentariu
gheo23 Postat Februarie 17, 2018 Partajează Postat Februarie 17, 2018 Buna ziua ! Am gasit acest osciloscop si doresc sa-l cumpar. Ar fi bun pentru utilizare in audiofrecventa ? Va rog o parere . https://www.aliexpress.com/item/ISDS205A-PC-Based-USB-Oscilloscope-2CH-20MHz-48MSa-s-FFT-Analyzer-Data-Logger/32352310198.html?spm=2114.10010108.1000014.10.7eea7a100gA3rt&traffic_analysisId=recommend_3035_5_83054_iswinstore&scm=1007.13338.83054.0&pvid=3e1264c8-4b7e-4e8d-8f65-864b5231e7b1&tpp=1 Link spre comentariu
bogdan546 Postat Februarie 17, 2018 Partajează Postat Februarie 17, 2018 o porcarie care respecta doar esantionarea minima data de teorema Nyquist Link spre comentariu
zsjkuki Postat Februarie 17, 2018 Partajează Postat Februarie 17, 2018 Pentru 50$ nu prea ai la ce sa te astepti dar pentru inceput e ceva.Studiaza si tu ce stie sa faca si vezi daca te satisface sau nu. Buna ziua ! Am gasit acest osciloscop si doresc sa-l cumpar. Ar fi bun pentru utilizare in audiofrecventa ? Va rog o parere . https://www.aliexpress.com/item/ISDS205A-PC-Based-USB-Oscilloscope-2CH-20MHz-48MSa-s-FFT-Analyzer-Data-Logger/32352310198.html?spm=2114.10010108.1000014.10.7eea7a100gA3rt&traffic_analysisId=recommend_3035_5_83054_iswinstore&scm=1007.13338.83054.0&pvid=3e1264c8-4b7e-4e8d-8f65-864b5231e7b1&tpp=1 Link spre comentariu
gheo23 Postat Februarie 17, 2018 Partajează Postat Februarie 17, 2018 (editat) Nici nu ma astept sa fie foarte performant , declarativ si din foto pare ok pentru domeniul audio dar eu ma gandeam ca cineva a mai comandat ceva similar si doream o opinie. Banuiesc ca e bazat pe Arduino deci nu poate fi foarte performant ! Oricum , multumesc si mai astept opinii , nu-i graba. As mai avea o intrebare: placa grafica a laptop-ului este importanta pentru functionarea corecta a acestui osciloscop ? Daca da, cam care credeti ca ar fi cerinele minime ? Editat Februarie 17, 2018 de gheo23 Link spre comentariu
zsjkuki Postat Februarie 17, 2018 Partajează Postat Februarie 17, 2018 Nu are treaba cu placa grafica de la laptop,eu cred ca e facut pe un ARM Cortex M3 dar e o presupunere.Din cate stiu aceste osciloscoape au fost proiectate de Haitronic si pe urma au vandut patentul.exact ca si la DSO 203. Link spre comentariu
orgasmo Postat Februarie 18, 2018 Partajează Postat Februarie 18, 2018 https://www.aliexpress.com/item/ISDS205A-PC-Based-USB-Oscilloscope-2CH-20MHz-48MSa-s-FFT-Analyzer-Data-Logger/32352310198.html?spm=2114.10010108.1000014.10.7eea7a100gA3rt&traffic_analysisId=recommend_3035_5_83054_iswinstore&scm=1007.13338.83054.0&pvid=3e1264c8-4b7e-4e8d-8f65-864b5231e7b1&tpp=1 MDSO ISDS205A http://instrustar.com/upload/user%20guide/ISDS205%20User%20Guide.pdf La pretul de 50$ FFT measure il recomanda pentru audio. Link spre comentariu
gheo23 Postat Februarie 18, 2018 Partajează Postat Februarie 18, 2018 @zsjkuki: da, asa ma gandeam si eu.Oricum laptop-ul meu este cam asa: I3 2.27Ghz, AMD Radeon 6300 series 1Gb memory/350Mhz, ssd Samsung 2Tb si win10. @orgasmo: multumesc pentru link.Cred ca-l comand , 40 euro nu-i deloc mult la ce stie sa faca, cel putin in teorie.Il vedem la munca!!! Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum