Partea a II-a
Algoritm
Figura 4 prezintă schema logică a SW de nivel înalt al algoritmului. Cele trei piese importante ale SW sunt detectarea activităţii, detectarea bufniturii şi spargerea sticlei în ordinea de apariţie în timp. Aproximativ la fiecare 2,5 de milisecunde, microfonul şi AO1 sunt pornite pentru a se verifica orice activitate de sunet. În absenţa oricărei activităţi semnificative, acestea sunt oprite şi MCU-ul intră în stare de consum energetic redus. Dacă există activitate semnificativă, atunci SW continuă la detecţia bufniturii, unde ADC-ul este pornit, urmat de o procesare de semnal pentru a verifica componenta de bufnitură. Numai dacă este prezentă o bufnitură algoritmul va trece la detectarea propriu-zisă a spargerii sticlei. Altfel, algoritmul va reveni la activitatea de detecţie. Dacă detecţia spargerii sticlei are succes, va fi activat un LED/buzzer on-board pentru a indica acest eveniment. GBD ca reveni apoi la detectarea activităţii.
Detectarea activităţii compară doar valorile de intrare ADC la praguri prestabilite pe fiecare parte a punctului de zero pentru a distinge semnalul real de zgomot. Cum a fost menţionat mai devreme, o bufnitură este o componentă de frecvenţă joasă la aproximativ 300Hz. Din moment ce componenta de bufnitură apare numai la impactul iniţial, numai primele câteva eşantioane din semnalul recepţionat sunt filtrate. Acest lucru este realizat utilizând un LPF (Low-Pass Filter) digital cu o frecvenţă de tăiere de 350Hz. Mostrele filtrate sunt acumulate, mediate şi comparate cu un prag de energie pre-definit.
Dacă energia depăşeşte pragul, ar trebui iniţiate o componentă de bufnitură şi spargere de sticlă.
Pentru ca LPF-ul digital să fie în mai mic şi încă eficient, frecvenţa de eşantionare de la mostrele iniţiale este mult mai scăzută şi menţinută la numai 4kHz. Totuşi, un AAF cu frecvent de tăiere la 2kHz este utilizat în schimbul AAF-ului cu tăiere de 20kHz pentru această secţiune de algoritm. Algoritmul de detecţie al spargerii sticlei este mai complex decât detectarea bufniturii şi este divizat în două părţi, SA1 (Signal Analysis 1) şi SA2 (Signal Analysis 2). SA1 este prima etapă a procesării şi apare la fiecare eşantionare, odată ce a fost detectată o bufnitură. În timpul SA1, este ales AAF-ul de 20kHz şi frecvenţa de eşantionare ADC este ridicată până la 40kHz. Operaţiile pentru SA1 includ medierea semnalului, detecţia intersecţiei cu zero şi detecţia vârfurilor.
Acest lucru se realizează pentru o perioadă de aproximativ 60ms ceea ce însumează aproximativ 2400 de eşantioane. Odată ce SA1 este complet, SA2 este iniţializat pentru a termina analiza întregului semnal. Figura 5 prezintă o reprezentare de semnal în timpul SA1 şi Figura 6 diagrama software curentă.
Eşantioanele care sosesc notate prin p(n) sunt iniţial trecute printr-un simplu filtru de mutare a mediei pentru a reduce zgomotul la ieşire s(n).
Integrarea semnalului p(n) este realizată utilizând numai eşantioane pozitive pentru a calcula energia semnalului notată ca integ_total pentru a fi utilizată în SA2. Contoare de vârf şi trecere de zero sunt realizate pentru s(n). pentru a extrage componentele HF ale semnalului care soseşte este utilizat un HPF (High-Pass Filter) cu o frecvenţă de tăiere de şi fiecare eşantion al p(n) este supus la această filtrare. Simultan, numai eşantioanele pozitive ale ieşirii filtrate sunt acumulate în rezultatul notat ca integ_HPF_ total, care va fi utilizat în SA2. Întregul SA1 este realizat la fiecare eşantionare şi trebuie completat înainte de sosirea următorului eşantion p(n+1) pentru operarea în timp real, presupunând că numărul total de cicluri disponibile CPU nu sunt decât frecvenţa CPU/40 kHz. Filtrarea este în general o operaţie consumatoare de timp.
Din motive de eficienţă sunt utilizate LWDF-uri (Lattice Wave Digital Filters) [1] şi algoritmul lui Horner [2] atât LPF-ul pentru detecţia bufniturii şi HPF în SA1. Odată ce 60ms de date au fost procesate prin SA1, algoritmul trece la SA2, a doua etapă a procesării. SA2 nu necesită o operaţiune în timp real, rezumatul operaţiunilor fiind prezentat în Figura 7. În plus, dacă într-adevăr s-a produs spargerea sticlei va fi confirmat la sfârşitul SA2.
Coeficientul de energie totală pentru semnal la semnalul filtrat trece-sus este calculat şi verificat faţă de unui prag. Rezultatele indică un coeficient între 1,75 şi 14 pentru numărul de sunete de spargere sticlă. Similar, numărul de vârfuri este verificat dacă este între 160 şi 320 şi numărul de treceri prin zero este între 95 şi 300. Ar fi fost posibilă o spargere de sticlă validă dacă fiecare dintre cele trei condiţii de mai sus sunt satisfăcute. Chiar dacă una dintre condiţii dă greş, detectorul se spargere sticlă este reiniţializat şi se revine la detecţia activităţii. Aceste praguri şi domenii vor necesita ajustaje minore în funcţie de acustica unei camere, locaţia GBD, zgomotul din mediu etc.
Implementarea pe MCU
Platforma MCU MSP430™ de la Texas Instruments (TI) are o varietate de dispozitive în portofoliul său. MSP 430F2274 este un MCU de 16-biţi din familia 2×× de platforme MSP430 de consum energetic scăzut [3]. MCU-ul este capabil să lucreze la frecvenţe de până la 16MHz. Acesta are de asemenea un oscilator intern VLO (Very-low-power Low-frequency Oscillator) care operează la 12kHz la temperatura camerei. Acesta are două temporizatoare pe 16-biţi şi un convertor analogic-digital pe 10-biţi (ADC10) care suportă rate de conversie de până la 200kHz. ADC10 poate fi configurat să lucreze cu amplificatoare operaţionale on-chip (AO0 şi AO1) pentru condiţionarea semnalului analogic. Consumul de curent de 0,7μA din timpul modului de aşteptare (LPM3) şi 250μA în timpul modului activ îl fac o alegere excelentă pentru aplicaţii alimentate pe baterii.
Figura 8 prezintă diagrama bloc a nivelului sistemului utilizând MSP 430F2274 cu perifericele sale integrate. Din moment ce microfonul are o bandă de trecere de la 20Hz la 20kHz şi MSP430F2274 nu are decât două AO integrate, se poate permite înlăturarea AAF-ului de 20kHz de la implementare. Deşi acest fapt este o încălcare clară a teoriei de eşantionare, s-a observat că rezultatele nu variază cu absenţa acestuia. Totuşi, dacă alt AO este disponibil, AAF-ul de 20kHz poate încă să fie parte din schemă.
MSP430F2274 are două amplificatoare operaţionale configurabile software notate AO0 şi AO1. AO0 este utilizat ca amplificator inversat cu câştig de 7 pentru a asigura amplificarea la ieşirea microfonului. AO1 este configurat ca un filtru trece-jos cu câştig unitar, care este un tip Butterworth de ordin doi realizat prin utilizarea arhitecturii Sallen-Key [5]. Filtrul are o frecvenţă de tăiere de 3-dB la 2kHz. Ieşirile AO1 şi AO2 sunt conectate intern cu canalele A1 şi A13 respectiv.
Consumul de curent
Consumul de curent al întregului GBD depinde de modurile de putere scăzută alese în timpul operaţiilor acestuia şi de comutarea selectivă ON/OF a perifericelor.
Profilul de consum de curent pentru implementarea pe MSP430 pentru trei moduri de operare este prezentată în Figurile 9, 10 şi 11.
Figura 9 prezintă profilul de consum de curent în timpul detecţiei activităţii. Dispozitivul se activează la fiecare 2,5ms pentru a verifica activitatea şi intră în mod activ (AM1) pentru 20μs, timp în care ceasul CPU este setat la 12MHz. Când nu este detectată nici o activitate la microfonul extern, dispozitivul revine la modul de aşteptare sau modul de putere scăzută 3 (LPM3). Activări periodice de la modul de aşteptare sunt realizate prin utilizarea unui temporizator on-chip cu ceasul său setat la ~12kHz la temperatura camerei.
Figura 10 prezintă profilul consumului de curent când există activitate semnificativă detectată la microfonul extern şi algoritmul începe detecţia impactului. Dispozitivul intră în AM1 pentru 18μs şi este configurat să opereze în mod de detecţie bufnitură. CPU-ul funcţionează acum la 8MHz, iar dispozitivul intră în modul activ (AM2).
În acest mod, ADC este configurat să eşantioneze la o rată de 4kHz. Analiza de semnal apare la fiecare eşantion pentru o perioadă de 32ms, adică 128 eşantioane. Dacă nu este detectată o bufnitură validă, dispozitivul reintră în AM1 pentru 12μs, timp în care dispozitivul este reiniţializat şi configurat să se întoarcă la detecţia activităţilor.
Figura 11 prezintă profilul consumului de curent când este confirmat un impact valid şi dispozitivul urmează modul de detecţie al spargerii sticlei. În timpul detecţiei spargerii sticlei, ceasul CPU este configurat iar la 12MHz, şi dispozitivul intră în mod activ (AM3) cu rata de eşantionare ADC de 40kHz.
Analiza de semnal apare pe fiecare eşantion pentru o perioadă de 60ms, ceea ce înseamnă 2400 de eşantioane. Dacă nu este detectată o spargere de sticlă validă, dispozitivul revine la AM1 pentru 4,6ms, timp în care dispozitivul este reiniţializat şi configurat să repornească modul de detecţie al activităţii cu activări periodice de 2,5ms. La apariţia unei spargeri de sticlă valide, dispozitivul activează un LED/buzzer on-board pentru trei secunde şi revine la detecţia de activitate.
Tabelul 1 furnizează o listă a tuturor perifericelor şi ceasurilor [4] care sunt ON în timpul diferitelor moduri de operare. Aceste periferice sunt contribuitori semnificativi la consumul total de curent în timpul fiecărei etape.
Placa GBD utilizând MSP430 este alimentată de două baterii AAA furnizând 800mAh. Deşi nu este uşor de prezis durata de viaţă a bateriei unei astfel de aplicaţii, presupunând că nu s-a detectat nici o spargere de sticlă, consumul total de curentul este în jur de 80μA pentru a oferi o viaţă a bateriei de aproximativ 416 de zile. Durata de viaţă a bateriei poate creşte în continuare dacă perioada de activare a detecţiei de activitate ar creşte faţă de 2,5 milisecunde; totuşi, posibilitatea ratării unui eveniment sonor creşte.
În acest articol a fost analizată o soluţie de detector de spargere sticlă simplu şi robust, dar şi ilustrarea componentelor unui semnal de spargere sticlă şi a metodelor pentru ca acestea să fie extrase.
Cerinţele HW şi SW precum şi implementările acestora pe un MCU au fost prezentate şi au fost furnizate perspective noi în consumul de curent pentru această implementare în timp real.
Kripasagar Venkat – Biografie
Venkat este inginer de sisteme de aplicaţii al Texas Instruments, Dallas, TX. El a lucrat cu grupul de microcontrolere MSP430 încă din 2006 şi a publicat câteva rapoarte tehnice discutând filtrarea digitală optimizată, contorizarea energiei şi alte documente specifice pentru aplicaţii. Venkat deţine un masterat la University of Texas la Dallas cu specializare în procesarea semnalelor şi comunicaţii. Preocupările lui curente includ contorizarea energiei, filtre digitale etc.
Contact:
Irina Marin / ECAS ELECTRO
Tel.: 021 204 8100
Fax: 021 204 8130
www.ecas.ro
Gabriela Petrache / TI / Suport Clienţi România
eecsc@ti.com