Clona95@yahoo.com 508 Proiect De Diploma Petreus Alexandru Text

3URLHFWGHGLSORP 11 Cuprins 1. Introducere ……………………………………………………………………………………………………………….13 2. Obiectivele proiectului ……………………………………………………………………………………………….15 3. $QDOL]œLIXQGDPHQWDUHWHRUHWLF ……………………………………………………………………………….17 3.1. 3UHOXFUDUHDDQDORJLFœLGLJLWDO ……………………………………………………………………………18 3.2. 6LVWHPHGHDFKL]L LLGHGDWH ……………………………………………………………………………………20 3.3. DSP – procesoare digitale de semnal ………………………………………………………………………22 4. Componentele sistemului ……………………………………………………………………………………………25 4.1. Modulul 1713 ………………………………………………………………………………………………………25 4.2. Arduino UNO ……………………………………………………………………………………………………..26 4.3. Matrice LED -uri ………………………………………………………………………………………………….28 5. 0HWRGHGHDQDOL]DVHPQDOXOXL …………………………………………………………………………………..31 5.1. FFT …………………………………………………………………………………………………………………….31 5.2. FHT ……………………………………………………………………………………………………………………32 6. 3URLHFWDUHœLLPSOHPHQWDUH …………………………………………………………………………………………33 6.1. Hardware ……………………………………………………………………………………………………………33 6.1.1. Alegerea modulului microfon …………………………………………………………………………34 6.2. Software ……………………………………………………………………………………………………………..38 6.2.1. 0Vurarea Volumului …………………………………………………………………………………..38 6.2.2. Analiza FFT ………………………………………………………………………………………………..42 6.2.3. Analiza FHT ……………………………………………………………………………………………….45 6.2.4. Afi.aj Matrice LED ………………………………………………………………………………………46 7. 0VXUWRULH[SHULPHQWDOH Concluzii …………………………………………………………………………..49 7.1. 0VXUDUH a nivelului de amplificare ……………………………………………………………………….49 7.2. 0VXUDUH a ))7œL)+7 ………………………………………………………………………………………..54 7.2.1. $FKL]L LD semnalului ……………………………………………………………………………………..54 7.2.2. $ILœDUHD HœDQWLRDQHORU ………………………………………………………………………………….55 7.2.3. 0VXUDUH a FFT …………………………………………………………………………………………..56 7.2.4. 0VXUDUH a FHT …………………………………………………………………………………………..58 7.3. 5H]XOWDWHœLFRPSDUD LL …………………………………………………………………………………………61 7.4. Concluzii …………………………………………………………………………………………………………….63 Bibliografie …………………………………………………………………………………………………………………….64 Anexa 1. Codul care implementeaza algoritmii ))7œL FHT ………………………………………………..65 Anexa 2. Codul volum microfon ……………………………………………………………………………………….68 3URLHFWGHGLSORP 12 3URLHFWGHGLSORP 13 I. INTRODUC ERE Semnalele VXEGLIHULWHIRUPHVXQWHOHPHQWHGHED]DO  LLGH]LFX]L&HOPD întâlnit este semnalul vocal FX DMXWRUXO FUXLD VH SRDWH FRPXQLFD v  L oameni, afla L în acelaL ORFVDXODGLVWDQ SULQ LQWHUPHGLXOWH cele auzite, la radio, sau Y]XWH OD WHOHYL]RU FDUH SHUPLWLQIRUPDUHD L luarea unor decizii într-un anumit domeniu; sau semnalele utilizate de medici pentru a afla VWDUHD GH VQWDWH D XQXL SDFLHQW DVFXOWDUHD EWLO vederea stabilirii unui diagnostic.[2] Contribu LDORUHVWHHVHQ LDOvQGRPHQLX maritime L DHULHQH echipamentele sonar, radar, comunica LL UDGLR L SU in satelit, etc.), colectarea LSURFHVDUHDGDWHORUPHWHRURORJLFH De asemenea semnalele care vin din spa LXGHODVDWHOL LVXQWXWLOHOWLLQ LILFHGHVSUHXQLYHUV6HSRDWH , deci, VSXQHFVHPQDOHOHXWLOHRPXOXL sunt numeroase L diversificate. ˛n exemplele de semnale de mai sus acestea sunt func LLGHRVLQJXUYDULDLQGHSHQGHQW WLPSXO [2] DeLVXQWFHOPDLGHVvQWkOQLWHDFHVWHVHPQDOHQX 9RUELQGGHVSUHXQFRUSvQFUFDW HOHFWULFGHRIRUPRDUHFDUHVHPQDOXHOHFWULFRIXQF  LHFHGHSLQGHPDLGHJUDEGHSR]L LDVSD LDO [2] ADGDUXQVHPQDOVHSRDWHGHILQLFDILLQG o func LHGHXQDVDXPDLPXOWHYcare WUDQVSRUWLQIRUPD  LHGHVSUHQDWXUDXQX i fenomen fizic. [2] ˛n general semnalele sunt legate de obiecte concrete care se numesc sisteme. 6HPQDOHOH VXQW JHQHUDWH GH XQHOH VLVWHPH LDU DOWH informa LLGLQHOH 8QVLVWHPHVWHGHILQLWFD RHQWLWDWHFDUHSUHOXFUHD] unul sau mai multe VHPQDOHSHQWUXDUHDOL]DRDQXPLW func LHGHFLvQILQDOSHQWUXDJHQHUDQ . Orice VLVWHPDUHRLQWUDUHODFDUHVHDSOLFVHPQDOHGHLQW LRLHLUHODFDUHVHJHQHU semnale.[2] Aceste semnale, constituie mrimi de intrare pentru anumite sisteme fizice œi tehnice, care, ca urmare a legilor interne de evolu ie, atunci când au la intrare astfel de mrimi, manifesta la ieœire niœte rspunsuri. Fcând o abstractizare de natura matematica asupra acestor fenomene se poate considera ca semnalele reprezint func ii de timp iar sistemele reprezint sisteme de ecua ii integro-diferen iale. Solu iile acestor sisteme de ecua ii integro- diferen iale reprezint func ii de timp care sunt semnalele de ieœire ale sistemelor când s unt excitate cu semnale de intrare. [3] Exista o teorie matematica vasta de rezolvare a acestei probleme în domeniul timp. Din pcate doar pentru un numr foarte mic de clase de sisteme i de tipuri de func ii de semnale de intrare se poate ob LQH R IRUP analitica (solu LH VXE IRUP de IRUPXO PDWHPDWLF ) pentru semnalele de ieœLUH’DWILLQGDFHDVW situa ie, s-a cutat ieœirea din acest impas prin rezolvarea numerica a problemelor, în acest sens dezvoltându -VH R UDPXU a PDWHPDWLFLLQXPLW metode numerice. [3] 3URLHFWGHGLSORP 14 Deoarece semnalele œi sistemele sunt sisteme integro diferen iale care evolueaz în timp (au variabila independent timpul) problematica abordat s-a specializat în timp pentru astfel de clase de probleme odat cu evolu ia tehnologiei în domeniul electronic. [3] Aceast tehnologie care are la baz ca model matematic teoria func iilor continue, este valabil œi astzi dar implementarea unor prelucrri de mare fine e este limitat de tehnologie œi de pre . Apari ia tehnologiei circuitelor digitale care a dus la apari ia calculatoarelor numerice, œi-a pus amprenta œi asupra prelucrrii semnalelor. ˛n primul rând calculatoarele numerice lucreaz ca œi cum fenomenele interne se modific doar la momente bine precizate de timp, între dou momente succesive starea sistemului rmânând nemodificat . Apari ia acestei probleme a dus la studierea consecin elor care decurg din punct de vedere matematic œi fizic prin transformarea semnalelor din func ii definite pe o mul ime dens în func ii definite pe o mul ime discret, adic se cunoaœte valoarea unui semnal doar în momente discrete de timp nu œi între aceste momente. [3] Studiul acestor consecin e a dus la stabilirea unei teorii care eviden iaz limite în care este posibil studierea fenomenelor din domeniul continuu cu tehnologie din domeniul discret œi consecin a acestei teorii a fost apari ia unor tehnologii de conversie a semnalelor continue în semnale discrete în timp œi de semnale discrete în timp în semnale continue. De asemenea s-a dezvoltat o teorie matematic prin care s-a studiat transformarea sistemelor integro – diferen iale, care reprezint modele matematice ale sistemelor în domeniul continuu în sisteme a cror evolu ie se realizeaz în momente discrete de timp. Datorit capacit ii deosebite de prelucrare a calculatoarelor utilizând tehnica discret  în timp, se pot realiza prelucrri de mare fine e asupra semnalelor.[3] 3URLHFWGHGLSORP 15 II. OBIECTIVELE PROIECTULUI Acest proiect DUH FD VFRS XQ VWXGLX WHRUHWLF œL H[SHULPH ndelor VRQRUHSULQLQWHUPHGLXOXQRUVLVWHPHGHGH]YROWDUHF  EL L vQ FD]XO GH ID  ILLQG XWLOL]DW SODWIRUPD $UG AtMega328p. Pentru aceaVWDHVWH QHFHVDUDFKL]L LDVHPQDOXOXLVizându -se module cu microIRQ ILLQG UHDOL]DW conversia analog-GLJLWDO D VHPQDOXOXL XUPDW G GLJLWDOœLGHSUH]HQWDUHDJUDILFDGDWHORUSUHOXFUDW $QDOL]D VHPQDOHORU DXGLR HVWH IRORVLW vQ PDL PXe domenii de activitate, de la ELRORJLH VWXGLHUHD VXQHWHORU HPLVH GH SVUL L DQLPDOH  QDYLJD LH VRQDUXO  medicale LSkQDODXQHOHFXFDUDFWHUPLOLWDU7RWXLGRPHQ FHOPX]LFDO XQGH HVWH IRORVLW vQ produc LH PL[DUHLPDVWHUL]DUH L FHODO audio, la verificarea canalelor individuale, în designul LYHULILFDUHDHFKLSDPHQWHOde înregistrare, a egalizatoarelor, a boxelor (pentru detectarea rezonan HORU nedorite, a sunetelor QHFODUH DLQVWUXPHQWHORUPX]LFDOH QRWHDFURUde sunete a instrumentului respectiv), etc. ’DWRULW YHUVDWLOLW  LL VDOH $UGXLQR HVWH IRORVLW vQ QHQXPUIRDUWHVLPSOHSkQODXQHOHFRPSOH[H ILLQGXWLOL]DWvQSUH]HQWODRVFDU VvQORFXLDVF FX VXFFHV XQHOH HFKLSDPHQWH GHGLFDWHF volumului lor, sunt mai pu LQ DFFHVLELOH  ÌQ DFHVW FRQWH[W L SH computa LRQDO HDOHPLFURFRQWUROHUXOXL$UGXLQRDPDOHVVIRrealiza un analizor de semnale audio. Semnalul estHSUHOXDWGHFWUH de microfon, amplificat, convertit analog-digital œLDSRL prelucrat cu ajutorul unui microcontroler Arduino UNO, utilizând pe rând, Transformata )RXULHU5DSLGœL7UDQVIRUPDWD+DUWOH\5DSLG/DILQDOcu ajutorul unei matrice de led-uri cu 32 de coloane si 8 rânduri. Se vor implementa doi algoritmi, pentru analiza spectrDODVHPQDOXOXLXUPkQG FRPSDUDWHSHUIRUPDQ HOHDFHVWRUD LQkQGFRQWFVHXW QXDXXQLWDWHGHGLFDWSHQWUXFDOFXOXO numerelor cu zecimale. SH GRUHœWH DQDOL]D XQRU DOJRULWPL GH SUHOXFUDSHUIRUPDQ HORU DFHVWRUD ILLQG XWLOL]DWHSHSODWIRUPH unt dedicate pentru DFHVWWLSGHSUHOXFUULGHVHPQDOH 3URLHFWGHGLSORP 16 3URLHFWGHGLSORP 17 III . $1$/,=ø,)81’$0(17$5(7(25(7,& $FKL]L LDœLSUHOXFUDUHD QXPHULF a semnalelor” UHSUH]LQW un exemplu de domeniu œWLLQ LILFœLLQJLQHUHVF FHDUHFDRELHFWLYJVLUHDGHUVSXQVXULFkW ODXUPWRDUHOHvQWUHEULFHSRWILIRUPXODWHGLQSXQFW • &XP SRW WUDQVIRUPD FkW PDL ILGHO œL PDL UDSLG vQFRQMXUW RUvQGDWHQXPHULFHSHFDUHDSRLVOHSRWPHPRUDœ • &HIDF FXGDWHOH QXPHULFHUH]XOWDWHvQXUPDDFKL exterior ?” 3ULPD vQWUHEDUH VH UHIHU OD SUREOHPDWLFD LQWHUID (sisteme FHOXFUHD]FXYDORULGLVFUHWHELQDUH ODPHGLXOv IL]LFH vQ PDMRULWDWH QHHOHFWULFH FX YDORUL FRQWLQXUDPXUDGHLQJLQHULHFHVHRFXSGHDFHVWVXELHFWDIODW HOHFWURQLFœLœWLL FDOFXODWRDUHORU $FKL]L LD QXPHULF D VHPQDOHORU YL]HD] WHRULD IXQF LRQ FRQVWUXF LDWHVWDUHD œLLQWHJUDUHDvQDSOLFD LLDVHQ]RULORUHOHF actuatorilor (elHPHQWH GH DF LRQDUH HOHF WULF  GLVSR]LWLYHORU GH FRQGL LRQDUH semnalelor electrice (amplificare/atenuare, pre-ILOWUDUH  œL D FLUFXLWHORUGHFRQYHU analog-QXPHULF œL numeric-DQDORJLFDVHPQDOHORUHOHFWULFH [1] Cea de-DGRXDvQWUHEDUHIRUPXODWDQWHULRUHVWHOHJD OSUHOXFUULL datelor FXDMXWRUXOVLVWHPHORUQXPHULFHGHFDOFXO’LVFLSOLQD semnalelor este un GRPHQLXGHLQJLQHULHFXUGFLQLDGkQFLvQPDWHPDWLF GHYDVWœLGHDFWXDO& DFHVWHD SUHRFXSUL OHJDWH GH DFHVW GRPHQLX D u existat FX PXOW vQDLQWH GH D DSUH QR LXQHDGHVLVWHPGHFDOFXOQXPHULF [1] ÌQ6LU,VDDF1HZWRQFHUFHWkQGQDWXUDOXPLQLL printr-o SULVPGHVWLFOGHVFRPSXQkQGDVWIHOOXPLQDvQFRPSRQ IUHFYHQ  FHO HœDSWH FXORULDOHFXUFXEHXOXL ’HRDUHFHEDQGDFRORUDWRE LQ XQIHQRPHQLQVXEVWDQ LDPDV 1HZWRQDGHQXPLW -o spectru (din latinescul spectrum = IDQWRP ). Mai mult, Newton a WUHFXWUD]DGHOXPLQGHVFRPSXVGH SULPDSULVPSULQWU -o a doua SULVPGLVSXVLQYHUVrezultat, spectrul luminii a IRVWUHFRPSXVvQUD]DGHOXPLQDOERULJLQ [1] $VWIHO 1HZWRQ D UHDOL]DW SULQWUH SULPLL RSHUD LL semnal UD]D GH OXPLQ  vQ VSHFWUXO VX GH IUHFYHQ H œL GH VL (recompunere) a acestuia, LQWURGXFkQGvQœWLLQ WHUPHQXOGH spectru. [1] 8QDOWH[HPSOXQRWDELOFDUHLOXVWUHD]YHFKLPHDSU SUHOXFUULL VHPQDOHORUvOUHSUH]LQWFD]XOOXL-HDQ%DSWLVWH-RVH care în 1798 avea 30 de anLœLSDUWLFLSDFDRPGHœWLLQ vQFDPSDQLDPLOLWDU Napoleon din Egipt. ˛n 1807, )RXULHU œL -a prezentat la „Institut de France” ideile VDOH SH WHPD GLVWULEX LHL œFOGXULL SULQ FRUSXULOH VROLGH DYDQVkQG R VHULH GH VROX LL ED]DWH SH VH rii trigonometrice. Deoarece lucrarea sa a fost FRQWURYHUVDW la YUHPHDDFHHD)RXULHUDWUHEXLWV DQLSkQ FkQGPRQXPHQWDOXOWUDWDWGHVSUHFOGXUDY]XW [1] )RXULHUDGHPRQVWUDWvQ OXFUDUHDVDIDSWXOFVHPodice pot fi reprezentate GHVFRPSXVH  FDVXP SRQGHUDWGH VLQXVRLGH vQUXGLWH (sinusoLGH DYkQG IUHFYHQ H 3URLHFWGHGLSORP 18 multipli ai XQHL IUHFYHQ HGHED] (ODDUWDWGH DVHPHQHD F VHPQDOHOHDSHULRreprezentate ca sume infinitezimale (integrale) ale unor sinusoide neînrudite armonic. Aceste GRXLGHLHVHQ LDOHVWDX DVW]LODED]DIDLPRDVHORU Serii Fourier œLD Transformatei Fourier – instrumente GHED]XWLOL]DWHvQDQDOL]D œLSUHOXFUDUHDQXPHULFDVHPQDOHOR [1] ˛n 1942, Ralph V.L. Hartley a proSXVRDOWHUQDWLYOD7UDQVIRUPDWDXQ FHUFHWWRU vQ GRPHQLXO HOHFWURQLFLL FDUH DFWLYDW &RPSDQ\ œL OD %HOO Laboratories în peroada 1915-  ÌQ DFHDVW SHULRDG D OX dezvoltarea receptoarelor radio pentru testele radiotelefonice transatlantice œL a efectuat cercetari în domeniul radio-releelor. ˛n 1915 a patentat Oscilatorul Hartley, iar lucrarea sa din în 1928 DHQXQ DW ceea FHDYHDVGHYLQOHJHD Hartley, care a stat la baza Teoriei matematice DFRPXQLFD LHLSXEOLFDWGH Claude Shannon în 1948. Transformata Hartley este strâ QV OHJDW GH 7UDQVIRUPDWD )RXULHU numai valori reale (spre deosibire de Transformata Fourier, care folseWHQXPHUHFRPSOH[H œ este inversa sa. 9HUVLXQH GLVFUHW D 7UDQVIRUPDWHL +DUWOH\ D IRVW RSXV de Ronald N. Bracewell, SURIHVRU GH LQJLQHULH HOHFWURQLF VSD LDO WHOHFRPXQ o la universitatea Stanford, în 1983 FD œL R DOWHUQDWLY PDL HILFLHQW GLQ SXQFW GH DQDOL]DYDORULORUUHDOHFDUHVXQWGHRELFHLPDLFRPXQ III.1 Prelucrarea ana lRJLFœLGLJLWDO 6HPQDOHOHDQDORJLFHVHvQWkOQHVFSHVWHWRWvQQDLvQFRUHOD LHFX unele VLVWHPH WHKQLFH 3UHOXFUDUHD VHPQDOHORU DQDORJLFH V analogice, ca de exemplu: emi WRDUH LUHFHSWRDUH UDGLR L GH WHOHY sistemele aferente distribu LHL HQHUJLHL HOHFWULFH WUDQVIRUPDWRDU e, convertoare statice, etc.); UHJXODWRDUH DQDORJLFH FH FRQWUROHD] YDORDUHD XQXL  LH etc.) dintr-XQ SURFHV FX UHJODUH DXWRPDW $FHVWH VLVWHPH condensatoare, diode, etc. L VXQW DOLPHQWD WH FX HQHUJLH HOHFWULF (OH VXQ semnale analogice pe care le supun XQRUSUHOXFUULQXPLWH SUHOXFUULDQDORJLFH . &DXUPDUHDGH]YROWULLWHKQLFLLGHFDOFXOPRGHUQH L tot mai mult utilizat în diferitele etape ale unui proces, inclusiv în ceea ce priveWH SUHOXFUDUHD semnalelor. 3UHOXFUDUHD QXPHULF D VHPQDOHORU QX UHSUH]LQW DOWFHYD DMXWRUXOFDOFXODWRUXOXLDVHPQDOHORUWUDQVIRUPDWH realiza anumite oELHFWLYH/HJWXUDGLQWUHVHPQDOXODQDORJLFL LDOLSURFHVDUHDQXPHU VHPQDOHVWHUHSUH]HQWDWvQILJXUD III.1. 3URLHFWGHGLSORP 19 Fig.III.1. Schema bloc prelucrare semnale [2] Schema din figura III.1 HVWH XQD JHQHUDO vQ FDUH VH UHPDUF  D LQFOXGHULL unor blocuri de conversie analog/numeric LUHVSHFWLYQXPHULFDQDORJLFFHU GLQWUH FHOH GRX GRPHQLL DQDORJLF L UHVSHFWLY QXPHULF 8QHRUL vQV reconversia semnalelor prelucrate, numerice, în semnale analogice, de exemplu atunci când se doreWH GRDU DQDOL]D L PHPRUDUHD UH]XOWDWHORU  vQ DFHV DQDORJLFSRDWHOLSVL’LQWUHGRPHQLLOHvQFDUHVHXWLO se amintesc: – comunica LL WHOHIRQLDPREL OPXOWLSOH[DUHDPDLPXOWRUFRQYRUELU LILUID[XO internetul, conferin HOHYLGHR – radioul LWHOHYL]LXQHDGLJLWDO – FRQGXFHUHDDXWRPDWDSURFHVHORU URER  LVHUY omecanisme, controlul proceselor industriale complexe; – multimedia: procesarea LVWRFDUHDVXQHWXOXLVDXLPDJLQLL FRPS -discul; – PHGLFLQ GLDJQRVWLFDUHDFRPSXWHUL]DWPRQLWRUL]DU  LLORUYLWDOH – militar: securitatea comunica LLORUSURFHVDUHUDGDUJKLGDUHD proiectilelor. 3UHOXFUDUHD QXPHULF D VHPQDOHORU SUH]LQW XQHOavantaje fa  GH SUHOXFUDUHD DQDORJLF • flexibilitate – SUHOXFUDUHDQXPHULFVHIDFHSULQLPSOHPHQWDUH algoritm ce poate fi uRUVFKLPEDWVDXDFWXDOL]DWIUPRG ificarea sistemului fizic de calcul; • fiabilitate – DFHDVWDGHSLQGHGRDUGHSDUWHDKDUGZDUHvQJHQ VRIWZDUHQXVXIHUPRGLILFULvQWLPS • stocare LWUDQVPLVLHSHUIRUPDQWDGDWHORU – datele numerice pot fi stocate rapid LFX densitate mare pe unitatea de volum. ˛n transmisia datelor semnalele numerice nu sunt influen DWH semnificativ de zgomot; • integrabilitate – sistemele numerice pot fi uneori realizate sub forma unui circuit integrat, cu impact pozitiv asupra fiabLOLW  LLLFRVWXULORU • eficien HFRQRPLF – GDFODVLVWHPXODQDORJLFSHQWUXVFKLPEDU LPSXQH vQORFXLUHD XQRU FRPSRQHQWH IL]LFH  FHHD FH LPXQXLVLVWHPQXPHULFVFKLPEDUHDFRPSRUWULLVLVWHP XOXLVHIDFHSULQVFKLPEDUHDX  LGLQ DOJRULWPXOGHFDOFXOIUPRGLILFDUHDIL]LFDDFHVWXLD • performan HVXSHULRDUH – H[LVWXQHOHSURFHVULFHSRWILUHDOL]DWH numerice (de exemplu, filtre de ordin ridicat sau filtre cu anumite caracteristici de frecven   3URLHFWGHGLSORP 20 &X WRDWH DYDQWDMHOH VDOH SURFHVDUHD QXPHULF  FRPSOHW SUHOXFUDUHDDQDORJLF vQVvQXOWLPDYUHPHHDFk WLJWRWPDLPXOWWHUHQILLQG mai multe produse, de la cele destinate WHKQRORJLLORUDYDQVDWHSkQ la cele de uz casnic. Prin urmare, studiul semnalelor LDOSURFHVULLQXPHULFHDDFHVWRUDPHULW [2] ,,,6LVWHPHGHHFKL]L LLGHGDWH $FKL]L LDGHGDWHVHSRDWHGHILQLvQWU -un sens mai larg ca fiind prRFHVXOGHRE LQHUHGDWHORUGHODRVXUVGHRELFHLXQDH[WHULRDUVLVWHP WHKQLF DFKL]L LD GH GDWH VH UHIHU OD PVXUDUHD XQRU SUHOXFUDUHDUH]XOWDWHORUDFHVWRUPVXUWRUL . [5] Structura unui sistem de achizi LLGHGDWHHVWHvQJHQHUDOFRPSXVG • VHQ]RULVDXWUDGXFWRDUHFDUHDXUROXOGHDIXUQL]DX DIHQRPHQXOXLIL]LFSHFDUHGRULPV -OSUHOXFUP . • multiplexor analogic, care preia VHPQDOHOHGHODVHQ]RULœLOHWUDQVPFWHXQXOFRPXWkQGLQWUHFDQDOHOHGHLQWUDUH • amplificator de semnal, care permite adaptarea nivelului semnalului la un nivel optim SHQWUXVLVWHPXOGHDQDOL]DGDWHORU • filtrul de intrare, care este un filtru trece-MRVOLPLWHD]FRQ LQXWXOVSHFWUD IUHFYHQ HOHGRULWH • convertorul analog-GLJLWDO $’&  FDUH WUDQVIRUP VHPQDOXO D numeric/digital. • memoria, care poate fi RAM, un buffer, sau alte dispozitive de stocare a memoriei. 0RUIRORJLFVHPQDOHOHVHFODVLILFvQ • analogice – când atât domeniul câ WœLFR -GRPHQLXOVXQWPXO LPHDQXPHUHORU • cuantizate – FkQGGRPHQLXOHVWHUHDOœLFR -domeniul este discret ‡GLVFUHWH HœDQWLRQDWH FkQGGRPHQLXO HVWHGLVFUHWœLFR -domeniul este real • digitale (numerice) când atât dom eQLXOFkWœLFR -domeniul sunt discrete [6] Semnalele preluate de senzori sunt transmisHvQIRUPDDQDORJLF ctre multiplexor œi FWUH amplificatorul de semnal QXQHDSUDWvQDFHD VWRUGLQH . ’XSDPSOLILFDUHD semnalului la nivelul dorit, VHUHDOL]HD]RILOWUDUHDVHPQDOHORUSHQWUXH în zona de interes$VWIHOVHPQDOHOHVXQWSUHJWLWH pentru convertirea lor în format digital, prin intermediul convertoarelor analog-digitale (ADC)XUPkQGFDGDWHOHUH]XOWDWHV FRQIRUPDOJRULWPLORUGRUL L [6] Convertorul analog-QXPHULF HVWH XQ FLUFXLW FDUH WUDQVIRUP YDULD LHDQDORJLF WHQVLXQHVDXFXUHQW DSOLFDW ODa într-RPULPHQXPHULFFDUH UHSUH]LQWRDSUR[LPDUH FXRDQXPLWSUHFL]LH DYDORU. Pentru a realiza conversia analog-QXPHULFHVWHQHFHVDUFDvQWUHJGRPHQLXOGHYDULD într-XQQXPUILQLWGHWUHSWHHOHP HQWDUHQXPLWH˜FXDQWH·DFURUPULPH UH]ROX LDVLVWHPXOXLDGLFGHQXPUXOGHEL LSHFDUHV [6]. (WDSHOHFRQYHUVLHL$’œL’$  – (œDQWLRQDUHDœLUH LQHUHDHœDQWLRQXOXL ˜VDPSOHDQG – &XDQWL]DUHDHœDQWLRQX lui (reprezentarea printr-un nivel discret) – &RGDUHDQXPHULFDQLYHOXOXLFXDQWL]DWSULQFDUHHVW . [7]. 3URLHFWGHGLSORP 21 ˛n figura III.HVWHUHSUH]HQWDWRVFXUWVHFYHQ GLQWU -XQVHPQDODQDORJLFSUHFHœDQWLRDQHOH RE LQXWH GH OD DFHVW VH PQDO 6HPQDOXO D IRVW HœDQWLRQDW SHULRDGD GH HœDQWLRQDUH  ÌQ ILJXUD III.3 sâ QW UHSUH]HQWDWH DSUR[LPULOH HXUPDUHDFXDQWL]ULL6HREVHUYFILHFDUHHœDQWLRQLD -RPXO LPH ILQLWÌQSDUWHD LQIHULRDUDILJXULLVvQWVFULVHFRGXULOHQXPH cuantizare (numere în baza 2). Aceasta este forma în care sînt prelucrare în calculatorul numeric, sau sunt memorate, sau suQWWUDQVPLVHSULQVLVWHPHGHFRPXQLF e. [7] Fig.III.2. 6HPQDOXODQDORJLFœLVHPQDOXOHœDQWLRQDW [7] Fig.III.3. 6HPQDOXOHœDQWLRQDWœLFXDQWL]DWVHPQDOXOFR [7] 3URLHFWGHGLSORP 22 Circuitele folosite de la achizi LD VHPQDOHORU SkQ OD ID]D GH SURF denumirea de preprocesRDUH ([LVW GLIHULWH tipuri de preprocesoare în fuc ie de natura semnalului analizat, urmarindu-se reprezentarea timp-IUHFYHQ FRQYHQDELODVHPQD III. 3 DSP – procesoare digitale de semnal Procesoarele numerice de semnal, numite în literatura de specialitate DSP-uri (DSP – Digital Signal Processors), sunt sisteme de calcul programabile de tip „single-chip”, destinate SUHOXFUULLFRPSOH[HDVHPQDOHORUGLJLWDOH’HœLVHQXFHVRDUHHOHvQJOREHD]v -un singur circuit integrat principalele subsisteme componente ale unui sistem de calcul (unitate FHQWUDOVXEVLVWHPGHPHPRULHVXEVLVWHPGHLQWUDUHF UHDOL]kQGIXQF LLFRPS GHWUDQVIHUœLGHSUHOXFUDUHDGDWHORU 3HQWUXHIHFWXDUHDXQRUSUHOXFUULvQWLPSUHDODV or, procesoarele de semnal OXFUHD]ODIUHFYHQ HPDULœLGLVSXQGHXQVHWFRPSOH[ UXF LXQLSXWkQGDVWIHO ]HFLGHPLOLRDQHGHRSHUD LLvQYLUJXOPRELO SHVHFXQG 0)/236 – Million Floating-Point 2SHUDWLRQV SHU 6HFRQG  7RWRGDW VWUXFWXUD inteUQ SDUDOHO SHUPLWH HIHFWXDUH mai multor RSHUD LLVLPXOWDQFHHDFHFUHœWHFRQVLGHUDELOSXWHUH -ului. 7HKQLFLOH ’63 WLQG V vQORFXLDVF PHWRGHOH FODVL VHPQDOHORUvQPXOWHGRPHQLL3URFHVDUHDQXPHULFDVHDOHORUDGHYHQLWRWHKQLF vQ PXOWH GRPHQLL SULQWUH FDUH  WHOHFRPXQLFD LLOH ELRPHGLFDOH FRQWUROXO QXPHULF SURFHVDUHD YRUELULLQVWUXPHQWD LDQXPHULFWHKQLFLOHUDGDUVRQDUHWF . ’DF LQL LDO ’63 -XO D DSUXW FD R FHULQ  D SLH LL DFXP SHU -urilor RIHULWHDXIFXWFDGRPHQLLOHGHDSOLFDUHSUDFWLFVH[ œLVRIWRIHULWWRWPDLFRPSOH[œLSXWHUHDGHSURFHVDUH cut ca utilizarea DSP- XULORUvQWRWPDLPXOWHDSOLFD LLVGHYLQXQIDSWRELIU ILU VDX FHOXODUH SOD\HUH DXGLR VDX YLGHR FDPHU – VXQW SURGXVH D FUR IXQF LRQDUHVHED]HD]DSURDSHH[FOXVLYSHSUHOXF UDUHDQXPHULFDVHPQDOHORU 6LVWHPHOH GH SURFHVDUH QXPHULF D VHPQDOHORU XW KDUGZDUH GLJLWDO SUHFXP œL GRX FRQYHUWRDUH XQXO -numeric (ADC – Analog-to- ’LJLWDO &RQYHUWHU  œL XQXO QXPHUL -analogic (DAC – Digital-to-Analog Converter) pentru a vQORFXLGLVSR]LWLYHOHDQDORJLFHVWDQGDUGSUHFXP DPSO Algoritmii SHQWUX SURFHVDUHD GLJLWDO D VHPQDOHORU SRW IL LPSOHPHQWD L SH o mare varietate de structuri digitale: • sisteme logice programabile sau neprogramabile: 6HSRWLPSOHPHQWDDOJRULWPLGHFRGDUHœLGHFRGDUHYLG Scale Integration – FX ,QWHJUDUH SH 6FDU )RDUWH /DUJ  7RWXœL RULHQWDWHFWUHUH]ROYDUHDXQRUDSOLFD LLVSHFLILFH $VWIHOGHVROX LLVXQWPDLUD mici dimensiuni deFkW VROX LLOH SURJUDPDELOH vQV QHFHVLW XQ WLPS PXOW PDL PDSURLHFWDUH XQ FRVW ULGLFDW SHQWUX GH]YROWDUH œL V (actualizat). Procesorul programabil poate fi programat pentru o multitudine de task-uri VDUFLQL 6HXWLOL]HD]SHQWUXVLVWHPHFRPSOH[HœLFDU circuitelor neprogramabile, pentru produse care neFHVLWXQWLPSGHGH]YROWDUHI un cost dHSXQHUHODSXQFWVF]XWVLVWHPHFDUHWUHEXLHXS DOJRULWPLœLVWDQGDUGH3HQWUXRVDUFLQVSHFLILFSU-ul VLSI FDUHDUUHDOL]DDFHODœLWDVN 3URLHFWGHGLSORP 23 • PLFURSURFHVRDUHœ i microcontrolere de uz general: 0LFURSURFHVRDUHOH œL PLFURFRQWUROHUHOH GH X] JHQHUDUHDOL]DSURFHVULvQIRUPHH[WUHPGHJHQHUDOH IRORVLQH[LVWXQVSD LXXQLWDUGHPHPRULHDWkWSHQWUXLQVWU i pentru date. Prin contrast, o DUKLWHFWXU+DUYDUGVHSDUVSD LXOGHPHPRULHvQPHPRU vQFkW DPEHOH V SRDW IL DFFHVDWH VLPXOWDQ &HD PDL P-XULORU XWLOL]HD] DUKLWHFWXU +DUYDUG PRGLILFDW œL VXQW RSWL PL]DWH SHQWUX D HIHFWXD RSHUD vQPXO LUHœLVXPDUHFDUHDFFHVHD]vQPRGVHFYHQ LDOGD memoriei. • procesoare numerice de semnal de uz general: Sistemele de tip DSP au înlocuit în mare parte sistemele dHSURFHVDUHDQDORJLFœLDH[WLQGHUHD FRQVLGHUDELO D DULHL DSOLFD LLORU 3ULQ -urilor este SURJUDPDELOLWDWHD ORU 8Q VLVWHP ’63 SHUPLWH XWLOL]-urile prin scrierea unui nou cod în memoria sistemului. De asemenea, permite actualizarea parametrilor VLVWHPXOXL SH ED]D XQRU QRL DOJRULWPL SHQWUX R PDL E VFKLPEDUH6LVWHPHOH’63VHEXFXUGHSHUIRUPDQ HGHRVprocesorul, sunt practic independeQWHGHWHPSHUDWXUœLSRWUHDF LRQDF H[WHUQHSHvQWUHDJDGXUDWGHYLD DSURGXVXOXL0DLWUDQVSXV vQ GLYHUVH OLPEDMH œL SRDWH IL UXODW SH Grezultate. &RVWXOVLVWHPHORU’63HVWHvQFRQWLQXVFGHUHv VFUHDVFGHODRJHQHUD LHODDOWD3XWHUHDFRQVXPDW ODRJHQHUD LHODXUPWRDUHDDVWIHOvQFkWDVW]LGLVSR UHWHD]IRDUWHELQH ILLQFOXVHvQVWUXFWXULSRUWDELOHÌQSOXVXQHOHRSHU implementate pe baza tehnicilor analogice. [4]. ’XS FXP DP Y]XW PDL VXV VWUXFWXULOH IRORVLWH OD proFHVDUHQXPHULFDVHPQDOHORUDXDYDQWDMHOH LGH]DYDQWDMHOHORU’DFvQFD-urilor de tip VLSI L sistemelor de tip DSP costurile sunt mai mari LDFWXDOL]DUHDORUHVW GLILFLO vQ FD]XO PLFURFRQWUROHUHORU GHX] JHQHUDO FR L Y ersatilitatea lor le fac DFFHVLELOH SHQWUX R JDP ODUJ GHXWLOL]DWRUL 3HQWUX LPSOHPHQWDWHPDLPXOWH OLEUULL FXIXQF  LLGHSURFHVDUH QXPHULFD VHPQDOSURJUDPDELOH GH FWUH XWLOL]DWRU FDUH OH SRDWH F onfigura conform nevoilor sale. Un mare DYDQWDMHVWHIDSWXOFSRWILXWLOL]DWHDXWRQRPVDXv ’DWRULW DFHVWXL IDSW V -a ales folosirea unui microcontroler Arduino UNO pentru prelucrarea semnalelor la frecven HPLFL 3URLHFWGHGLSORP 24 3URLHFWGHGLSORP 25 IV. COMPONENTELE SISTEMULUI Componentele folosLWHSHQWUXUHDOL]DUHDSUDFWLF sunt: modul 1713 Adafruit (microfon œLDPSOLILFDWRU $UGXLQR812XQ/(’œLPRGXOFXPDWULFH -uri HW-692. IV.1 Modulul 1713 Fig.IV.1. Modulul 1713 Adafruit Modul 1713 Adafruit (Fig.IV.1) FRQ LQHXQPLFURIRQ cu electret FXEDQGDGHIUHFYHQ  de 20-20kHz, având LQWHJUDW œL XQ DPSOLILFDWRU 0$;  Fig.IV.2), un circuit integrat special conceput pentru amplificarea semnalelor de la microfoanele HOHFWUHW vQ VLWXD L e în care intensitatea sunetului este YDULDELO ’HDVHPHQHDFRQ LQHœLXQPRGXOGH (AGC), care reduce sunetele înalte pentru a nu satura amplificatorul œL DPSOLILF VXQHWHO joase, ideal pentru detectarea sunetelor audio într-un mediu în care intensitatea sunetului se SRDWHVFKLPEDEUXVF5HJODMXODPSOLILFULLVHSRDWHIDF -ului de la pin-ul Gain la VCC sau la GND, astfel configurând amplificarea la unul din cele 3 setari de 40dB, 50dB, sau 60dB. Deasemenea poate fi schiPEDWUDWDGH Attack/Release de la implicit 1:4000 la 1:2000 sau 1:500 œLWLPSXOGHDWDF 6HPQDOXODXGLRvQFD]XOQRVWUXHVWHUHFHSWDWGHG%GHFWUH0$; GXSDFDUHHVWHWULPLVODSRUWXODQsistemului de dezvoltare Arduino Uno. 3URLHFWGHGLSORP 26 Fig.IV.2. ’LDJUDPEORFVLPSOLILFDW0$;  IV.2 Arduino UNO Fig.IV.3. Arduino UNO Arduino UNO (Fig.IV.3) este un sistem de dezvoltare bazat pe Atmel AVR ATMega328. Acest controler are 2KB SRAM, 32KB memorie flash, 1KB de EEPROM. Sistemul arduino are SLQLGLJLWDOLGHLQWUDUHLHœLUH GLQFDUHœLSHQWUXvQWUHUXSHULH[WHUQH LQWUULDQDORJLFH oscilator cu FXDU de 16MHz, un regulator de tensiune care VWDELOL]HD] tensiunea la 5V œL 3.3V, precum œL XQSLQGHUHVHW)XQ LRQHD]ODRWHQVLXQHGH9œLSRDW sau prin mufa jack de la un alimentator H[WHUQ SDQ OD 9 $FHVWD LQFOXG FRPXQLFD LH ,& œL 63, &R mXQLFD LD VHULDO VH IDFH SULQ LQWHUPHG TX(D1) sau cu ajutorul microcontrolerului ATmega16U2 prin USB. 3URLHFWGHGLSORP 27 Microcontroler-ul ATmega328P (Fig.IV.4) de pe sistemul $UGXLQR812FRQ LQHXQFRQY analog-digital (ADC) care se poate utiliza pentru a converti semnalul audio de intrare în format digital&RQYHUWRUXO$’&HVWHFRQILJXUDWVIRORVHDVF FDUHYDILLQFD]XOQRVWUXVXUVDGHWHQVLXQHVWDELOL]D &RQILJXUPIU HFYHQ DGHFORFNDOFRQYHUWRUXOXL$’&ODN+] -ul la 32. /D DFHDVW IUHFYHQ  HœDQWLRDQHOH GLJLWDOH SRW UHSUR 19,32kHz (teorema lui Nyquist-Shannon), suficient pentru semnale audio. Fig.IV.4. Diagrama bloc Atmega328P 3URLHFWGHGLSORP 28 IV.3 Matricea LED -uri Fig.IV.5. Modul HW-692 matrice LED $ILœDMXOIRORVLWHVWHXQPRGXO+: - GHPDWULFL/(’[LQOQ XLWHv (Fig.IV.5)UH]XOWkQGGHFRORDQHœLU â nduri, bazat pe driver-ul MAX7219 (Fig.IV.6). Acest circuit intergrat poate controla panouri de afiDM în cazul nostru matrici de LED-uri, reglând luminozititatea a 64 de LED-uri individuale. Circuitul Integrat (IC) poate comunica cu microcontroller-ul pe interfa  VHULDO OD R IUHFYHQ  G e pana la 10MHz œL are 16 pini de output pentru a controla 8×8 led-uri cu configura LHGHFDWRGFRPXQ . Amplitudinea fiecarei EHQ]LGHIUHFYHQ HVWHPDSDWLQWUHœLvQIXQF LHGH -uri care sunt pornite, numar depedent de amplitudinea coreVSRQGHQW Mai multe circuite integrate MAX7219 pot fi conectate îQ FDVFDG SHQWUX D FUHH VLQJXU DILœDM FRPELQDW ’DWHOH LQWURGXVH vQ SULPXO F XUPWRUXO FLUFXLW LQWHJUDW GXS  FLFOXUL GH FORFN œL WLPXO QHFHVDU SHQ transmiterea unei comenzi. Acestui registru de shift îi ia 16 cicluri de clock pentru a umple PHPRULDLQWHUQGHEL L3HPVXUFHDSDUQRLGDWHGHPDL YHFKL ELW HVWH VFRV GLQ UHJLVWUX œL WU ansmis catre urmatorul modul. De aceea pentru tranVPLWHUHD FRUHFW D FRPHQ]LORU F WUH WRDWH FLUFXLWHOH 0$;  FRQHFW WUDQVPLWHP FRPDQGD PDL vQWkL FWUH FHO PDL vQGHSUWDSHQWUXFHOPDLDSURSLDWVILHWUDQVPL VXOWLPD 3URLHFWGHGLSORP 29 Fig.IV.6. Circuit MAX7219 conectat la o matrice de LED-uri 8×8 3URLHFWGHGLSORP 30 3URLHFWGHGLSORP 31 V. 0(72’(’($1$/,=$6(01$/8/8, $QDOL]RDUHOHGHVHPQDOFDUHIRORVHVF7UDQVIRUPDWDWRW PDL IUHFYHQW GDWRULW SHUIRPDQ HORU vPEXQW LWH œL D FRVWXULOHartley 5DSLG )+7 HVWHDVHPQWRDUHFX7UDQVIRUPDWD)RXULHU FXQXPHUHUHDOHvQWLPSFH))7IRORVHœWHœLQXPHUHFRPS -XOXWLOL]HD]PDLSX L resurse RAM. V. 1. 7UDQVIRUPDWD)RXULHU5DSLG ))7 7UDQVIRUPDWD )RXULHU 5DSLG VDX )DVW )XULHU 7UDQVSHQWUX R FODV GH DOJRULWPL UDSL]L GH FDOFXO DO WUDQDiscrete Fourier Transform (DFT), pentru semnale cu suport finit, IRORVLW OD GHVFRPSXQHUH VHPQDO vQ IUHFYHQ HOH FRQVWLWXHQWH  6HPQDOHOH SRUW IL UHFRQVWUXLWH FX VHPQDOH VLQXVRLGDOH FX IUHFYHQ H œL DPSOLWXGLQL GLsinusoidale adunate este mai mare, cXDWkWVHPQDOXOUHFRQVWUXLWYDDU VHPQDOXORULJLQDO7HRUHWLFGDFDPDYHDXQQXPULQIL UHFRQVWUXLWRE LQXWDUILLGHQWLFFXRULJLQDOXO &kQGYRUELPGHVSUH7UDQVIRUPDWD)RXULHU5DSLG ))7 de fapt, este vorba despre o PHWRGGHFDOFXOSHQWUXRWUDQVIRUPDW)RXULHUGLVFUH n HœDQWLRDQH QHVWHQXGH LWHUD LL DO DOJRULWPXOXL  FDUH IRORVHœWH SURSULHW iilor periodice pentru reducerea QXPUXOXLGHRSHUD ii aritmetice6HRE L Q1HœDQWLRDQH1ILLQGGLPHQVLXQH &X ILHFDUH LWHUD LH VH GXEOHD] QXPUXO GH WUDQVIRUPD dimensiunea lor. 3HQWUXFDOFXOXOWUDQVIRUPDWHL)RXULHU5DSLG ))7  intraUH FX QLœWH YDORUL FRQVWDQWH VLQXV FRVLQXV  $FHV timpul necesar microcontroler-ului ATmega328P pentru a efectua calculele. De exemplu 16b [ E GXUHD] DSUR[LPDWLY  FLFOXUL GH FORFN ’DU GDF D ra DSUR[LPDWLYFLFOXULGHFORFNÌQDFHODœLWLPSRPDUHSGH ))7 VXQW VDX DVWIHO QHILLQG QHFHVDU VD PDL vQPX LQWUDUHSXWkQGGRDUVOHDGXQDP7UDQVIRUPD WD)RXULHU5DSLG ))7 YHULILFFRQGL LLOHsau 1 LOHDGXQSHFHOHFD UHFRUHVSXQGFRQGL LLORUœLOHv QPXO HVWHSHFHOHFDUH nu corespund. $GRXDPHWRG SULQFDUHWUDQVIRUPDWD)RXULHU5DSLG ))7 UHGcalculelor este folosirea tabelelor look-up SHQWUXFDOFXOXOUGFLQLORUPDJQL LQWUULORU SHQWUX WDEHOHOH ORRN -up RFXS PDL PXOW PHPRULH GHFkW WDEHOHO SHQWUXDHYLWD LURVLUHDPHPRULHLVHFRPSULPYDORULO returnate de +/- 0,5%. 3URLHFWGHGLSORP 32 V.2. Transformata Hartley 5DSLG (FHT ) Transformata Hartley 5DSLG sau Fast Hartley Transform (FHT) este un algoritm rapid de calcul al transformatei +DUWOH\ GLVFUHWH VDX ’LFUHWH +DUWOH\ 7UWUDQIRUPDW XQLWDUDFXYDORUL UHDOH6SUH GHRVHELUH GH WUDQVIRUPDWD FDUHWUDQVIRUP1QXPHUHUHDOHvQ1QXPHUHFRPSOH[HFX +DUWOH\ GLVFUHW SURGXFH 1 QXPHUH UHDOH (D HVWH VWGLVFUHW ’)7  ILL QG SXU œL VLPSOX GLIHUHQ D GLQWUH SDUWHD U transformatei Fourier corespondente. 7UDQVIRUPDWD +DUWOH\ UDSLGH )+7  DUH DYDQWDMXO F QR L LQYHUVD WUDQVIRUPDWidentice (este inverVD VD  VHHYLW OXFUXO FX QXPHUH FRPS OH[H œL IDFH PDL SX LQHRS 6HFYHQ DGHOXQJLPHD1DWUDQVIRUPDWHL +DUWOH\GLVFUHW ’+7 FD OFXOHD]DDFHODœLQXPD opera LL UHDOH FX QXPUXO GH RSHU a LL FRPSOH[H UHDOL]DW GH WUDQVIRUPD ’)7 FHHD FH UH]XOW vQ vQMXPW LUHD PH moriei necesare pentru calculul cu numere reale versus numere complexe. Transformata +DUWOH\GLVFUHW ’+7 FRQ LQHDFHHD LQIRUPD LHvQFHOH1YDORULUHDOHFXFHOH1YDORULFRPS (DFT), în total 2N valorLUHDOH&RQIRUPSURSULHW LLOXL+HUPDQQ  un factor de 2. ) (k * F ) F(-k Z Z : : (V.1) Astfel cele N/2 numere reale necesarH SHQWUX WUDQVIRUPDWD VLQXV œL FHO QHFHVDUHSHQWUXWUDQVIRUPDWDFRVLQXVOXDWHvPSUHXQFDUHQXHVWHGHJHQHUDWGDWRULWVLPHWULHL 3HOkQJFHOHGRXPHWRGHGH economisire a timpului folosite la FFT care sunt folosite œLGHFWUH)+7WUDQVIRUPDWD+DUWOH\ 5D SLG )+7 DUHRDWUHLDPHWRGGHeconomisi timp: primele trei procese de tip „butterfly” sunt parcurse într-un singur pas, astfel 2 seturi de cereri / PHPRUULGHGDWH sunt eliminate. De asemenea tot al proces „butterfly” FRQ LQHXQVHW de date redundante, eliminandu-VH DVWIHO  DGXQUL œL GRX vQPXO LUL economisi FWHYDFLFOXULGHFORFNHVWHFRQYHUVLDPXOWLSOLPXOWLSOLLIUVHPQ 3URLHFWGHGLSORP 33 VI. 352,(&7$5(ø,,03/(0(17$5( VI.1 Hardware Fig.VI.1. Schema bloc a sistemului Semnalul este preluat de FWUH microfon, amplificat, convertit în format digital œLDSRL prelucrat cu ajutorul unui microcontroler Arduino UNO, utilizând pe rând, Transformata )RXULHU5DSLGVDX 7UDQVIRUPDWD+DUWOH\5DSLG /DILQDOVHPQDOXODQDOL]DWHVW grafic prin intermediul unei matrice de 8×32 led-uri. &RPSRQHQWHOH IRORVLWH SHQWUX UHDOL]DUHD SUDFWLF Fig.VI.2) sunt: modul 1713 Adafruit PLFURIRQœLDPSOLILFDWRU $UGXLQR812XQ/(’œLPRGXOFX -uri HW-692. Conectarea modulul HW- VHIDFHGXSFXPXUPD] VCC – 5v arduino GND – PDVDUGXLQR DIN – pinul digital 11 arduino CS – pinul digital 10 arduino CLK – pinul digital 13 arduino Cele 4 module matrice MAX7219 se coQHFWHD] vQWUHHOHSULQSLQLLFRUHVSRQG VCC – VCC, GND – GND, CS – CS, CLK – &/. œL0,62GHODPRGXOXOSUHFH 026,GHODXUPWRUXOPRGXO 3URLHFWGHGLSORP 34 Fig.VI.2. Schema HOHFWULFDVLVWHPXOXL VI.1.1 Alegerea modulului microfon 3ULPXO SDV vQDLQWH GH D UHDOL]D DFKL]L LD VHPQDOX SRWULYLWSULQFRPSDUDUHDGHPLFURIRDQHFXœLIUDPSOL de amplLILFDUHvQIXF LHGHYROXPXOVHPQDOXOXLDXGLRFHXU 6XQHWXOHVWHRXQGXQIHQRPHQGHSURSDJDUHDXQH -un mediu elastic. 9LEUD LLOHVHWUDQVPLWSULQDHUGLQDSURDSHvQDSURDS pentru a fi 3URLHFWGHGLSORP 35 VWRFDWH vQ IRUPGLJLWDO VDX DQDORJLF œL VXQW UHSUH care este DPSOLWXGLQHD XQGHL P VXUDW 6XQHWXO FDUH WUHFH SULQ PLFURIRQ VXUDW FRQWLQXX œPVXUWRULOHIRUPHD]IRUPDGHXQG3HQWUXFQXSXWHPI WHPVXUWRULGHFkWvQ -un QXPUILQLWGHRULvQWU -RXQLWDWHGHWLPSDFHVWSURFHVGHPDVXUDUH œLVHQXPHœWHHœDQWLRQDUH (Fig.VI.3)’HDVHPHQHDILHFDUHHœDQWLRQHVWHI $UGXLQRSHQWUXFDFHVWDDUHRPHPRUL HœLDFXUDWH HILQLW Fig.VI.3. (œDQWLRQDUHDXQHLIRUPHGHXQG 8Q VXQHW SRDWH IL GHVFULV IRORVLQG  FDUDFWHULVW (calitDWH  $FHVWH  FDUDFWHULVWLFL DX FRUHVSRQGHQWH IL] constitX LDDUPRQLFVDXIRUPDXQGHL$PSOLWXGLQHDHVWHSH timpanul urechii FDœLYROXP&k QGPROHFXOHOHVHPLœFSULQDHUPDLUHSHGHDFIRU PDLPDUHœLVXQHWXOHVWHDX]LWPDLSXWHUQLF8QL ibeli (dB), FDUHHVWHRVFDUORJDULWPLF)UHFYHQ DHVWHSHUFHSXW HVWHQXPUXOGHRVFLOD LLv ntr-XQWLPSGDWœLVHPVRDUDv Q+] SHULRDGHVHFXQG &RQV DUPRQLF HVWH SURSULHWDWHDSULQFDUH GRX VXQHWH GH FHHDœLDPSOLWXGLQH œL IUHFY deosebite. Arduino are capDFLWDWHD GH D P VXUD XQ VHPQDO œL GH D -l converti la logica pe care micro-contoller-XO 0&8  R SRDWH SUHOXFUD $FHDVW FDSDFLWDWH analog-digital (ADC), care este parte a MCU-ului. Prin urmare pentru o implementare pe $UGXLQRFRQHFWPPLFURIRQXOODPLFUR -FRQWUROOHUœLHœDQWLRQPYDORULOH-ul la o UDWFRQVWDQW 3HQWUXDDOHJHPLFURIRQXOSRWULYLWvQIXQF LHGHDPSO FRPSDUPPRGXOHGHPLFURIRDQHFXœLIUDPSOLILFDUH 3URLHFWGHGLSORP 36 Pentru acest proiect am evaluat 2 module: a) modulul KY-038, bazat pe LM393 (VI.4) b) modulul 1713 adafruit, bazat pe MAX9814 (VI.5) a) Modulul KY-038 Fig.VI.4. Modulul microfon KY-038 bazat pe LM393 $FHVWPRGXODUHXQPLFURIRQXQSRWHQ LRPHWUXœLHV DPSOLILFDWRU$UHXQSLQSHQWUXWHQVLXQHXQSLQSHQWU DQDORJLFœLXQSLQ’SHQWUXLHœLUHGLJLWDO&RQHFWDUDFHGXSDFXPXUPHD]  pin-ul + la 5V ; pin-ul G la GND ; pin-ul A0 la unul din porturile analogice A0-$GDF IRORVLPXQSURJUDPDQDORJLFLHœLUHDILLQGDQDORJœLVH -ul D0 la unul dintre porturile digitale 2-GDFIRORVLPXQSURJUDPGLJLWDO/0 HVWH tensiune dual indeSHQGHQWFDUHQHSHUPLQHVVHWPXQSUDJIRORV generezHXQVHPQDOGHLHœLUHGLJLWDOFk QGYROXPXOVXQHWXOXLGHSœHœWHSUDSUDJXOXLSRDWHILDMXVWDWIRORVLQGSRWHQ LRPHWUXOGH -XO’QHGXQ semnDOGHLHœLUH+,*+VDX/2:vQIXF LHGHLQWHQVLWDWHDVX sau nu). 3URLHFWGHGLSORP 37 b) Modulul 1713 Fig.VI.5. Modulul microfon 1713 adafruit bazat pe MAX9814 $FHVWPRGXODUHXQPLFURIRQFX]JRPRWUHGXVœLXQD . MAX9814 este un amplificator de calitDWH vQDOW F are are un control automat al câ œWLJXOXL VDX DXWRPDWL FRQWURO $*& XQSUHDPSOLILFDWRUGH]JRPRWUHGXVXQ YDULDEOH JDLQ DPSOLILHU 9*$  DPSOLILFDWRU GH LHœLUH œL XQ JHQHUDWRU GH WHQVLX WHQVLXQHD SUDJ D PLFURIRQXOXL 3UHDPSOLILFDWRUXO DUH -ul DMXVWHD]FœWLJXODXWRPDWGHODG%ODG%vQIXQF AGC-XOXL$PSOLILFDWRUXOGHLHœLUH QHSHU PLWHVIDFHPVHOHF LDFœWLJXOXLL sau 28dB. Astfel cascada de amplificatoare QHG un câ œWLJWRWDOGHG%G%VDXVHSDUDWRUUH]LVWLYH[WHUQFRQWUROHD]SUDJXO$*& -XOXLœLXQFRQGHQVDWRUSURJUD de atac. ’DF scopul QRVWUXHVWHVDYHPXQQLYHOGHVXQHWIL[FKSHQWUXDIDFHDQDOL]DXQHLIUHFYHQ HFHDPDLEXQRS LXœL FHO ED]DW SH 0$;  FDUH QRUPDOL]HD] VXQHWXO OD X PVXUP YROXPXO VRQRU DFHVW PRGXO QX DU IL RSWLXQH D FHD PDL SRWULYLW 3HQWUX sura YROXPXO œL SHQWUX D SXWHDFRPSDUD GLIHULWH PVXUWRU un modul cu microfon la care câ œWLJXOH VWHSUHYL]LELOFRQILJXUDWGHF tre noi œLQXVHVFKLPE automat. 3URLHFWGHGLSORP 38 3HQWUX D UHDOL]D R DQDOL] FRPSDUDWLY vQWUH FHOH FRQFHSXWXQSURJUDP SUH]HQWDWvQSDUWHDGH6RIWZDUH DLVXQHWXOXLSULQLQWHUPHGLXOFURUDVSXWHPIDFH RFRPSDUD LHUHDOvQWUHFHOHDPEHOHPRGXOHILLQGGHVWXOGHUVSkQGLWHSULQWUHXWLO ÌQXUPDFRPSDUULLUH]XOWDWHORUPVXUWRULORUDPGH DPDLEXQ RS LXQH pentru acest proiect este modulul 1713 cu micURIRQHOHFWUHWFXDPSOLILFDUHDV SHQWUXDQDOL]D))7œLODG%SHQWUXDQDOL]D)+7 VI.2 Software 9,0VXUDUH a volumului Fig.VI.6. 6FKHPDORJLFP surare volum 3URLHFWGHGLSORP 39 Pentru început s-DUHDOL]DWLQL LDOL]DUHDYDULDELOHORUXWL WUHSURJUDPXUPDWH GH LQL LDOL]DUHD SRUWXOXL VHULDO UHVSHFWLY D UDWHLul SRUWXOXLVHULDOILLQGDILœDWL parametrii FDOFXOD LSHQWUXILHFDUHPRGXOFXPLF $FKL]L LDVHPQ alului analogic de la modulul microfon se UHDOL]HD]SULQ LQWHUPconvertorului analog-GLJLWDO GH  EL L vQFRUSRUDW vQ PLFURFRQWU -a HYLWDWXWLOL]DUHDIXQF LHL analogRead() GHRDUHFHDFHDVWDQXSHUPLWHDFKL]L IUHFYHQ DPDLPDUHGXUDWDGHH[HFX LHDLQVW UXF LXQLLILLQGG e aproximativ 100mS. Astfel nu VHSRDWHXWLOL]DSHQWUXDFKL]L LDXQXLVHPQDOFDUHDU SX LQ -.K]9DULDQWDDOHDVHVWH aceea de a utiliza direct regitrii microcontrolerului pentru a FUHœWHUDWDGH FRQYHUVLHFRQYHUWRUXO$’&UXOkQGFRQWLQXX P HœDQWLRQDUHGH.K] SUHGLYL]RUXOVHPQDOXOXLGHFHDV QX VH XWLOL]HD] R HYHQWXDO YDULDELO GH JHQXO 3LQ0 WHQVLXQL GH UHIHULQ  H[WHUQ SHQWUX FRQYHUWRUXO $’& UHIHULQ H[WHUQHV -DIFXW , pe de o parte, deoarece nivelul semnalului analogic este destul de UHGXV PDLDOHVODPRGXOXOIUDPSOLILFDWRUGHPLFURIRQ WSDUWH , deoarece sursa de tensiune de 3,3V de pe sistemul Arduino Uno este VWDELOL]DW spre deosebire de tensiunea de 9 FDUHHVWHXWLOL]DWœLSHQWUXDOLPHQWDUHDGLIHULW . AVWIHOVHHOLPLQR HYHQWXDO VXUV GH SHUWXUED LL UHVSHF WLY GH HURUL DOH FRQYHUVLHL $’& GD WHQVLXQLLGHUHIHULQ GH9FXPDUILWHQVLXQHDGHUHLQWUDUH GH QLYHO UHODWLY UHGXV QH REOLJ V XWLOL]P semnalelor care ar SXWHDSHUWXUEDSURFHVXOGHPVXUDUH 5DWD GH HœDQWLRQDUH GH .K] QH -ar permite (teoretic) utilizarea unui semnal de intrare GHIUHFYHQ PD[LPGH .K]GDU GLQSFDWH , PLFURFRQWUROHUXOQXDUHV putere de calcul pentru prelucrarea unor semnDOH FX IUHFYHQ  DœD GH ULGLFD â nd IUHFYHQ DXWLOOD -5Khz. 3HQWUXDQDOL]DFRPSDUDWvQWUHFHOHGRXPRGXOHFX s-au luat în considerare, în acest caz, XUPWRULLSDUDPHWUL YDORDUHDPHGLHYDORDUHDP raportXOGLQWUHYDORDUHD506œLYDORDUHDPD[LP DUILHFKL vQ YDORULORJDULWPLFH $FHœWLSDUDPHWULVXQWWUDQVIG% SHQWUXDSXWHDILFRPSDUD LPDLXœRU &RGXOSULQLQWHUPHGLXOFUXLDVH FDOFXOHD]DFHœWLSDUDPHWULHVWHSmai jos: PDVXUDUHQLYHOYROXPVLSULQWDUH DILœDUH VHULDO void MasuratVolum() { long volsunetMED = 0, volsunetMax = 0, volsunetRMS = 0, t0 = millis(); for (int i = 0; i < MicSamples; i++) { #ifdef ADCFlow while (!(ADCSRA & /*0x10*/_BV(ADIF))); // asteapta ca adc-ul sa fie gata (ADIF) sbi(ADCSRA, ADIF); // restart adc byte m = ADCL; // fetch adc data byte j = ADCH; int k = ((int)j << 8) | m; #else int k = analogRead(MicPin); #endif int amp = abs(k - AmpMax); amp <<= VolumeGainFactorBits; 3URLHFWGHGLSORP 40 volsunetMax = max(volsunetMax, amp); volsunetMED += amp; volsunetRMS += ((long)amp*amp); } volsunetMED /= MicSamples; volsunetRMS /= MicSamples; float volsunetRMSflt = sqrt(volsunetRMS); float dB = 20.0*log10(volsunetRMSflt/AmpMax); // conversia de la 0 la 100 volsunetMED = 100 * volsunetMED / AmpMax; volsunetMax = 100 * volsunetMax / AmpMax; volsunetRMSflt = 100 * volsunetRMSflt / AmpMax; volsunetRMS = 10 * volsunetRMSflt / 7; // (RMS este 0.7 din varf in sinus) // printeaza rezultate Serial.print("Time: " + String(millis() - t0)); Serial.print(" Amp: Max: " + String(volsunetMax)); Serial.print("% MED: " + String(volsunetMED)); Serial.print("% RMS: " + String(volsunetRMS)); Serial.println("% dB: " + String(dB,3)); } De asemeneDHVWHGHPHQ LRQDWIDSWXOFUH]XOWDWXOFRQ -digitale este pe EL L UH]XOWDWXOILLQGPHPRUDWvQGRLUHJLœWULGHEL GRXYDORULSHQWUXDRE LQHXQQXPUGH tip intFDUHHVWHSHEL L3URFHGXUD VLPSO œL FX WLPS UHGXV GH FDOFXO YDORULOH GLQ UHJL semnificativ sunt stocate într-R YDULDELO XUPHD] R GHSODVDUH VSUH VDGXQDUHDEL LORUGLQU HJLVWUXOFXRFWHWXOPDLSX LQVHPQLILFDWLY ˜ORZ·8WLOL]DUHDGHSODV ORFXO vQPXO LULLUHGXFH WLPSXO QHFHVDU DFHVWHL FRQYH ILLQGFXXQRUGLQGHPULPHPDLPDUHID GHGHSODVDUHDorul SRDWHUHDOL]DFRGFDUHXWLOL]HD]GHSODVDUHDVSUHVWk , dar pentru a nu fi GHSHQGHQ L GH FRQILJXUDUHD FRPSLODWRUXOXL HVWH mai LQGLFDW utilizarea exSOLFLW D DFHVWRU LQVWUXF LXQL 3URLHFWGHGLSORP 41 3HQWUXDQDOL]DFRPSDUDWLYDDO JRULWPLORU))7œL)+7V -a ales varianta în care se poate DOHJH WLSXO GH DOJRULWP FDUH YD SUHOXFUD VHPQDOXO VR i comutator conectat la pinul 2. DDF QLYHOXO ORJLF GH OD SLQXO  HVWH ˜KLJK· prelucrarea datelor cu algoritmul FFT, iar GDF QLYHOXO VHPQDOXOXL ORJLF GH˜ORZ· VH YD HIHFWXD DQDOL]D SULQ LQWHUPHGLXO DOJRU LPSOHPHQWDUHDDOJRULWPLORUHVWHSUH]HQWDWvQILJXUD Fig.VI.7. 6FKHPDORJLFVLVWHP 3URLHFWGHGLSORP 42 VI.2.2 Analiza FFT $FKL]L LDVHPQDOXOXLDQDORJLFSHQWUXSUHOXFUDUHD // ++ Esantionare FFT for(int i=0; i> 1); i++) { double indexMinusUnu = double(i); double scalare = (indexMinusUnu / esant ioaneMinusUnu); double factorPonderare = 1.0; // Calculeaza si memoreaza factorul de ponderare switch (windowType) { case FFT_WIN_TYP_RECTANGLE: // rectangle (box car) factorPonderare = 1.0; break; case FFT_WIN_TYP_HAMMING: // hamming factorPonderare = 0.54 – (0.46 * cos(twoPi * scalare)); break; case FFT_WIN_TYP_HANN: // hann factorPonderare = 0.54 * (1.0 – cos(twoPi * scalare)); break; 3URLHFWGHGLSORP 43 case FFT_WIN_TYP_TRIANGLE: // triangle (Bartlett) factorPonderare = 1.0 – ((2.0 * abs(indexMinusUnu – (esantioaneMinusUnu / 2.0))) / esantioaneMinusUnu); break; case FFT_WIN_TYP_NUTTALL: // nuttall factorPonderare = 0.355768 – (0.487396 * (cos(twoPi * scalare))) + (0.144232 * (cos(fourPi * scalare))) – (0.012604 * (cos(sixPi * scalare))); break; case FFT_WIN_TYP_BLACKMAN: // blackman factorPonderare = 0.42323 – (0.49755 * (cos(twoPi * scalare))) + (0.07922 * (cos(fourPi * scalare))); break; case FFT_WIN_TYP_BLACKMAN_NUTTALL: // blackman nuttall factorPonderare = 0.363 5819 – (0.4891775 * (cos(twoPi * scalare))) + (0.1365995 * (cos(fourPi * scalare))) – (0.0106411 * (cos(sixPi * scalare))); break; case FFT_WIN_TYP_BLACKMAN_HARRIS: // blackman harris factorPonderare = 0.35875 – (0.48829 * (cos(twoPi * scalare))) + (0.14128 * (cos(fourPi * scalare))) – (0.01168 * (cos(sixPi * scalare))); break; case FFT_WIN_TYP_FLT_TOP: // flat top factorPonderare = 0.2810639 – (0.5208972 * cos(twoPi * scalare)) + (0.1980399 * cos(fourPi * scalare)); break; case FFT_WIN_TYP_WELCH: // welch factorPonderare = 1.0 – sq((indexMinusUnu – esantioaneMinusUnu / 2.0) / (esantioaneMinusUnu / 2.0)); break; } if (dir == FFT_FORWARD) { vData[i] *= factorPonderare; vData[esantioane – (i + 1)] *= factorPonderare; } else { vData[i] /= factorPonderare; vData[esantioane – (i + 1)] /= factorPonderare; } } } $FHDVW IXQF LH HVWH LPSOHPHQWDWH vQ ILHFDUH ELEDOJRULWPXO ))7 vQ FD]XO DFHVWD D IRVW GRDU VWXGLDW filtru este mai favorabil pentru puterea de calcul a AtMega 328p )XQF LDFDUHUHDOL]HD]FDOFXOXOSURSULX -zis al transformatei rapide Fourier discrete este SUH]HQWDWPDLMRV(VWHUHDOL]DW LPSOHPHQWDUHD FODmai UDSL]L FDUHDSUR[LPHD]DQXPLWHRSHUD LXQLSHQWUXD void Compute(double *vReal, double *vImag, uint16_t esantioane, uint8_t putere, uint8_t dir) { // Calcul FFT // uint16_t j = 0; for (uint16_t i = 0; i < (esantioane - 1); i++) { if (i < j) { Swap(&vReal[i], &vReal[j]); 3URLHFWGHGLSORP 44 if(dir==FFT_REVERSE) Swap(&vImag[i], &vImag[j]); } uint16_t k = (esantioane >> 1); while (k <= j) { j -= k; k >>= 1; } j += k; } // Calcul propriu zis FFT double c1 = -1.0; double c2 = 0.0; uint16_t l2 = 1; for (uint8_t l = 0; (l < putere); l++) { uint16_t l1 = l2; l2 <<= 1; double u1 = 1.0; double u2 = 0.0; for (j = 0; j < l1; j++) { for (uint16_t i = j; i < esantioane; i += l2) { uint16_t i1 = i + l1; double t1 = u1 * vReal[i1] - u2 * vImag[i1]; double t2 = u1 * vImag[i1] + u2 * vReal[i1]; vReal[i1] = vReal[i] - t1; vImag[i1] = vImag[i] - t2; vReal[i] += t1; vImag[i] += t2; } double z = ((u1 * c1) - (u2 * c2)); u2 = ((u1 * c2) + (u2 * c1)); u1 = z; } c2 = sqrt((1.0 - c1) / 2.0); if (dir == FFT_FORWARD) { c2 = -c2; } c1 = sqrt((1.0 + c1) / 2.0); } // Scalare pentru functia inversa if (dir != FFT_FORWARD) { for (uint16_t i = 0; i < esantioane; i++) { vReal[i] /= esantioane; vImag[i] /= esantioane; } } } )XQF LDFDUHWUDQVIRUPQXPHUHOHFRPSOH[HvQQXPHUH XOWHULRUvQFDOFXOXOGLYHUœLORUDOJRULWPL void ComplexToMagnitude(double *vReal, double *vImag, uint16_t esantioane) { // vM este jumatate din marimea vReal si vImag for (uint16_t i = 0; i < esantioane; i++) { vReal[i] = sqrt(sq(vReal[i]) + sq(vImag[i])); } 3URLHFWGHGLSORP 45 } ’LQ SFDWH XWLOL]DUHD IXQF LH sqrt() QX HVWH FHD PDL UHFRPDQGDW vQ V vLWH]DGHFDOFXOHVWHODOLPLWDLQIHULRDUDFHULQ HORGHFDOFXOÌQDQXPLWHVLWXD LLVHXWLOL]HD]RIXQF LHG WDEHOSRDWHUHWXUQDPXOWPDLUDSLGRYDORDUHDSUR[LPQDFHVWFD]QXDIRVWUHFRXWLOL]DUHD DFHVWHL PHWRGH GHRDUHFH GLQDPLFD YDORUL PRGLILFDUH D DFHVWRUD  HVWH SUHD PDUH œL SULQ DFHDVW DSURDSHGHYDORDUHDUHDOVDXDUQHFHVLWDX tilizarea unui tabel cu mai multe valori, lucru care vQFD]XO$W0HJDSQXSUHDVHSRDWHUHDOL]DGDWRULWPH ’XS FDOFXOXO WUDQVIRUPDWHL )RXULHU UDSLGH VH YDEHQ]L VSHFWUDOH œL D DPSOLWXGLQL D cestora, cu scopul de a fi vizualizate în mod grafic prin LQWHUPHGLXOPDWULFLORUFXOHGXUL$VWIHOIXQF LHGHQ PRGXOHORU FX OHGXUL VH UHRUGRQHD] GDWHOH SHQWUX D datele carHXUPHD]DILDILœDWHVXQWvQYDULDELODYHFWRU data_avgs , valorile rezultate în urma ))7ILLQGGLVSRQLELOSHQWUXDOWHSUHOXFUULXOWHULRDU &RGXOXWLOL]DWSHQWUXUHRUGRQDUHDGDWHORUHVWHSUH // ++ reordonarea rezu ltatelor FFT sa corespunda cu numarul de coloane ( xres ) int step = (SAMPLES/2)/xres; int c=0; for(int i=0; i<(SAMPLES/2); i+=step) { data_avgs[c] = 0; for (int k=0 ; k< step ; k++) { data_avgs[c] = data_avgs[c] + v Real[i+k]; } data_avgs[c] = data_avgs[c]/step; c++; } // -- reordonarea rezultatelor FFT sa corespunda cu numarul de coloane ( xres ) VI.2.3 Analiza FHT 2YDULDQWPDLUDSLGID GH))7HVWHWUDQVIRUPDWD+DUW HVFXUWDWvQFRQWLQF+7 FDUH QX XWLOL]HD] QXPHUH FRPSOH[H œL SULQ XUPDUH prelucrare a datelor. Pentru anaOL]D FRPSDUDWLY vQWUH ))7œL )+7 SHQWUX ) +7 DP DOHV R ELEOLRWHFIXQF LLFDUHDUHLPSOHPHQWDWDFHDVWWU DQVIRUPDW3DUWLFXODULWDWHDDFHVW HVWH DFHHD F DOJRULWPXO HVWH LPSOHPHQWDW IRORVLQG DVDPEODUHFHHDFHDGXFHXQSOXVGHYLWH]GHFDOFXODcos, sqrt utilizate sunt preluate din tabele, evitându -VH XWLOL]DUHD XQRU LQVWUX FRQVXPUHVXUVHOHœLDœDOLPLWDWHDOHPLFURFRQWUROHU $FKL]L LDGDWHORUVHUHDOL]HD]VLPLODUFDœLvQFD]X while(!(ADCSRA & 0x10)); // asteapta ca ADC -ul sa fie gata ADCSRA = 0xf5; // restarteaza ADC-ul 3URLHFWGHGLSORP 46 byte m = ADCL; // preia datele de la ADC byte j = ADCH; int k = (j << 8) | m; // form into an int k -= 0x0200; // form into a signed int k <<= 6; // form into a 16b signed int fht_input[i] = k; // pune datele reale in linii spectrale } 2SDUWLFXODULWDWHDDFHVWXLFRGHVWHXWLOL]DUHDVH XWLOL]HD] OLPEDM vQ FRG GH DVDPEODUH SHQWUX IXQF H QHFHVDU FD YDULDELOHOH OXQJLPHIL[DQXPHUHORU3HQWUXDFHDVWDVHSUHLDXVX HVWH WUDQVODWDW OD VWkQJD FX EL L HVWH SUHOXDW RF QXPUXODQWHULRUUH]XOWkQGXQQ XPUSHEL LFXYDORULGHWLSvQWUHJ L )XQF L ile utilizate pentru a calcula FHT sunt prezentate mai jos. fht_window(); fht_reorder(); fht_run(); fht_mag_log(); 6HPQLILFD LD DFHVWRUD HVWH IRDUWH VLPLODU FX FHD XWW GH FWUH IXQF LLOH ))7 PPDWHPDWLFXWLOL]DWGHFWUHDFHDVWWUDQVIRUPDUHILL WHRUHWLF øLvQDFHVWFD]HVWHQHFHVDURUHRUGRQDUHœLVFDODUHmod grafic, prin LQWHUPHGLXOPRGXOHORUPDWULFLDOHFXOHGXULFRGXOXLXUPWRU // reordonarea rezultatelor FFT result sa corespunda cu numarul de coloane ( xres ) int step = (FHT_N/2)/xres; int c=0; for(int i=0; i<(FHT_ N/2); i+=step) { data_avgs[c] = 0; for (int k=0 ; k< step ; k++) { data_avgs[c] = data_avgs[c] + fht_log_out[i+k]; } data_avgs[c] = data_avgs[c]/step; c++; } VI.2.4 Afiœaj Matrice LED $ILœDUHD JUDILF D GDWHORU VH UHDOL]HD] SULQ LQWHUPHGLXOOHGXULPDWULFLGH[OHGXULPDWULFLOHILLQGvQVHULDW (32 coloane a câte 8 leduri pe fiecare coloane - 8 rânduri). Fiecare matrice de leduri este FRPDQGDW GH FWUH XQ UHJLVWUX GH UHJLœWULL ILLQG vQVHULD L FD œL PDWULFLOH  DVWIHO FRUHVSXQ]WRDUHIUHFYHQ HORUPDLPDULXOWLPHOHGDWH joase, de ordinul zecilor sau sutelor de Hz. 3URLHFWGHGLSORP 47 3URJUDPXOFDUHHVWHXWLOL]DWSHQWUXDILœDUHDJUDI ELOLRWHFGHIXQF LLVSHFLDOFUHDWSHWUXDFHVWWLSGH // ++ trimite la afisaj valorile masurata for(int i=0; i peaks[i]) peaks[i] = yvalue ; yvalue = peaks[i]; displayvalue=MY_ARRAY[yvalue]; // displayvalue=MY_MODE_2[yvalue]; displaycolumn=31-i; mx.setColumn(displaycolumn, displayvalue); // de la stanga la dreapta } // – trimite la afisaj valorile masurata } &HHVWHVSHFLILFDFHVWHLUHSUH]HQWUL IDSWXOFVHUH SHQWUXILHFDUHEDQGVSHFWUDOFDUHFRUHVSXQGHILHFUH H(VWHQHFHVDUILLQGFD GDWHORUSHUPLWHYL]XDOL]DUHDDFHVWRUDvQPDLPXOWHP YkUIEDUD FRQWLQXFXYDORDUHGHYkUIUHPDQHQW «$FHMY_MODE_2. 3URLHFWGHGLSORP 48 3URLHFWGHGLSORP 49 VII. 06857 25,(;3(5,0(17$/(ø,&21&/8=,, VII.1 Msurare a nivelului de amplificare Fig.VII.1. Generator ton $P IRORVLW XQ JHQHUDWRU GH WRQ SHQWUX D JHQHUD VHPQD masurat urmatoarele valori: – Max sau valoarea PD[LPDHœDQW ionului – AVG sau media valorilor absolute – 506VDXUGFLQDPHGLHSDWUDWDVHPQDOXOXL – dB sau volumul semnalului 9DORULOHPVXUDWH au fost ob LQXWH folosind modulul microfon 1713 setat la amplificare 40dB (M1), modulul microfon 1713 setat la amplificare 50dB (M2 œLPRGXOXOPLFURIRQV la amplificare 60dB (M3). 3URLHFWGHGLSORP 50 Fig.VII.2. Caracteristicile unei unde sinusoidale [8] 5GFLQDPHGLHSDWUDW 506 H[SULPDPSOLWXGLQHDYLWH]FRPSXVH 506 HVWH UGFLQD SWUDW D YD ORULORU PHGLL D SWUDWHORU DPSOL 5HOD LDGLQWUHDPSLWXGLQHœLUGFLQDPHGLHSDWUDW 50 (VII.1) Putem foORVL DFHDVWUHOD LH SHQWUX D HVWLPD R DPSOLWXGFDOFXODW$VW IHOGDFvQPXO LPYDORDUHDGHYk UIDXQXLVHPQDOFXRE LQHP506 Am pus rezultatele de la M1 (modulul 1713 setat la amplificare 40dB), M2 (modulul 1713 setat la amplificare 50dB) œL0 (modulul 1713 setat la amplificare 60dB) în Tabelul VII.1, Tabelul VII.2 œL Tabelul VII.3GXSFDUHDPFRPSDUDWYDORULOHRE LQXWH (Fig.VII.3), AVG (Fig.VII.4), RMS (Fig.VII.5 œLG% Fig.VII.6). Tabelul VII.1. ValRULPVXUDWHFXPRGXOXOPLFURIRQ 1713 setat la amplificare 40dB (M1) Hz Max AVG RMS dB 10000 45% 26% 41% -10.692 5000 73% 34% 60% -7.517 2000 74% 35% 61% -7.308 1000 74% 33% 59% -7.664 500 74% 33% 58% -7.717 250 36% 25% 38% -11.418 100 30% 26% 37% -11.621 3URLHFWGHGLSORP 51 Tabelul VII.2. 9DORULPVXUDWHFXPRGXOXOPLFURIRQ 1713 setat la amplificare 50dB (M2) Hz Max AVG RMS dB 10000 63% 28% 45% -9.997 5000 78% 28% 49% -9.147 2000 81% 30% 52% -8.641 1000 78% 30% 54% -8.438 500 81% 31% 54% -8.400 250 57% 26% 47% -9.645 100 45% 26% 38% -11.340 Tabelul VII.3. 9DORULPVXUDWHFXPRGXOXOPLFURIRQ 1713 setat la amplificare 60dB (M3) Hz Max AVG RMS dB 10000 51% 33% 49% -9.120 5000 46% 24% 40% -10.933 2000 60% 31% 53% -8.556 1000 83% 38% 67% -6.491 500 72% 33% 59% -7.662 250 62% 30% 52% -8.681 100 60% 30% 44% -10.137 3URLHFWGHGLSORP 52 Fig.VII.3. ’LDJUDPDFRPSDUD LHYDORUL0$; Fig.VII.4. ’LDJUDPDFRPSDUD LHYDORUL$9* 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 0 2000 4000 6000 8000 10000 12000 MAX Hz 40 dB (M1) 50 dB (M2) 60 dB (M3) 0% 5% 10% 15% 20% 25% 30% 35% 40% 0 2000 4000 6000 8000 10000 12000 AVG Hz 40 dB (M1) 50 dB (M2) 60 dB (M3) 3URLHFWGHGLSORP 53 Fig.VII.5. ’LDJUDPDFRPSDUD LHYDORUL506 Fig.VII.6. ’LDJUDPDFRPSDUD LHYDORULG% 0% 10% 20% 30% 40% 50% 60% 70% 80% 0 2000 4000 6000 8000 10000 12000 RMS Hz 40 dB (M1) 50 dB (M2) 60 dB (M3) 1 10 100 0 2,000 4,000 6,000 8,000 10,000 12,000 dB Hz 40 dB (M1) 50 dB (M2) 60 dB (M3) 3URLHFWGHGLSORP 54 VII.2 Msurarea ))7œL)+7 3HQWUXDSXWHDPVXUDYLWH]DFHORUGRLDOJRULWPLUDSL] XUPWRDUHOHUXWLQH  D $FKL]L LHVHPQDO E $ILœDUH DHœDQWLRDQHORU c) Msurare FFT d) Msurare FHT VII.2.1. $FKL]L LD semnalului Prin intermediul mRGXOXOXLFXPLFURIRQVHSUHLDVHPQDOXO ILHDQDOL]DWœLDSRLVHIDFHHœDQWLRQDUHDDFHVWXLD’H VHPQDOXOXL  7HRUHPD GH HœDQWLRQDUH D OXL Nyquist-Shannon QH VSXQH F SHQWUX D ID HœDQWLRQDUHD XQXLVHPQDODYHPQHYRLHGHFHOSX LQGXEOXOIUHF $UGXLQRIUHFYHQ DGHHœDQWLRQDUHHVWHGHVWXOGHOLPaproximativ 100µs convertorului analog -GLJLWDO $’& V FRQYHUW HDVF XQ HœDQWLR n. i alte RSHUD XLQLVXQWUHODWLYvQFHWHGDWRULWIUHFYHQ HLGH 6HWP FRQYHUWRUXO DQDORJ -digital ADC în modul free running mode, în setup: ADCSRA = 0b11100101; œLVHWPSUHVFDODU -ul la 32, asftel configurând IUHFYHQ DGHFORFND convertorului ADC la 38,46 kHz. Folosim pin-ul A0 al arduino-XOXL FD LQWUDUH œL tensiune H[WHUQ GH UHIHULQ  GH 9  ADMUX = 0b00000000; œL O VP XQ WLPS GH GHOD\ GH milisecunde: delay(50); SHQWUXFDWHQVLXQHDGHUHIHULQ VVHVWDla $’&œLVH FRSLD]vQOLQLLVSHFWUDOH GXSFHVXQWFRPSULPDWH LPSDU ind la 8). Va rezulta un vReal i vImaginar. Am folosit fXQF LDGHJHQHUDWRUGHVHPQDOD osciloscopului pentru a genera un semnal VLQXVRLGDOFXIUHFYHQ DGH+]œLDPSOLWXGLQH9RII VHW/DILQDOXOUXWLQHLG VHPQDODPIFXWRUXWLQDVHSDUDWSHQWUX a DILœDœLDSXWHDFLWLYDORULOHHœ 3URLHFWGHGLSORP 55 Fig.VII.6. Generare semnal sinusoidal 100Hz , 4V Tabelul VII.4. 7LPSDFKL]L LHVHPQDOLQWUDUH în IXQF LHGHQXPUXOGHHœD QWLRDQHSHULRDG (œDQWLRDQH 8 16 32 64 128 Timp 415.89 s 831.77 s 1.66365 ms 3.32716 ms 6.65428 ms VII.2.2. $ILœDUHDHœDQWLRDQHORU $PIRORVLW SRUWXO VHULDO SHQWUX DILœDUHD YDORULORU H HœDQWLRDQH Exemplu dHYDORULRE inute: (œDQWLRDQH : -17.00, -20.00, -23.00, -25.00, -27.00, -29.00, -32.00, -35.00, -37.00, -40.00, – 42.00, -44.00, -47.00, -50.00, -52.00, -55.00 (œDQWLRDQH : 0.00, -2.00, -4.00, -6.00, -8.00, -11.00, -13.00, -16.00, -18.00, -21.00, -23.00, – 25.00, -28.00, -30.00, -33.00, -35.00, -37.00, -40.00, -42.00, -45.00, -46.00, -50.00, -52.00, – 54.00, -57.00, -60.00, -62.00, -64.00, -64.00, -64.00, -64.00, -64.00 3URLHFWGHGLSORP 56 VII.2.3. 0VXUDUH a FFT )RORVLQGYDORULOHRE LQXWHGHODHœDQWLRQDUHDPL odus individual valorile de intrare ODILHFDUHPVXUDUHDGXUDWHLGHWLPSQHFHVDUHSHQWUX r cu FFT, pentru DQHDVLJXUDF GDWHOHGHLQWUDUHVXQWLGHQWLFHSHQWUXFHOHHYHQWXDOHOHIOXFWXD LLVDXLU HJXODULW LDOHYDORULORUUH]XOWDWHvQXU )RORVLQGDFHVWSURFHVGHLQWURGXFHUHDGDWHORUPRVFLORVFRSXOXL WLPSXO QHFHVDU SHQWUX FD 7UDQVIRUPDW semnalXO OD HœDQ WLRDQH GH GLIHULWH P rimi respectiv: 16 (Fig.VII.7), 32 (Fig.VII.8), 64 (Fig.VII.9) œL Fig.VII.10) HœDQWLRDQH Fig.VII.7. 0VXUDUHWLPSQHFHVDUDQDOL]FX))7DXQXLVHPQDO 3URLHFWGHGLSORP 57 Fig.VII.8. 0VXUDUHWLPSQHFHVDUDQDOL]FX))7DXQ XLVHPQDOFXHœDQWLRDQH Fig.VII.9. 0VXUDUHWLPSQHFHVDUDQDOL]FX))7DXQXLVHPQDO 3URLHFWGHGLSORP 58 Fig.VII.10. 0VXUDUHWLPSQHFHVDUDQDOL]FX))7DXQXLVHPQDO VII.2.4. 0VXUDUH a FHT Pentru calculul transformatei Hartley rapide (FHT) am introdus, ca L OD ))7 LQGLYLGXDOYDORULOHGHLQWUDUHUH]XOWDWHGHODHœDILHFDUHPVXUDUHDGXUDWHLGHWLPSQHFHVDUHSHQWUXSU $P PVXUDW FX DMXWRUXO RVFLOR scopului timpul necesar transformatei Hartley rapide )+7 VDQDOL]H]H VHPQDOXO ODHœDQWLRDQHGHGLIHULWH Fig.VII.11), 32 (Fig.VII.12), 64 (Fig.VII.13) œL Fig.VII.14) HœDQWLRDQH 3URLHFWGHGLSORP 59 Fig.VII.11. 0VXUDUHWLPSQHFHVDUDQDOL]F X)+7DXQXLVHPQDOFXHœDQWLRDQ Fig.VII.12. 0VXUDUHWLPSQHFHVDUDQDOL]FX)+7DXQXLVHPQDOFX 3URLHFWGHGLSORP 60 Fig.VII.13. 0VXUDUHWLPSQHFHVDUDQDOL]FX)+7DXQXLVHPQDOFX Fig.VII.14. 0VXUDUHWLPSQHFHVDUDQDOL]FX )+7DXQXLVHPQDOFXHœDQWLRDQH 3URLHFWGHGLSORP 61 VI,5H]XOWDWHœLFRPSDU a LL 7LPSLL GH H[HFX LH D UXWLQHORU transformatei Fourier rapide (FFT) œL DW ransformatei Hartley rapide (FHT) IXQF LH GH QXP UXOGH HœDQWLRDQH  VXQWSUH]HQWD VII.5. Reprezentarea graficDWLPSLORUGHH[HFX LHDUXWLQHORU este prezentate în figura VII.15, pentru DHYLGHQ LDGLIHUHQ DGLQWUHFHOHGRXDPHWRGHGHDQDO Tabelul VII.5. &RPSDUD LHWLPSQHFHVDUDQDOL]VHPQDOFX))7 bEd/KE TIMP FFT [µS] TIMP FHT [µS] 16 10504.7 309.924 32 23093.6 721.834 64 50331 1708.35 128 109197 3955.1 Fig.VII.15. Diagrama FRPSDUD LH WLPSQHFHVDUDQDOL]VHPQDOFX))7YV) ’XSFXPVHSRDWHREVHUYDGLQUH]XOWDWHOHPVXUWRULO mul FHT este mult mai rapid decâ t FFT la un numar N relativ mic de numere reale. 0.00 20000.00 40000.00 60000.00 80000.00 100000.00 120000.00 16 32 64 128 Timp în µs EbEd/KE FFT FHT 3URLHFWGHGLSORP 62 Fig.VII.16. Sistemul afiœkQG analiza FFT Fig.VII.17. Sistemul afiœkQGYL]XDODQDOL za FHT 3URLHFWGHGLSORP 63 VII.4 Concluzii S-a reuLW WHVWDUHD D G RL DOJRULWPL GHSUHOXFUDUHQXPHULFD G nivel destul de ridicat de complexitate,  LQkQGFRQWFVXQWLPSOHPHQWD LSHP 8 bi LXWLOL]DUHDQXPHUHORUPDLFRPSOH[HILLQGPDULFRQVX 7UDQVIRUPDWD+DUWOH\5DSLG )+7 HVWHRRS LXQHPDL LPSOHPHQWULLSHDUGX LQRvQFRPSDUD LHFX7UDQVIRUPDWD)RXULHU5D VHPQDOXOXLWUHEXLHIFXWvQWLPSUHDOGDWRULWUHGXF implicit a timpului de calcul necesar. Asfel avem nevoie doar de jumate din puterea de calcul œLGHPHPRULHœLVHHYLWOXFUXOFXQXPHUHFRPSOH[H’DW UH]XOWILHGDWRULWIDSWXOXLFIRORVLPFDQWLW LUHD Q FRQVLGHUDUH FD œL R DOWHUQDWLYD YLDELO OD WUDQVIRU )RXULHU 5DSLG ))7  vQ DQDOL GRPHQLXOIUHFYHQ  ’H]DYDQWDMXO 7UDQVIRUPDWHL +DUWOH\ UDSLGH )+7  H DPSOLWXGLQH)RXULHUQXHVWHGLUHFWLQWHUSUHWDW XWdeoarece în multe aplicD LLDFHVWHLQIRUPD LLVXQWIRORVLWHFDœLX final. 8QGHHVWHQHYRLHGHQXPHUHFRPSOH[HDFHVWHDSRWIL Z Z  v v o jH v He F )] ( ) ( [ ) ( (VII.2) ˛n cadrul proiectului au fost implementate cu succes cerin HOH LQL LDOH D IRVW SURYRFDUH DFHDVW WHP PDL DOHV OD LPSOHPHQWDUHD L YHULILFDUHD SHUIRUPDQ HO algorLWPLVRIWZDUHQHILLQGRDFWLYLWDWHFDUHVRPDLIL-o pe parcursul studiilor. ,PSOHPHQWDUHD SUDFWLF D QHFHVLWDW L DSURIXQGDUHD FXQRWLQ HORU microcontrolerelor, multe func LLILLQGLPSOHPHQWDWHSULQDFFHVGLUHF re, FHHDFH QHFHVLWFXQR WLQ HWHPHLQLFHGHVSUHDUKLWHFWXUDPLFURGH SURJUDPDUH XWLOL]DW GHVSUH UHDOL]DUHD XQRU PVXU  L LQWHUQH microcontrolerului. 3URLHFWGHGLSORP 64 BIBLIOGRAFIE [1]Mihai V. MICEA , IntroduFHUHvQ3UHOXFUDUHD1XPHULF , Suport curs Universitatea “Politehnica” 7LPLœRDUD)DFXOWDWHDGH$XWRPDWLFœL&DOFXODW Calculatore, pag. iv-v. [2]Ioana Gabriela S ˛RBU, 3UHOXFUDUHDQXPHULFDVHPQDOHORUvQLQJ , Ed. Universitaria, Craiova, 2014, pag. 11-13. [3]Cristian Paul CHIONCEL , 3UHOXFUDUHDQXPHULFDVHPQDOHORU , Ed. Eftimie Murgu, 5HœL D SDJ -8. [4]http://pns.ac.tuiasi.ro/Doc/curs/Prezentare_01.pdf , pag. 9-28, 34-35. [5]http://radio.ubm.ro/EA/Documente/Cursuri_Laboratoare/BSA/Laborator/Laborator%20BD. pdf [6]Florin Mihai Tufescu, „Dispozit LYHœL&LUFXLWH(OHFWURQLFH· partea a II-a, Ed. Univ.”Al. ,&X]D·,DœL >@/DXUHQ LX)U angu, ,QWURGXFHUHvQ,QJLQHULH(OHFWURQLFVL7HOH , curs 8QLYHUVLWDWHD’XQUHDGH-RV*DOD L [8]http://www.mobilindustrial.ro/current_version/online_docs/COMPENDIU/masurarea_amp litudinii_vibratiilor.htm [9]http://dsp-book.narod.ru/TAH/ch04.pdf [10]http://www.schur.pub.ro/download/ps/P5_fft.pdf [11]http://www.qreferat.com/referate/matematica/Algoritmul-FFT812.php [12]http://wiki.openmusiclabs.com/wiki/ArduinoFFT [13]http://wiki.openmusiclabs.com/wiki/FFTFunctions [14]http://wiki.openmusiclabs.com/wiki/ArduinoFHT [15]http://wiki.openmusiclabs.com/wiki/FHTFunctions [16]http://mathworld.wolfram.com/FastFourierTransform.html [17]https://www.sonometru.ro/sunetul 3URLHFWGHGLSORP 65 Anexa 1. Codul care implementeaza algoritmii ))7œL FHT #include #include #include #define SAMPLES 64 //Trebuie sa fie putere a lui 2 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // set are afisaj sa fie recunoscut de librarie MD_MAX72xx #define MAX_DEVICES 4 // Numar total de module afisaj #define CLK_PIN 13 // pinul ceas(clock) pentru comunicarea cu afisajul #define DATA_PIN 11 // pinul date pentru comunicarea cu afisajul #define CS_PIN 10 // pinul de control pentru comunicarea cu afisajul #define xres 32 // Numar total de coloane afisaj , trebuie sa fie <= SAMPLES/2 (esantioane/2) #define yres 8 // Numar total de randuri afisaj #define LOG_OUT 1 // foloseste funtia iesire log #define FHT_N 128 // setare FHT-ului la 256 de puncte #include // include libraria int MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255}; int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1}; int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129}; int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253}; int MY_MODE_5[]={0, 1, 3, 7, 15, 31, 63, 127, 255}; double vReal[SAMPLES]; double vImag[SAMPLES]; char data_avgs[xres]; int yvalue; int displaycolumn , displayvalue; int peaks[xres]; const int buttonPin = 2; // pinul butonului int tip_transf = HIGH; // HIGH – FFT, LOW – FHT int displaymode = 1; MD_MAX72XX mx = MD_MAX72XX(HARDWA RE_TYPE, CS_PIN, MAX_DEVICES); arduinoFFT FFT = arduinoFFT(); void setup() { ADCSRA = 0b11100101; // setarea ADC-lui in modul continuu (free running mode) si setarea pr escalar-ului la 32 (0xe5) ADMUX = 0b00000000; // foloseste pinul A0 si tensiune externa de referinta pinMode(buttonPin, INPUT); pinMode(2, OUTPUT); mx.begin(); // initializarea afisajului (display -ului matrice led-uri) delay(50); // astepta ca tensiune externa de referinta sa se stabilizeze // Serial.begin(9600); } void loop() { 3URLHFWGHGLSORP 66 tip_transf=digitalRead(buttonPin); if(tip_transf) //FFT { // ESANTIONARE for(int i=0; i peaks[i]) peaks[i] = yvalue ; yvalue = peaks[i]; displayvalue=MY_ARRAY[yvalue]; // displayvalue=MY_MODE_2[yvalue]; displaycolumn=31-i; mx.setColumn(displaycolumn, displayvalue); // de la stanga la dreapta } // – trimite la afisaj valoril e masurate } 3URLHFWGHGLSORP 68 Anexa 2. Codul volum microfon #define LOG_OUT 1 // foloseste iesire semnal logaritmic #define LIN_OUT8 1 // foloseste iesire semnal liniar // pins #define MicPin A0 // pin analog // consts #define AmpMax (1024 / 2) #define MicSamples (1024*2) // numar esantioane // modes #define Use3.3 // foloseste 3.3V deoarece tensiunea de 5V de la USB nu este stabilizata #define ADCReClock // creste frecventa de ceas (nu este necesara daca semnalul de intrare este intre 0 si 4 KHz). #define ADCFlow // citeste datele de la ADC in mod continuu (free running). #else #endif #define FreqSerialBinary #define VolumeGainFactorBits 0 // macros #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) void setup() { #ifdef ADCFlow // setarea convertorului adc in modul free running (continuu) // 5 => divizor 32. rata esantionare 38.4 // 7 => trece la divizor=128, default e la 9.6khz esant ioane ADCSRA = 0xe0+7; // „ADC Enable”, „ADC Start Conversion”, „ADC Auto Trigger Enable” si divizor. ADMUX = 0x0; // use adc0 (hardcoded, doesn’t use MicPin). Foloseste pinul AREF pentru tensiunea externa de referinta #ifndef Use3.3 ADMUX |= 0x40; // foloseste Vcc ca si referinta analoga #endif DIDR0 = 0x01; // opreste intrarea digitala adc0 #else #ifdef Use3.3 analogReference(EXTERNAL); // 3.3V AREF tensiune externa de referinta #endif #endif #ifdef ADCReClock // schimba divizorul frecventei adc. default is div 128 9.6khz (bits 111) // divizor 32 = 38.4Khz sbi(ADCSRA, ADPS2); cbi(ADCSRA, ADPS1); sbi(ADCSRA, ADPS0); #endif // serial 3URLHFWGHGLSORP 69 Serial.begin(9600); while (!Serial); //asteapta pana serial -ul este gata } void loop() { MasuratVolum(); } PDVXUDUHQLYHOYROXPVLSULQWDUH DILœDUH VHULDO void MasuratVolum() { long volsunetMED = 0, volsunetMax = 0, volsunetRMS = 0, t0 = millis(); for (int i = 0; i < MicSamples; i++) { #ifdef ADCFlow while (!(ADCSRA & /*0x10*/_BV(ADIF))); // asteapta ca adc -ul sa fie gata (ADIF) sbi(ADCSRA, ADIF); // restart adc byte m = ADCL; // fetch adc data byte j = ADCH; int k = ((int)j << 8) | m; #else int k = analogRead(MicPin); #endif int amp = abs(k - AmpMax); amp <<= VolumeGainFact orBits; volsunetMax = max(volsunetMax, amp); volsunetMED += amp; volsunetRMS += ((long)amp*amp); } volsunetMED /= MicSamples; volsunetRMS /= MicSamples; float volsunetRMSflt = sqrt(volsunetRMS); float dB = 20.0*log10(volsunetRMSflt/AmpMax); // conversia de la 0 la 100 volsunetMED = 100 * volsunetMED / AmpMax; volsunetMax = 100 * volsunetMax / AmpMax; volsunetRMSflt = 100 * volsunetRMSflt / AmpMax; volsunetRMS = 10 * volsunetRMSflt / 7; // RMS este 0.7 din varf in sinus) // printeaza rezultate Serial.print("Time: " + String(millis() - t0)); Serial.print(" Amp: Max: " + String(volsunetMax)); Serial.print("% MED: " + String(volsunetMED)); Serial.print("% RMS: " + String(volsunetRMS)); Serial.println("% dB: " + String(dB,3)); }

Similar Posts