Sari la conținut
ELFORUM - Forumul electronistilor

cum schimb referinta la un semnal ?


mircang9

Postări Recomandate

Salut Dan,

 

Domnule, felicitari! Ce sa spun?! Mesajul este demodulat corect si ca premiu iti atasez scriptul cu care l-am generat. :)

Acuma te rog sa-mi spui si prin ce metoda l-ai demodulat.

 

Cirip

 

fsk_mondan_2.zip

Editat de cirip
Link spre comentariu
  • Răspunsuri 109
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • mircang9

    66

  • cirip

    34

  • 10vid

    2

  • Ionut Pavel

    2

Top autori în acest subiect

Imagini postate

Salut Cirip,

 

Iti multumesc pentru felicitari si pentru script.

Mesajul demodulat este: "Felicitari Mondan, ai reusit sa demodulezi! Cirip, elforum", adica pusesem "c" mic in loc de "C" mare ( 43 in hexazecimal ). M-am uitat iar peste tabelul cu coduri ASCII si am corectat.

 

Atasez scriptul si textul pentru a arata cum am extras datele.

 

Asa ca am demodulat cu inmultire esantioane cu variantele lor intarziate cu 4 esantioane in urma ( pi/2 ) si cu filtrare trece jos si cu ce mai e pe langa.

 

Nu am demodulat prin masurare de perioade. :dffe

 

Cu stima, Dan *

post-181251-0-35794200-1486212020_thumb.gif

Extragere biti de date din demodulare.txt

mondan_fsk.zip

Editat de mircang9
Link spre comentariu

Salut,

 

Nu prea. Pe viteza vad cam asa:

1) Impedanta vazuta de linie e 600Ohmi in paralel cu impedanta de intrare in filtrul ala trece jos si care e de vreo 14 ohmi la frecventa de taiere de 2.8K. Prin urmare, filtrul trece jos e dominant in determinarea impedantei circuitului.

2) Operationalul nu are polarizare pe intrarea neinversoare. Probabil ca iesirea se va satura in 0.

Editat de cirip
Link spre comentariu

Am eliminat FTJ. Nu stiu la ce polarizare te referi la intrarea neinversoare. La intrarea neinversoare nu e cumva o masa virtuala ?

La condensatorii de decuplare la dsPIC intre Vddcore/Vcap si masa e un condensator de 10uF NEpolarizat. In proiectul tau cu acel filtru, ai pus polarizat.

 

Atasez si o schema de generare clock de referinta pentru dsPIC33FJ256GP506 si pentru WM8510. In schema originala era un Quartz de 18.434 MHz. Maine o sa vad si valoarea acelui condensator C.

 

Referinta de clock de 12 MHz pentru codecul WM8510 as genera-o din dsPIC, dar din dsPIC la OSC2/CLKO pot scoate doar Fcy/2 adica 40 MHz ( pentru 40 MIPS ) ceea ce cred ca este prea mult pentru codec.

 

As folosi ceasul intern al dsPIC-ului cu pinul de CLKIN rupt si cu un ceas independent extern pentru codec, dar cred ca astfel nu s-ar sincroniza comunicatia prin DCI intre dsPIC ( master ) si codec.

 

In schema din dsPIC DSC Starter Kit 1 acel PIC18F67J50 scoate clock de referinta prin pinul RE3/REFO si pentru dsPIC si pentru codecul WM8510.

 

In schema mea as elimina acel PIC18F pentru ca nu am nevoie de programmer/debugger pe montajul meu.

 

Azi cred ca am descoperit motivul pentru care mi-am stricat doua placutze facute de mine: una cu PIC24F ( 100 pini ) si a doua cu dsPIC33FJ256GP506 ( 64 pini ) lipite pe ele. Am avut flux intr-o sticlutza pe care o am de prin 2010. Cred ca si-a pierdut proprietatile si astfel chiar daca am aplicat flux din abundenta am ars cate un traseu de pe cele doua placutze. Cred ca acum acel flux e doar "apa chioara". Am rupt si pinul CLKIN de la dsPIC33F. L-as putea folosi cu clock-ul lui intern.

post-181251-0-58205200-1486322553_thumb.png

post-181251-0-16461300-1486322563_thumb.png

dspic33_smd.pdf

post-181251-0-30068300-1486323779_thumb.jpg

Editat de mircang9
Link spre comentariu

Nu stiu la ce polarizare te referi la intrarea neinversoare.
Uita-te la o schema tipica de amplificator operational in conexiune neinversoare. Daca stii sa folosesti un simulator, ajuta-te cu el ca sa intelegi necesitatea stabilirii punctului static (sinonim cu polarizare).

La intrarea neinversoare nu e cumva o masa virtuala ?
Nu. Acolo ai semnal. Cum sa fie masa? Ar apare o masa virtuala in conexiunea inversoare, dar nu e cazul si oricum, asta nu te scuteste de necesitatea plasarii corecte a punctului static de functionare.

La condensatorii de decuplare la dsPIC intre Vddcore/Vcap si masa e un condensator de 10uF NEpolarizat. In proiectul tau cu acel filtru, ai pus polarizat.
Unde "e un condensator de 10uF NEpolarizat" ? Sau unde scrie ca trebuie sa fie NEpolarizat? Intamplator, pe placa facuta de mine e ceramic, dar nu e musai."

In schema mea as elimina acel PIC18F pentru ca nu am nevoie de programmer/debugger pe montajul meu.
dsPICul merge fara PIC ajutator. ICD2 sau PicKit3 sunt suficiente ptr programare si debug. Le-am folosit pe amandoua. Nu stiu daca merge cu PicKit2.

Am avut flux intr-o sticlutza pe care o am de prin 2010. Cred ca si-a pierdut proprietatile si astfel chiar daca am aplicat flux din abundenta am ars cate un traseu de pe cele doua placutze. Cred ca acum acel flux e doar "apa chioara". Am rupt si pinul CLKIN de la dsPIC33F.
Nu cred ca e din cauza fluxului. Eu am flux de prin 2000 si merge. Dar prefer sa folosesc sacaz. Pe ala il am si mai demult. Ai nevoie de scule ca sa lipesti chestii asa fine. Eu lipesc dsPICul sub microscop, cu letcon de dimensiunea unui creion si cu varf foarte subtire.

 

Mai e ceva. Nu te poti conecta la o linie telefonica venita din centrala asa cum ai facut schema. Trebuie traf separator, ca sa nu conectezi niciuna dintre linii la masa. Interfetele telefonice sunt un pic mai elaborate, altfel te trezesti cu Telekom-ul la usa sau iese fumul magic din operational si din dsPIC cand o suna telefonul :) Tensiunea de apel e intre 80 si 120V :mort

Editat de cirip
Link spre comentariu

Iata varful statiei termostatate deasupra unui pin de 0.2 mm capsula TQFP 100 pini privit la microscop usb. Din poza se vede ca varful este, cred, suficient de subtire si de ascutit. Cablajul este facut de mine prin metoda clasica de imprimare adica NU prin metoda foto. Nu am aplicat soldermask. :dffe

 

Sacazul in ce-l diluezi ? In ce fel de alcool ?

 

La ce fel de temperatura lipesti si cate secunde aproximativ tzii varful pe pin pana lipesti ?

 

Condensatorul din schema de mai sus de la acel oscilator este de 100 pF.

 

Atasez schema de intrare in codec de pe placa demo dsPIC DSC Starter Kit 1. Doar partea de intrare - preamplificare. Iesirea MIC2 din dreapta intra in codec. Vreau sa folosesc din schema doar intrarea de la LINEIN + adaptare la intrare de 600 Ohm. NU si cea de la MICrofon.

 

La iesire din codec masor cu voltmetrul 0.7 V continuu, apoi trece prin condensator si masor 0V, apoi trece prin al 2-lea condensator si intra in intrarea VIN1 a LM4811 unde masor 1.5 V. LM4811 e amplificatorul de iesire pentru casti.

 

Azi am masurat cu osciloscopul digital 12 MHz oscilator ( clock-ul de referinta ce iese din PIC18F ) pe placa demo. Am reusit sa masor cu succes acei 12MHz, acea sinusoida de amplitudine Pk-Pk de 3.2 V si variatie a frecventei intre 11.97-12.17 MHz.

 

O sa masor ce scoate si schema de oscilator de mai sus, cu acele porti inversoare. Mai intai trebuie sa fac micul montaj al schemei pentru oscilator.

 

Intre linia telefonica si filtru de receptie FTB este un transformator 1:1. Primarul e legat la cele doua fire ale liniei telefonice iar in secundar are un capat trecut printr-o rezistenta si la masa. Secundarul este spre filtrul trece banda FTB.

 

Cand m-am referit la acel PIC18F, m-am referit in sensul ca sa folosesc in locul lui referinta de clock pentru dsPIC si pentru codec acel oscilator de mai sus cu acele porti inversoare. Partea de programare/debug cu PIC Kit 2 o stiu, dar nu la partea de programator m-am referit ci la partea de oscilator extern de referinta independent. Pe placa demo acel PIC18F este folosit si ca generator de clock de referinta pentru dsPIC si pentru codec. In loc de PIC18F ca generator de clock vreau sa folosesc un generator de clock de referinta.

 

Ieri cand am vrut sa lipesc acel singur pin care nu era lipit de traseu ( restul de 63 pini de pe capsula de 64 pin pentru dsPIC erau lipiti bine din 2010 ) si statea doar deasupra traseului se incapatana pur si simplu sa se lipeasca de traseu dupa 4 incercari esuate cu acel flux. Restul de 63 pini i-am lipit cu succes odata pe toti in 2010 cu acel flux fara probleme, doar ca apoi nu verificasem ca acest pin nu era lipit bine.

post-181251-0-80822800-1486403708_thumb.png

post-181251-0-42828700-1486404252_thumb.jpg

post-181251-0-92233600-1486407610_thumb.png

Editat de mircang9
Link spre comentariu

Atasez si schemele de pe placa demo. Pentru codec si legarea lui la amplificatorul de iesire LM4811.

Placa demo e cea din acest link: http://www.mouser.com/ds/2/268/dsPIC-DSCsStarterKitUsersGuide-45378.pdf.

In montajul meu nu as vrea sa ma indepartez prea mult de schema de pe placutza demo chiar daca intrarea in placa mea o adaptez la linia telefonica.

 

Intre pre-amplificatorul acela de la intrare si intrarea in codec as interpune si acel filtru trece jos FTJ cu Fcut = 3300 Hz. Pe placa demo este aplicat acel FTJ doar la intrarea in ADC ( AN0 ) a dsPIC-ului ( MIC_SIG ). Mai precis as aplica la intrarea in codec chiar MIC_SIG si nu MIC2.

 

 

In loc de LM4811 as putea folosi acel pre-amplificator si la iesire, adica intre iesirea din codec si casti ?

post-181251-0-63098400-1486408312_thumb.png

post-181251-0-50009100-1486408326_thumb.png

post-181251-0-56953300-1486408899_thumb.png

Editat de mircang9
Link spre comentariu

Salut,

Ai facut bine ca ai postat manualul cu schema placii. Pot sa-ti spun urmatoarele.

  • [*]-Nu ai nevoie de PIC18. Semnalele de la TARGET_DATA si TARGET_CLOCK de la pag 35 sunt cele pe care le-ar genera PicKit3 sau ICD2. Mai ai de conectat Vdd, MCLR si masa si ai si programare si debug. [*]-R42, R43 si R45 de la pag 38 sunt cele pentru polarizare, despre care vorbeam intr-un post anterior. Fara ele sau ceva echivalent, nu merge [*]-Nu diluez sacazul. Il folosesc solid, asa cum e. [*]-Nu cunosc temperatura letconului de acasa. Nu am statie de lipit. Ptr lipituri uzuale folosesc o chinezarie, careia i-am facut un regulator de tensiune cu un triac; un fel de light dimmer. Reglez temperatura putin peste limita la care se topeste fludorul, dar nu prea mult, ca sa evit evaporarea imediata a sacazului. In timp m-am obisnuit cu pozitia optima. Daca sacazul se evapora imediat, varful e prea fierbinte si se va si arde rapid. De fapt se acopera cu oxid pe care nu il mai poti elimina prin simpla stergere de buretelul umed. Daca ai ajuns in situatia asta, varful trebuie curatat prin frecare pe o bucatica de lemn, apoi inundat cu sacaz si aliaj de lipit ptr re-formare. In niciun caz nu se da cu smirgel sau cu pila ptr ca l-ai distrus. [*]-Cand ma mai duc la statia aia de lipit, aplic aceleasi reguli si temperatura e pe la 350-375 grade. [*]-Executia unei lipituri mici dureaza maxim 2-3 secunde. Daca dureaza mai mult, ceva nu e in regula. Asta inseamna de la decapare incorecta pana la temperatura sau putere nepotrivita. De ex., cand am de lipt ceva mai baban, mai dau un pic de shfung de la regulator, apoi il dau inapoi pe pozitia normala. Sau daca nu lipesc un interval mai mare, reduc temperatura ca sa menajez varful. [*]-Daca pui preamplificatorul la iesire, nu LM4811, nu cred ca vei putea comanda casti de 32 Ohmi. Filtreaza, dar trebuie amplificator ca sa auzi ceva. Dar daca ai alte intentii, e posibil sa mearga fara LM4811.

Editat de cirip
Link spre comentariu

PIC Kit 2 trebuie sa-l leg la toate Vdd, Vss - urile de la dsPIC ?

 

Din Pic Kit 2 v2.61 din calculator trebuie sa setez Vpp = 3 V sau PIC Kit 2 stie sa aplice acea tensiune de programare, ca sa nu ard pinul MCLR ?

 

Asa cum este legat PIC Kit 2 in schema, as putea sa fac si debug ?

 

Ideal ar fi sa scot din codec direct semnal digital ca si analogic cu datele demodulate si apoi sa trec printr-un comparator si sa maresc acele date la 27 V Pk-Pk. Imi trebuie ca datele demodulate la iesire sa nu aiba pentru "1" logic 3.3V ci 27V !

 

Cum fac medierea adica sa aplic referinta la mijlocul semnalului dupa FTJ din demodularea FSK pentru a obtine datele extrase ? O pot face din soft sau la iesire prin comparator ? In Matlab era acel 0.08. Dar se poate intampla sa fie alta valoare medie ( de referinta ). Cum o aflu ? Apoi cum setez pragul de referinta ? La intrare iesirile din operationale la preamplificator si filtru antialiere au valoarea de referinta de Vdd/2 adica 1.65V masurat cu multimetrul. Chiar la iesire din codec referinta masurata este 0.7V.

 

Schema pentru TARGET_REFERENCE_CLOCK o sa o testez cu osciloscopul daca scoate 12 MHz apoi daca este corecta o introduc in schema finala.

 

Am vazut ca POWER_GOOD nu trebuie. Era aplicat la acel PIC18F. Pot lasa iesirea de POWER_GOOD in aer la regulator ?

 

dsPIC33FJ128GP802 l-am abandonat deocamdata pentru ca pinii DCI trebuie remapati din soft, ceea ce e putin mai complicat.

post-181251-0-63392200-1486491132_thumb.png

post-181251-0-09001900-1486491159_thumb.png

post-181251-0-36247700-1486491171_thumb.png

post-181251-0-13169900-1486491729_thumb.png

post-181251-0-92584500-1486491999_thumb.png

Editat de mircang9
Link spre comentariu

PIC Kit 2 trebuie sa-l leg la toate Vdd, Vss - urile de la dsPIC ?
Trebuie sa conectezi toti pinii ceruti de interfata ICSP. Ai toate detaliile in manualul PicKit2-ului.
post-174676-0-31589900-1486525856_thumb.png
Din Pic Kit 2 v2.61 din calculator trebuie sa setez Vpp = 3 V sau PIC Kit 2 stie sa aplice acea tensiune de programare, ca sa nu ard pinul MCLR ?
Vpp=12V in timpul programarii, Vdd in functionare normala si Vss in reset. 3V nu au cum sa arda MCLR.

Asa cum este legat PIC Kit 2 in schema, as putea sa fac si debug ?
Conecteaza asa cum se arata in documentatie si vei putea face si programare si debug. Eu fac debug direct pe procesor in mod curent.

Cum fac medierea adica sa aplic referinta la mijlocul semnalului dupa FTJ din demodularea FSK pentru a obtine datele extrase ? O pot face din soft sau la iesire prin comparator ? In Matlab era acel 0.08. Dar se poate intampla sa fie alta valoare medie ( de referinta ). Cum o aflu ? Apoi cum setez pragul de referinta ?
Nu ai niciun motiv sa folosesti comparator extern, hardware.Totul se face soft, inclusiv limitarea. Foloseste functia "sign()", cred ca am mai spus. Pragul de comparare este componenta de CC a semnalului. Asta nu este altceva decat media semnalului demodulat extrasa cu un filtru trece jos cu frecventa de taiere foarte joasa. Acest filtru va urmari si variatiile lente de amplitudine, ceea ce va face pragul sa se adapteze permanent la semnal in mod automat. Ruleaza scriptul matlab cu care ai demodulat, dar adauga si filtrul de extragere a pragului. Parametrul acela "a" foarte mic inseamna frecventa de taiere joasa.

Uite cum se extrage pragul de decizie din semnalul demodulat. Am folosit a=0.00002 si o singura sectiune de filtru trece jos.

post-174676-0-42595100-1486529184_thumb.png

Am vazut ca POWER_GOOD nu trebuie. Era aplicat la acel PIC18F. Pot lasa iesirea de POWER_GOOD in aer la regulator ?
Probabil ca da, daca nu il folosesti. Semnalul Power_Good e util la secventierea surselor multiple sau la protectie brown-out. Dar daca nu iti trebuie, zici pas!


Editat de cirip
Link spre comentariu

Salut,

 

Te rog, daca vrei sa-mi dai scriptul cu care ai generat ultimul grafic de mai sus in Matlab. Adica valoarea medie a semnalului. Eu am incercat sa obtin datele astfel: y_data(k) = sign(y_data(k)-medie(k)), unde medie(k) este valoarea medie a k-25000:k+25000 adica a 50000 de esantioane ( a=0.00002 ), k fiind la mijlocul celor 50000 esantioane.

 

Inseamna ca cu dsPIC pot sa fac toate operatiile, nu ? adica: filtrare trece banda + demodulare FSK. Iar la iesirea din codec vor fi datele gata extrase: "1" logic 3.3 V si "0" logic 0V. Asa e ?

 

Iar pentru a obtine pentru "1" logic 27V si pentru "0" logic 0V voi folosi un comparator hardware ( alimentat la 27V ) cu pragul setat la 1.65V adica 3.3V/2. Asa e ? Sau mai intai amplific 3.3V pentru "1" logic la 5V/12V si apoi prin comparare fac 27V pentru "1" logic ?

 

Filtrarea trece banda FTB o fac cu 513 coeficienti FIR pentru cate 512 esantioane la intrare si apoi demodulare FSK.

 

O sa vad daca filtrarea FTB+demodularea le va putea executa dsPICu in timp real adica sa tina pasul cu semnalul de la intrare din linia telefonica.

 

Afisez scriptul modificat de mine.

 

x_in=wavread('ch6_filtrat.wav');
%Demodulare
%===========
x_lim=sign(x_in);
delay=11; n1=100000;
for k=delay:n1
x_mul(k)=x_lim(k)*x_lim(k-delay+1);
end
%Filtrare trece jos a datelor
%============================
y_data=zeros(1,n1);
a=0.01;
for k=2:n1
y_data(k)=(1-a)*y_data(k-1)+a*x_mul(k); % Primul FTJ
end
for k=2:n1
x_mul(k)=(1-a)*x_mul(k-1)+a*y_data(k); % Al 2-lea FTJ
end
for k=2:n1
y_data(k)=(1-a)*y_data(k-1)+a*x_mul(k); % Al 3-lea FTJ
end
figure(2)
%Afiseaza datele demodulate direct
%=================================
plot(y_data(25001:75000), 'b');hold on;
%FTJ pentru componenta in curent continuu - valoarea medie
%valoarea medie o obtin pentru 50000 esantioane odata ( a = 0.00002 )
for k=25001:75000;
i=0;
for j=k-25000:k
i=i+y_data(j);
end
for j=k+1:k+25000
i=i+y_data(j);
end
z_data(k)=i/50000;
end
plot(z_data(25001:75000), 'g');hold on;
%Generare date dreptunghiulare
%=============================
for k=25001:75000
%y_lim(k)=0.15 + (sign(y_data(k)-0.08)+1)/20;
y_lim(k)=0.15 + (sign(y_data(k)-z_data(k))+1)/20; % aici am inlocuit acel 0.08 cu valoarea medie % z_data(k) din dreptul esantionului k.
end
%Adauga datele dreptunghiulare la grafic
%==========================
plot(y_lim(25001:75000), 'r');hold off;
ylim([0 0.3])
E o problema intrucat demodularea nu am facut-o de la esantionul 1 pana la al 100000-lea esantion ci doar intre 25001:75000, adica limitele extreme din care am eliminat capetele cu cate 25000 esantioane.
In dsPIC pot sa fac mediere pe toate cele 512 esantioane demodulate ODATA si filtrate prin FTJ pentru aflarea valorii medii sau a componentei continue ( pentru cele 512 esantioane curente demodulate ) dupa care pentru cele 512 esantioane curente demodulate aplic pragul de decizie ( calculat din medierea celor 512 esantioane demodulate si filtrate FTJ ) pentru sign ( comparator soft ) ca sa generez datele digitale ? Adica pentru toate cele 512 esantioane demodulate (inmultite cu delay + filtrate FTJ ) sa calculez o singura valoare medie ca prag de decizie. Apoi pentru urmatoarele 512 esantioane demodulate al 2-lea prag mediu, samd ?
In dsPIC o sa fac astfel:
1) preluare 512 esantioane;
2) FTB cu FIR pentru cele 512 esantioane cu 513 coeficienti FIR;
3) semn ( sign ) pentru cele 512 esantioane filtrate;
4) inmultire cele 512 esantioane cu variantele lor intarziate cu k;
5) FTJ in cascada ( eventual 3 FTJ in cascada - FTJ "moving average filter" ) sau
doar unu cu constanta a cu valoarea corespunzatoare sau un FTJ IIR
pentru cele 512 esantioane cu Fcut = 55 Hz pentru 50 bps ( Hz ) viteza de
comunicatie;
6) Aflarea valorii medii pentru cele 512 esantioane obtinute dupa FTJ.
7) Aplicarea comparatorului soft ( sign ) cu pragul = valoarea medie si generarea a
512 esantioane demodulate FSK adica 512 esantioane din secventa de date
digitale demodulate. Aici, eventual o sa aplic comparator soft invers adica "sign
negat".
8) Reluare pas 1) pentru urmatoarele 512 esantioane, si asa mai departe ...
Editat de mircang9
Link spre comentariu

Scriptul.
Ai trei filtre cascadate, pe care chiar tu le-ai botezat in comentarii "Primul FTJ, Al 2-lea ..." etc. Nu trebuie decat sa mai adaugi unul cu exact aceeasi formula, dar cu o valoare diferita a lui a, care sa faca filtrarea componentei continue. Nu inteleg de ce faci media asteptand sa se stranga 50 de mii de esantioane, apoi sa le mediezi. Consumi si memorie si timp. Pana incarci 50 de mii de esantioane la 8KHz rata de esantionare, vin peste tine 3 biti de date (la 50 baud), pe care ii ratezi. Calculul mediei se face recursiv, esantion cu esantion, nu pe blocuri.

Inseamna ca cu dsPIC pot sa fac toate operatiile, nu ? [...]
dsPICul poate sa faca toate astea, daca e programat corect.

Iar la iesirea din codec vor fi datele gata extrase.
De ce sa mai implici codecul? Odata ce ai trecut prin functia sign(), ai doar 1 si 0, pe care le poti scoate la un pin. Ce sa mai faci cu DACul din codec? Semnalul e deja digital.

Iar pentru a obtine pentru "1" logic 27V [...]
Sunt multe solutii posibile, una dintre ele fiind cea cu comparator, asa cum ai propus. Conteaza, insa, detaliile. Dar cred ca e bine sa te concentrezi pe demodulare intai.

In dsPIC pot sa fac mediere pe toate cele 512 esantioane[...]
Poti, dar de ce ai face-o? E ineficient. Foloseste relatia recursiva pe care o ai deja in script. Valoarea medie se calculeaza din mers si foloseste numai 2 locatii de memorie: esantionul curent (y[n]) si cel anterior(y[n-1]). Nu e necesar sa astepti sa se umple memoria ca sa-i faci media. Nu uita ca semnalul tau modulat vine in flux continuu. Nu te asteapta sa umpli cate un buffer si sa il procesezi. Uita-te pe graficul pe care am pus si media. La fiecare bit extras din demodulator, media are o mica corectie.
Mai e ceva. Daca faci suma a 50 de mii de esantioane, e foarte posibil ca nr rezultat sa nu incapa intr-un registru de 16 biti al dsPICului. Poti declara ca long, dar dublezi memoria si creste timpul de procesare. Nu exista pranz gratis. Si ce te faci daca media pe un bloc de 512 esantioane difera de media urmatorului? Unde pozitionezi saltul. Media trebuie sa aiba o evolutie continua. Este ca tensiunea pe un condensator dintr-un filtru RC cu R serie si cond la masa. Pe cond nu ai salt.

In dsPIC o sa fac astfel [...]
Fa intai algoritmul sa mearga in Matlab. Dupa aia il treci pe dsPIC. Parerea mea.

Editat de cirip
Link spre comentariu
Vizitator MIRCAN DAN

Am aplicat FTJ recursiv la fel ca la demodulare cu a=0.00002 si media porneste de la zero sub grafic mult si abia dupa esantionul 60000 ajungea pe la media graficului sau a semnalului. Asa e, m-am gandit si eu sa aplic cei 8 pasi de mai sus pe cate 512 esantioane in Matlab.

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări