desarrollo de visualizador de alarmas sonorasdeeea.urv.cat/public/propostes/pub/pdf/386pub.pdf · -...

125
DESARROLLO DE VISUALIZADOR DE ALARMAS SONORAS AUTOR: Paco Lleixà Panisello. DIRECTOR: José L. Ramírez Falo, Jesús Brezmes Llecha DATA: Setembre / 2003

Upload: others

Post on 06-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

DESARROLLO DE VISUALIZADOR DE ALARMAS SONORAS

AUTOR: Paco Lleixà Panisello. DIRECTOR: José L. Ramírez Falo, Jesús Brezmes Llecha

DATA: Setembre / 2003

Page 2: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

ÍNDEX

1. MEMÒRIA DESCRIPTIVA...................................................................1

1.1 INTRODUCCIÓ...............................................................................21.1.1 Objectius.....................................................................................21.1.2 Aproximació al problema...........................................................2

1.2 ESTUDI DEL PROBLEMA.............................................................41.2.1 Conjunt de mostres de prova...................................................... 41.2.2 Filtre FIR.....................................................................................4

1.2.2.1 Introducció......................................................................51.2.2.2 Disseny e implementació de filtres FIR mitjançant

finestres temporals..........................................................61.2.3 Xarxa Neuronals Fuzzy Art........................................................7

1.2.3.1 Definició.........................................................................71.2.3.2 Avantatges de les xarxes neuronals................................91.2.3.3 Reconeixement de patrons............................................121.2.3.4 Característiques de les xarxes neuronals.......................141.2.3.5 Aprenenetatge................................................................151.2.3.6 Tipus d’associació entre les informacions

d’entrada i sortida..........................................................181.2.3.7 Funcionament d’una xarxa ART....................................211.2.3.8 Algorisme.......................................................................23

1.3 PROTOTIPUS VALIDACIÓ..........................................................231.3.1 Solucions considerades..............................................................231.3.2 Solució adoptada........................................................................25

1.4 PROCESSAMENT DEL SENYAL................................................25

1.4.1 Introducció.................................................................................251.4.2 Metodologia...............................................................................251.4.3 Tractament del so.......................................................................27

1.4.3.1 Enregistrament de sons............................................281.4.3.2 Convolució FIR.......................................................301.4.3.3 Preprocessament del senyal.....................................33

1.4.3.3.1 Introducció................................................331.4.3.3.2 Normalització............................................33

1.5 CONCLUSIONS..............................................................................35

2. MEMÒRIA DE CÀLCUL..........................................................................37

2.1 DESCRIPCIÓ SOLUCIÓ ADOPTADA..........................................382.1.1. Resistències.................................................................................382.1.2. Condensadors..............................................................................392.1.3. Díode Led....................................................................................392.1.4. Potenciòmetre..............................................................................402.1.5. Micròfon......................................................................................40

Page 3: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

ÍNDEX

2.1.6. Regulador 5V...............................................................................412.1.7. Oscil·lador....................................................................................412.1.8. Amplificador d’àudio...................................................................422.1.9 Microcontrolador.........................................................................42

3. PRESSUPOST.............................................................................................43

3.1 Preu Material.....................................................................................443.2 Preu Fabricació..................................................................................45

4. BIBLIOGRAFIA.........................................................................................46

4.1. Llibres consultats............................................................................474.2. Pàgines web consultades.................................................................47

ANNEXES

1. Espectres sons enregistrats2. Programes MATLAB3. Programes MPLAB

(Els annexes van enquadernats en volums separats a la memòria del projecte)

Page 4: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

1

MEMÒRIA DESCRIPTIVA

Page 5: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

2

1.1 Introducció

La comunicació constitueix el primer vehicle que permet la interacció,desenvolupament i projecció de qualsevol persona a l’interior d’un grup social.

Una manera de poder facilitar la interacció és intentar ajudar en les coses quetothom creiem més insignificants, com és el cas de poder detectar algunes classesde sons que reconeixem habitualment.Ajudant a facilitar el mode de vida permet integrar en el mode de vida de lasocietat a moltes persones amb problemes com per exemple d’oïda.

1.1.1 Objectiu del projecte

L’objectiu del projecte estudiar i dissenyar un dispositiu capaç de detectar tresclasses de sons com per exemple un telèfon, un alarma i un despertador.

El sistema de discriminació es basa en un sistema digital que anirà capturant elssons que hi ha a l’ambient i quan hagi passat el temps suficient com per tenir prouinformació per poder classificar el so, dóna un senyal d’avís a l’usuari. A partird’aquí s’ha intentat dissenyar un producte que pugui fer més còmoda la vida deles persones sordes i, a més a més que tingui un cost de fabricació mínim perpoder ser viable econòmicament.

1.1.2 Aproximació al problema

Adquisició de dades

S’ha dissenyat un sistema el qual filtrarà un senyal d’entrada. Aquest filtre és unfiltre digital, com s’explica en el punt solucions considerades. Dins del filtresdigitals, hem escollit el filtre FIR en lloc del IIR, ja que per la tècnica del filtratIIR s’utilitza més en temps continu i nosaltres hem de treballar en temps discret(però ja es profunditzarà més aquest tema més endavant).

MicròfonAdequar senyal

entradamicrocontrolador

ConversorA/D

Convolució ambFiltre FIR

Xarxa neuronalFuzzy Artmap

Page 6: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

3

Anem capturant i filtrant el senyal d’entrada durant dos segons, i tot seguit, através d’una xarxa neuronal s’identifica el so. La xarxa neuronal escollida perrealitzar els reconeixements del sons ha estat la xarxa Fuzzy Artmap. Aquesta ésuna xarxa molt utilitzada, a nivell d’informació està molt ben documentada i hadonat molt bons resultat a altres estudis, com per exemple el Nas Electrònic.

En les següents línies es pot veure les fases i punts més importants que s’hantingut en compte a l’hora d’aproximar el problema inicial a la solució final delsistema:

Primer de tot s’ha simulat el sistema amb el programa Matlab (veure referències).

Aquestes són les variables que ens interssen estudiar:

Figura1 – Variables E/S Matlab

Freqüència de mostreig: el nombre de mostres per segon que captura elconvertidor A/D.

Número de filtres: la quantitat de sons que el nostre sistema serà capaç declassificar.

Número de mostres: és el nombre de mostres que es necessiten en el filtre FIRper realitzar la convolució (multiplicació de senyals en temps discret) del senyald’entrada amb el filtre.

Coeficient aprenentatge: En la xarxa neuronal, el coeficient d’aprenentatge és la precisió a l’hora de crear noves classes.

Ample de banda filtre despertador: És l’interval de freqüències en el qual esmou l’espectre d’energia que aporta més energia al despertador.

Ample de banda filtre alarma: És l’interval de freqüències en el qual es moul’espectre d’energia que aporta més energia a l ‘alarma.

Page 7: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

4

Un cop s’ha estudiat el sistema i hem trobat aquestes variables és el moment deposar en pràctica aquestes variables en un sistema real.

1.2 Estudi Problema

A continuació s fa una petita introducció al sistema escollit.

1.2.1 Conjunt de mostres de prova

Les eines utilitzades per poder realitzar les proves de simulació han estat:

- Targeta soundblaster 64- Micròfon PC- Matlab 5.1

La targeta soundblaster l’hem utilitzada per fer les gravacions del sons adiscriminar, juntament amb un micròfon omnidireccional simple de PC, ja quehem de realitzar un estudi freqüencial dels sons.

A continuació es mostra una petita introducció als filtres FIR, ja que ha estat latècnica escollida per filtrar el senyal d’entrada.

1.2.2 Filtre FIR

El filtratge té moltes aplicacions i molt variades. Des de les comunicacions finsals equips domèstics de música, des del tractament de les imatges que arriben viasatèl·lit fins l’adquisició de dades per realitzar el control automàtic d’undeterminat procés. Per extensió, tota operació de deixar o no deixar passar lapodríem associar a un filtre. Pensem, per exemple, en el paper que es posa a lescafeteres. Doncs ara apliquem-ho al sistema dissenyat. Tenim un senyal d’entradaque és el so que es produeix dintre d’un recinte. En el filtre es defineixen els sonscom a una sèrie d’energies acotades dintre d’un ample de banda, doncs quandissenyem el filtre estem acotant-lo dintre d’unes freqüències en les que podemassegurar que la freqüència fonamental del so es mou en la banda de freqüènciadescrita.El filtre FIR el que fa és el de deixar passar el senyal solament dintre del margede freqüències definides per aquest del filtre.

1.2.2.1 Introducció

Considerem un sistema lineal de temps discret caracteritzat per una equació endiferències d’ordre N, on l’ordre és el valor del major retard que intervé en elsumatori de la resposta:

Page 8: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

5

x[n] y[n]

????

???M

rr

N

kk rnxbknya

00

)()(

Combinació lineal de les Combinació lineal de les mostres de sortida mostres d’entrada

La resposta impulsional d’aquest sistema té una duració finita (M+1 mostres).Es denomina sistema FIR (Finite Impulse Response) a aquells sistemes discretsde resposta impulsional de duració finita.

?????? ??

?

?? MM

n

n zMhzhhznhzH )(...)1()0()()( 1

0

M

MM

zMhzhzh )(...)1()0( 1 ???

??

? M zeros en qualsevol lloc del pla z? M pols en z=0

Aquests coeficients que multipliquen cada mostra, seran creats pel Matlab ambuna funció anomenada fir1, la qual a partir del numero de mostres i l’ample debanda desitjat ens dóna els valors dels coeficients de Fourier.

Ara remarcarem les característiques a tenir més en compte dels filtres FIR.

1. Filtre FIR amb variació lineal de fase respecte a la freqüència

Suposem que la resposta impulsional h(n) d’un sistema FIR es caracteritza perh(n) = h(M-n), el que correspondria a un comportament simètric a l’instant M/2,és a dir, que si el numero de mostres és par o impar M/2 farà que existeixi o no uneix de simetria.

//

Page 9: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

6

2. Disseny de filtres FIR mitjançant finestres temporals

Aquest sistema és un dels més utilitzats per al disseny de filtres FIR i es basa ambla obtenció d’una resposta impulsional de duració finita a partir del truncamentd’una resposta impulsional de duració finita.

1.2.2.2 Disseny e implementació de filtres FIRmitjançant finestres temporals

Aquest punt ajudarà a veure més clar les diferències entre el filtre FIR i el filtreIIR.

Les tècniques utilitzades comunament pel disseny de filtres IIR es basen entransformacions de sistemes IIR en temps continu en sistemes IIR en tempsdiscret. El motiu és en part perquè el disseny de filtres en temps continu era un artaltament avançada abans que el filtres en temps discret fossin de interès i en partdegut a la dificultat de realitzar un mètode de disseny directe no iteratiu de filtresIIR.

Per el contrari, els filtres FIR estan restringits quasi totalment a realitzacions entemps discret. En conseqüència, les tècniques de disseny de filtres FIR es basenen aproximar directament la resposta en freqüència desitjada del sistema entemps discret. És més, la majoria de tècniques d’aproximació de la resposta enamplitud d’un sistema FIR assumeixen una restricció de fase lineal, evitant, per lotant, el problema de la factorització de l’espectre que complica el disseny directedels filtres IIR.

Per tant, el mètode més simple de disseny de filtres és el mètode de finestres.Aquest mètode comença generalment amb una resposta en freqüència desitjadaideal que es pot representar com:

? ? ,)( ??

???

??n

njd

jd enheH ??

sent ? ?nhd la corresponent seqüència de resposta al impuls, que es pot expressar

en funció de ? ??jd eH .

? ? ? ????

?

?

?? ??

deeHnh njjdd 2

1

Page 10: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

7

Molts sistemes es defineixen de forma idealitzada mitjançant respostes enfreqüència constants per trams o funcionals per trams, amb discontinuïtats alslímits de les bandes.

Com a resultat, la resposta del impuls d’aquests sistemes és no causal einfinitament llarga. La forma més directa d’obtenir una aproximació FIR causal aaquests sistemes és truncar la resposta ideal. El desenvolupament en sèrie deFourier de la resposta en freqüència periòdica ? ??j

d eH , on els valors de laseqüència ? ?nhd juguen el paper de coeficients de desenvolupament en sèrie deFourier. Per lo tant, l’aproximació d’un filtre ideal mitjançant el truncament de laresposta a l’impuls és idèntica al tema de la convergència del desenvolupamenten sèrie de Fourier, una cosa que s’ha estudiat llargament.

La forma més simple d’obtenir un filtre FIR causal a partir de ? ?nhd és definir unnou sistema amb resposta a l’impuls ? ?nh .

? ?nhd , 0 ? n ? M,

? ?nh = 0, en la resta.

1.2.3 Xarxa Neuronals Fuzzy Art

Per reconèixer els sons, fem servir una xarxa neuronal Fuzzy Art. El motiu pelqual utilitzem aquesta xarxa serà comentat en el punt de avantatge.

1.2.3.1 Definició

Existeixen diverses formes de definir el que són xarxes neuronals, des de lesdefinicions curtes i genèriques fins a les que intentes explicar més detalladamentel que significa xarxa neuronal i computació neuronal.Xarxes neuronals artificials són xarxes interconnectades massivament en paral·leld’elements simples (usualment adaptatius) i amb organització jeràrquica, lesquals intenten interactuar amb els objectes del mon real de la mateixa manera queho fa el sistema nerviós biològic.

És necessari destacar que tals computadors neuronals no executen les típiquesinstruccions de maquina dels computdors dgitals, a no ser que estigui fet peremular el comportament de les xarxes neuronals físiques. En principi la operacióde procés bàsic realitzada per tots els processadors elementals és una operacióanàloga de transformació de les seves senyals d’entrada.

En les xarxes neuronals biològiques, les cèl.lules neuronals) corresponen alselements de procés anteriors. Les interconnexions es realitzen per mitjà de lesrames de sortida (axons) que produeixen un nombre variable de connexions

Page 11: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

8

(sinapsis) amb altres neurones. Les xarxes neuronals són sistemes de simpleselements de procés molt interconnectades.La complexa operació de les xarxes neuronals és el resultat de nombrosos llaçosde realimentació conjuntament amb no linealitats dels elements de procés i canvisadaptatius dels seus paràmetres, que poden definir inclús els fenòmens dinàmicsmolt complicats.Una peculiaritat de les xarxes neuronals biològiques és les seves dimensions: entot el sistema nerviós central hi ha l’ordre de 1110 neurones, però el nombred’interconnexions és encara molt més gran, probablement sobre 1510 . No semblapossible programar les funcions d’aquest sistema d’acord amb un pla principal,tenint en compte a més que la mida de la xarxa canvia radicalment durant idesprés de la infantesa, quan la està en us.És veritat que certs caràcters textuals de la xarxa són inherents i durant laontogènesis les projeccions neuronals creixen aproximadament cap aquells llocsen els quals seran necessitades mes tard. En altres paraules, la distribució delsrecursos i els camins de comunicació mes importants estan formats d’acord a unpla genèric, mentre que la resta del programming, en especial la memòria, ha deser adquirit desprès de néixer.

Programar aquesta xarxa pot significar dues coses:

a) Les estructures d’interconnexió entre cèl·lules són alterades.b) Les forces d’aquestes interconnexions estan combinades.

Sembla que existeixen bastants estratègies clares de com canviar les forces en ladirecció correcta, mentre que canvis entre les interconnexions són més difícils dedefinir, perquè solen tenir efectes més radicals en el comportament de la xarxa,especialment en el que fa referència a l’operació seqüencial i funcionsjeràrquiques.

És molt difícil imaginar com una xarxa tan enorme pot ser programada. Unapossibilitat, en relació als subsistemes sensorials, podria ser que l’estructura delsistema, o el procés dinàmic que defineix, d’alguna manera tendeixi a imaginarles experiències sensorials d’altres aconteixements.

Una altra funció important del sistema nerviós és definir accions que formin partdel comportament, i controlar l’estat de l’organisme en relació amb el seu entorn.Mentre que les representacions internes en les quals està basat el comportamentpoden ser derivades de les entrades de forma bastant directa, les definicions de lessortides deuen estar basades en estratègies completament diferents.

Per altra banda, el significat i la qualitat de les accions han de ser jutjats no desdels moviments immediats, sinó des de la realització de criteris que tenen encompte el resultat que es vol, a vegades bastant indirectament. Sovint les accionssón només corregides si es realitzen amb freqüència, on el mecanisme que lesprovoca ha de contenir circuits que defineixen aquestes freqüències i que variïnen relació amb els resultats apresos. Està clar que programar les accions és unprocés molt més indirecte que programar les representacions internes; el factoraleatori no es pot evitar.

Page 12: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

9

Programant les funcions d’entrada i de sortida ens porta només a una operació decomportament on estimuli la resposta són considerats molt rellevants. Certament,és possible realitzar autòmats bastant complexes. Tot i amb això, es mantél’expectativa sobre la possibilitat que les xarxes neuronals puguin actuar comordinadors per a alguns problemes abstractes i també on la computació es realitzien l’estat intern de la xarxa.

1.2.3.2 Avantatges de les xarxes neuronals

Degut a la seva constitució i als seus fonaments, les xarxes neuronals presentenun gran nombre de característiques semblants al cervell. Per exemple, sóncapaces d’aprendre de l’experiència, de generalitzar de casos anteriors a nouscasos, d’abstreure característiques essencials a partir d’entrades que representeninformació irrellevant, etc...Això fa que ofereixin nombroses avantatges i aquest tipus de tecnologia s’estiguiaplicant en multitud de tasques. Aquestes avantatges inclouen:

- Aprenentatge adaptatiu- Autoorganització- Tolerància a errors- Operació en temps real- Fàcil inserció dins de la tecnologia existent.

Aprenentatge adaptatiu

La capacitat d’aprenentatge adaptatiu és una de les característiques més atractivesde les xarxes neuronals. Això és, aprenen a dur a terme certes tasques mitjançantun entrenament amb exemples i entrenaments, bo és necessari que el.laboremmodels a priori ni necessiten especificar funcions de distribució de probabilitat.Les xarxes neuronals són sistemes dinàmics autoadaptatius. Són adaptables deguta la capacitat d’autoajustar-se dels elements processals (neurones) que composenel sistema. Són dinàmics, doncs són capaces d’estar constantment canviant per aadaptar-se a les noves condicions.En el procés d’aprenentatge, els enllaços ponderats de les neurones s’ajusten deforma que s’obtinguin uns resultats específics. Una xarxa neuronal no necessitaun algorisme per a resoldre un problema, ja que ella pot generar la seva pròpiadistribució dels pesos dels enllaços mitjançant l’aprenentatge. També existeixenxarxes que continuen aprenent al llarg de la seva vida, després de completar elperíode inicial d’entrenament.La funció del dissenyador és únicament l’obtenció de l’arquitectura apropiada.No és problema del dissenyador com la xarxa aprendrà a discriminar; tot i ambaixò, és necessari que desenvolupi un bon algoritme d’aprenentatge queproporcioni la capacitat de discriminar la xarxa mitjançant un entrenament ambpatrons.

Page 13: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

10

Autoorganització

Les xarxes neuronals utilitzen la seva capacitat d’aprenentatge adaptatiu per aautoorganitzar la informació que reben durant l’aprenentatge i/o l’operació.Mentre que l’aprenentatge és la modificació de cada element processal,l’autoorganitació consisteix en la modificació de la xarxa neuronal completa per aportar a terme un objectiu específic.

Aquesta autoorganització proposa la generalització: facultat de les xarxesneuronals de respondre apropiadament quan se li presenten dades o situacions ales que no hi havia estat exposades anteriorment. El sistema pot generalitzarl’entrada per a obtenir una resposta.Aquesta característica és molt important quan s’han de solucionar problemes enels quals la informació d’entrada està especificada de forma incompleta.

Tolerància als errors

Les xarxes neuronals són els primers mètodes computacionals amb la capacitatinherent de tolerància a errors. Comparats amb els sistemes computacionalstradicionals, les quals perden la seva funcionalitat que pateixen un petit error dememòria, en les xarxes neuronal, si es produeix un error en un petit nombre deneurones, encara que el comportament del sistema es veu influenciat, el sistemano pateix una caiguda repentina.

Hi ha dos aspectes diferents amb respecte a la tolerància d’errors: primer, lesxarxes poden aprendre a reconèixer patrons amb soroll, distorsionats oincomplets, aquesta és una tolerància als errors respecte a les dades. Segon, podenseguir realitzant la seva funció (amb certa degradació) encara que es destrueixiuna part de la xarxa.La raó per la que les xarxes neuronals són tolerants als errors és que tenen lainformació distribuïda en les connexions entre neurones, existint cert grau deredundància en aquest tipus d’emmagatzemament. La majoria dels majoria delsordinadors algorísmics i sistemes de recuperació de dades emmagatzemeninformació no localitzada. Per tant, la majoria de les interconnexions entre elsnodes de la xarxa tindran uns valors en funció dels estímuls rebuts, i es generaràun patró de sortida que representi la informació emmagatzemada.

Operació en temps real

Una de les majors prioritats de la majoria de les àrees d’aplicació, és la necessitatde realitzar grans processos amb dades de forma ràpida. Les xarxes neuronalss’adapten bé a això degut a la seva implementació paral·lela. Per a que la majoriade les xarxes puguin operar en un entorn de temps real, la necessitat de canvi enels pesos de les connexions o entrenament és mínim. Per tant, de tots els mètodespossibles, les xarxes neuronals són la millor alternativa per al reconeixement depatrons en temps real.

Page 14: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

11

Fàcil inserció dins de la tecnologia existent

Una xarxa individual pot ser entrenada per a desenvolupar una única i bendefinida tasca (tasques complexes, que facin múltiples seleccions de patrons,requeriran sistemes de xarxes interconnectades). Degut a que una xarxa pot serràpidament entrenada, comprovada, verificada i traslladada a una implementacióhardware de baix cost, és fàcil insertar xarxes neuronals per a aplicacionsespecífiques dins de sistemes existents.D’aquesta manera, les xarxes neuronals es poden utilitzar per a millorar sistemesde forma incremental, i cada pas pot ser avaluat abans de passa a undesenvolupament més ampli.

Aplicacions de les xarxes neuronals

Les xarxes neuronals són una tecnologia computacional emergent que potutilitzar-se en un gran nombre i varietat d’aplicacions, tant comercials commilitars. Es poden desenvolupar xarxes neuronals en període de temps raonable ipoden desenvolupar tasques concretes millor que altres tecnologiesconvencionals, incloent els sistemes experts. Quan s’implementen mitjançant unhardware (xarxes neuronals en xips VLSI), presenten una alta tolerància a errorsdel sistema i proporcionen un grau de paral·lelisme en el procés de dades moltgran. Això farà possible insertar xarxes neuronals de baix cost en sistemesexistents i realment desenvolupats.Hi h a molts tipus diferents de xarxes neuronals, cada una de les quals té unaaplicació particular més apropiada.Tot seguit trobarem algun dels exemples d’aplicació:

Biologia:

- Aprendre més sobre el cervell i altre sistemes- Obtenció de models de retina.

Empresa:

- Avaluació de probabilitat de formacions geològiques i petrolíferes.- Identificació de candidats per a oposicions específiques.- Explotació de bases de dades.- Optimització de places i horaris en línies de vol.- Reconeixement de caràcters escrits.- Analitzar tendències i patrons.- Previsió del temps.

Finances:

- Previsió de l’evolució dels preus.- Valoració del risc dels crèdits.- Identificació de falsificacions.- Interpretació de firmes.

Page 15: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

12

Manufacturació

- Robots automatitzats i sistemes de control.- Control de producció en línies de procés.- Inspecció de firmes.

Medicina

- Analitzadors de la parla per a l’ajuda a l’audició de sords profunds.- Diagnòstics i tractament a partir de símptomes i/o de dades analítiques.- Predicció de les reaccions adverses als medicaments.- Enteniment de la causa dels atacs epilèptics.- Lectors de raig X.

Militars

- Classificació dels senyals militars.- Creació d’armes intel·ligents.- Optimització de l’ús de recursos escassos- Reconeixement i seguiment en tir al blan.

Podem buscar fets en aquesta llista d0aplicacions, la majoria d’aquestsconsisteixen en realitzar un reconeixement de patrons: buscar un patró en unasèrie d’exemples, classificar patrons, completar un senyal a partir de valorsparcials o reconstruir el patró correcte partint d’un de distorsionat. Molts delsexemples han de treballar amb dades sensorials i de percepció (senyals visuals,auditives i altres) i altres realitzen filtrat o mapeig de senyals d’entrada. Engeneral, els exemples mostrats indiquen que són més característics de lespersones que dels ordinadors convencionals.

A continuació es descriuen amb més detall aquelles àrees d’aplicació mésimportants per a les quals les computadores neuronals, en general, s’estanutilitzant o poden ser utilitzades i els problemes en cada una d’elles.

1.2.3.3 Reconeixement de patrons

El terme reconeixement de patrons originalment es referia a la detecció de formessimples, tals com caràcters escrits a ma, mapes del temps i espectres delllenguatge. Amb tot, un objectiu més ambiciós ha estat al llarg de tot el procésimplementar la percepció artificial; és a dir, imitar les fusions dels sistemessensorials biològics en la seva forma més completa.

Els primers pasos, com sempre, van ser fàcils, però aviat es va veure que larealització dels sistemes biològics era molt difícil de portar a terme. Ni tant solsl’altra capacitat de computació a la que s’arriba per circuits de computacióparal·lela no resol els problemes.

En l’anàlisis d’imatges existeixen requeriments que són molt difícils de portar aterme:

Page 16: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

13

a) Invariabilitat en la detecció en respecte a la translació, rotació, escala,perspectiva, oclusió parcial, casaments lliure dels objectes, especialment encondicions d’il·luminació variable.

b) Relació d’observacions d’alguns contextos a nivells diferents d’abstracció, enordre a distingir els esdeveniments més selectivament.

Cal destacar que els animals són capaços de prestar atenció a objectes individualsen una escena, per cada un dels quals la invariabilitat de percepció ha de servàlida separadament.

Hi havia una altra cosa ignorada, que és que inclòs el sistema sensorial mésdesenvolupat no treballa de manera autònoma: la percepció sensorial està sempremolt lligada amb el procés contigu global. Per a la replicació de les funcionssensorials, no és suficient en imitar el sistema sensorial, sinó que s’ha de replicartot el cervell amb totes les seves capacitats de pensament, i precisar la capacitatde reconeixement per l’alt grau d’aprenentatge.

No seria raonable esperar la solució de tots aquests problemes abans de procedir al’obtenció de les possibles aplicacions. En enginyeria, els problemes sóngeneralment simplificats. Prenen com a exemple la locomoció: és difícilimplementar el moviment coordinat dels membres, però un mètode més directeés aplicar rodes i modificar el terreny construint carreteres. Igualment, existeixenmoltes aplicacions per a les quals solucions artificials, no naturals, poden donarresultats millors.

El desenvolupament del reconeixement de patrons (especialment en visiócomputeritzada) va prendre aquest camí a mitjans dels anys 60. Cal destacar quel’agudesa espacial de la visió dels mamífers varia per un factor de vint quan escomparen les àrees jovials i perifèriques de la retina; a més, el globus de l’ull estàen continu moviment espasmòdic.

Tot i que, mitjançant una delicada reconstrucció de la informació visual, es fapossible una percepció clara i ferma. No ha estat aconseguit res comparable, nitant sols provat, en visió computeritzada, on el camp d’imatge, primerament, estàseparat per un conjunt regular d’elements de pintura, els quals estan mesurats iagrupats en àrees homogènies (segmentades), els seus contorns són analitzats i lesseves realitzacions topològiques i geomètriques són descrits per gramàtiquesd’imatge. No obstant, és evident que és possible arribar a certs nivells deinvariabilitat amb respecte als senyals d’imatge si simplement tenim en compteles relacions topològiques.

Aquests mètodes, no obstant, tenen molt poca cosa en comú amb els principisd’operació de les funcions sensorials biològiques, i per tant queda obert elproblema bàsic de la percepció en computació neuronal. Si en l’actualitat elsmètodes de xarxes neuronals artificials s’estan desenvolupant per al mateixpropòsit, serà necessari desenvolupar mètode de reconeixement de patrons per a

Page 17: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

14

que els circuits aprenguin per si mateixos les funcions i caràcters elementals iarribin a fer-se autoorganitzats sense fer anar cap tipus de programació heurística.

Les àrees d’aplicació més importants del reconeixement de patrons neuronalserien les mateixes que aquelles per a les quals els mètodes convencionals iheurístics han estat desenvolupats durant els passats 30 anys:

a) Sensació remota.b) Anàlisi d’imatges mèdiques.c) Visió en computadors industrials.d) Elements de procés de les entrades per a computadors.

Per a implementar aquestes tasques, existeixen encara certs problemes bàsicspendents de solució; per exemple, aquells referents a les propietats intrínsequesde la informació d’entrada, tals com:

a) Els patrons primitius més naturals.b) Informació visual que descriuen les curvatures de les superfíciesc) Textures.d) Invariants fonològiques en la parla.

Per altra banda, la integració d’aquestes funcions en un sistema de coneixementd’alt nivell és un objectiu la complexitat del qual és d’un ordre de magnitudmajor del que generalment es creu . Per tant, sembla que existeixen moltesaplicacions potencials, però encara existeixen problemes no resolts. No semblaraonable continuar el desenvolupament de mètodes heurístics sofisticats: s’estimaque sobre 30.000 articles i uns 200 llibres de text s’han escrit ja sobre tècniquesde reconeixement de patrons i visió artificial en els últims trenta anys, i si lessolucions, s’haguessin pogut aconseguir per aquest camí, ja haurien estat visibles.

1.2.3.4. Característiques de les xarxes neuronals

Existeixen quatre aspectes que caracteritzen una xarxa neuronal: la sevatopologia, el mecanisme d’aprenentatge, tipus d’associació realitzada entre lainformació d’entrada i de sortida, i per últim, la forma de representaciód’aquestes informacions. En aquest apartat es descriuen aquestes característiques.

Topologia de les xarxes neuronals

Quan es realitza una classificació de les xarxes neuronals de les xarxes en temestopològics, es solen distingir entre:

- Xarxa monocapa, amb una sola capa de neurones.- Xarxes multicapa, amb múltiples capes.

Xarxes monocapa

En les xarxes monocapa s’estableixen dos tipus de connexions:

Page 18: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

15

- Laterals- Autorecurrents (sortida d’una neurona connectada en la seva pròpia entrada).

Les xarxes monocapa s’utilitzen típicament en tasques relacionades en el que esconeix com a autoassociació; per exemple per a regenerar informacions d’entradaque es presenten a la xarxa incompletes o distorsionades.

Xarxes multicapa

Dins d’aquest grup en podem distingir dos tipus:

- Xarxes feedforward o xarxes amb connexions cap endavant.- Xarxes feedforward/feedback o xarxes que disposen de connexions tant cap

endavant com cap enrera.

Xarxes feedforward

Tots els senyals neuronals es propaguen cap endavant a través de les capes de laxarxa. No existeixen connexions cap enrera i normalment tampoc autorecurrentsno laterals. L’aplicació més típica d’aquestes tipus de xarxa és el reconeixement oclassificació de patrons.

Xarxes feedforward/feedback

En aquest tipus de xarxes circula informació tant cap endavant com cap enrera.

En general solen ser bicapa, estructura particularment adequada per a realitzaruna associació d’una informació o patró d’entrada (en la primera capa) amb altrainformació o patró de sortida en la segona capa, encara que també poden serutilitzades per a la classificació de patrons.També en aquest grup de xarxes existeixen algunes que tenen connexions lateralsi/o autorrecurrents.

1.2.3.5. Aprenentatge

L’aprenentatge és el procés pel qual una xarxa neuronal modifica els seus pesosen resposta a un informació d’entrada. Els canvis que es produeixen durant elprocés d’aprenentatge es redueixen a la destrucció, modificació i creació deconnexions entre les neurones. En els sistemes biològics existeix una continuacreació i destrucció de connexions. En els models de xarxes neuronals artificials,la creació d’una nova connexió implica que el pes de la mateixa passa a tenir unvalor diferent de zero. De la mateixa forma, una connexió, una connexió esdestrueix quan el seu pes passa a ser zero.

Page 19: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

16

Durant el procés d’aprenentatge, els pesos de les connexions de la xarxa pateixenmodificacions, per tant es pot afirmar que aquest procés ha acabat (la xarxa haaprès) quan els valors dels pesos resten intactes ( 0/ ?dtdwt ).

Un aspecte important respecte a l’aprenentatge en les xarxes neuronals ésconèixer com es modifiquen els valors dels pesos; és a dir, quins són els criterisque segueixen per a canviar el valor assignat a les connexions quan es pretén quela xarxa aprengui una nova informació.

Aquests criteris determinen això que es coneix com la regla d’aprenentatge de laxarxa. De forma genera, es solen considerar dos tipus de regles:

- Aprenentatge supervisat.- Aprenentatge no supervisat.

Aprenentatge supervisat

Es caracteritza per que el procés d’aprenentatge es realitza mitjançant unentrenament controlat per un agent extern (supervisor) que determina la respostaque hauria de generar la xarxa a partir d’una determinada entrada. El supervisorcomprova la sortida de la xarxa i en el cas de que aquesta no coincideixi amb ladesitjada, es procedirà a modificar els pesos de les connexions, amb la fid’aconseguir que la sortida obtinguda s’aproximi a la desitjada.

En aquest tipus d’aprenentatge s’acostumen a considerar, a la vegada, tres formesde portar-ho a terme que donen lloc als següents aprenentatges supervisats:

Aprenentatge per correcció d’error

Consisteix a ajustar els pesos de les connexions de la xarxa en funció de ladiferència entre els valors desitjats i els obtinguts en la sortida de la xarxa; és adir, en funció del error comès en la sortida.

Aprenentatge per reforç

Es basa en la idea de no disposar un exemple complert del comportament desitjat;és a dir, de no indicar durant l’entrenament exactament la sortida que es desitjaque proporcioni la xarxa davant una determinada entrada.

Aprenentatge estocàstic

Consisteix bàsicament en realitzar canvis aleatoris en els valors dels pesos de lesconnexions de la xarxa i avaluar el seu efecte a partir de l’objectiu desitjat i dedistribucions de probabilitat.

Page 20: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

17

Aprenentatge no supervisat

Aquestes xarxes no requereixen influència externa per a ajustar els pesos de lesconnexions entre les seves neurones. La xarxa no rep informació per part del’entorn que li indiqui si la sortida generada en resposta a una determinadaentrada és o no correcta; per això, es sol dir que aquestes xarxes són capacess’autoorganitzar-se.

Tenint en compte els algorismes d’aprenentatge no supervisat, en general es solenconsiderar dos tipus:

Aprenentatge hebbià:

Consisteix bàsicament en l’ajut dels pesos de les connexions d’acord amb lacorrelació dels valors d’activació (sortides) de les dues neurones connectades.

Aprenentatge competitiu i cooperatiu

Les neurones competeixen les unes amb les altres amb el propòsit de portar aterme una tasca donada. Es pretén que quan es presenti a la xarxa certainformació d’entrada, tan sols una de les neurones de sortida de la xarxa, o unaper cert grup de neurones, s’activi. Per tant les neurones competeixen per activar-se, i queda finalment una, o una per grup, com a neurona guanyadora, i d’aquestsmanera queda anul·lada la resta, que són forçades a tornar als seus valors deresposta mínims.

Un altre criteri es pot utilitzar per a diferenciar les regles d’aprenentatge es basaen considerar si la xarxa pot aprendre durant el seu funcionament habitual o sil’aprenentatge suposa la desconnexió de la xarxa. Segons aquest criteri podemdistingir entre.

- Aprenentatge ON LINE- Aprenentatge OF LINE

Aprenentatge ON LINE

No es distingeix entre fase d’entrenament i d’operació, de tal forma que els pesosvarien dinàmicament sempre que es presenti una nova informació al sistema. Enaquest tipus de xarxes, degut al caràcter dinàmic que tenen, l’estudi del’estabilitat és un aspecte fonamental d’estudi.

Aprenentatge OFF LINE

Es distingeix entra una fase d’aprenentatge o entrenament i una fase d’operació ofuncionament, existint un conjunt de dades d’entrenament i un conjunt de dades

Page 21: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

18

de test o prova que seran utilitzats en la corresponent fase. Els pesos de lesconnexions resten fixes desprès que finalitza l’etapa d’entrenament de la xarxa.Degut precisament al seu caràcter estàtic, aquests sistemes no presentenproblemes d’estabilitat en el seu funcionament.

1.2.3.6 Tipus d’associació entre les informacionsd’entrada i sortida

Les xarxes neuronals són sistemes que emmagatzemen certa informació apresa:aquesta informació apresa es registra de forma distribuïda en els pesos associats ales connexions entre neurones. Per tant, pot imaginar-se una xarxa com un certtipus de memòria que emmagatzema unes dades de forma estable, dades que esgravaran en aquesta memòria com a conseqüència de l’aprenentatge de la xarxa ique podran ser llegits a la sortida com a resposta a certa informació d’entrada,comportant-se llavors la xarxa com allò que habitualment es coneix com amemòria associativa; és a dir, quan s’aplica un estímul la xarxa respon amb unasortida associada a aquesta informació d’entrada.

Existeixen dues formes primàries de realitzar aquesta associació:

- Heteroassociació: la xarxa aprèn parelles de dades, de tal forma que quan espresenta certa informació d’entrada, haurà de respondre generant lacorresponent sortida associada.

- Autoassociació: la xarxa aprèn certes informacions de tal forma que quan seli presenti una informació d’entrada realitzarà una autocorrelació, responentamb una de les dades emmagatzemades, la que s’assembla més a l’entrada.

- Xarxes heteroassociatives.

- Xarxes autoassociatives.

Xarxes heteroassociatives

Xarxa que computa certa funció, que en la majoria dels casos no podrà expressar-se analíticament, entre un conjunt d’entrades i un conjunt de sortides,corresponent a cada possible entrada una determinada sortida.

Xarxes autoassociatives

Té la principal missió de reconstruir una determinada informació d’entrada que espresenti incompleta o distorsionada (li associa la dada emmagatzemada que mésse li assembla).

Page 22: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

19

Representació de la informació d’entrada i sortida

Les xarxes neuronals poden classificar-se també en funció de la forma en que esrepresenten les informacions d’entrada i les respostes o dades de sortida.

Poden diferenciar-se entre:

- Xarxes continues.- Xarxes discretes.- Xarxes híbrides.

Xarxes contínues

Entrada i sortida: analògica, és a dir, valors reals continus, normalment estarannormalitzats i el seu valor absolut serà absolut serà menor que la unitat.

Funcions d’activació de les neurones: continues, del tipus lineal o sigmoidal.Xarxes discretes

Entrada i sortida: binària.

Funcions d’activació de les neurones: tipus esglaó.

Xarxes híbrides

Entrada analògica.

Sortida: discreta.

Característiques de la Xarxa Fuzzy Artmap

Model de xarxa: FUZZY ARTMAP

Topologia: ON/OFF LINE: OFF LINE

Aprenentatge SUPERVISAT/NO SUPERVISAT: SUPERVISAT

REGLA d’aprenentatge:COMPETITIU (RESSONÀNCIA ADAPTATIVA)

Associació AUTO/HETERO: HETEROASSOCIATIVA

Informació d’entrada i sortida: ANALÒGICA

Les xarxes de ressonància adaptativa

Una de les característiques de la memòria humana consisteix en la seva habilitatper aprendre nous conceptes sense necessitat per a això d’oblidar els apresos en el

Page 23: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

20

passat. Seria desitjable que aquesta mateixa capacitat es pogués aconseguir en lesxarxes neuronals.Però moltes d’aquestes xarxes tenen tendència a oblidar informacions passades entractar d’ensenyar-los informacions noves.

Quan es desenvolupa una xarxa per realitzar una tasca de classificació de patrons,es sol procedir reunint un conjunt d’exemplars que seran utilitzats durant la fased’aprenentatge o entrenament de la xarxa. Durant aquesta etapa, la informació ésregistrada en el sistema mitjançant l’ajust dels valors dels pesos de les connexionsentre neurones. Un cop conclòs l’aprenentatge, la xarxa està llesta per a funcionari no es permet cap canvi addicional dels pesos.

Aquest procediment és factible si el problema que es pretén resoldre per la xarxaestà ben limitat i pot definir-se un adequat conjunt d’informació d’entrada quepermetin entrenar a la xarxa per a resoldre el problema. Tot i això , en moltessituacions reals els problemes a resoldre no tenen uns límits clars.

Com a exemple, imaginen que es pretén entrenar una xarxa (per exemple,backpropagation) per a reconèixer les siluetes de cert tipus d’avió. Es podrienreunir les imatges corresponents i utilitzar-les per a entrenar la xarxa. Després, laxarxa entraria en funcionament i no es permetria cap modificació dels pesos. Sien un futur es dissenya un altre avió del mateix tipus i es desitja que la xarxareconegui la seva silueta, s’hauria de reentrenar aquesta xarxa utilitzant la novasilueta, però també totes les que es van fer servir en l’aprenentatge anterior. Sis’entrenés la xarxa només la xarxa només amb la nova silueta, podria passar quela xarxa aprengués aquesta informació, però oblidant l’apressa prèviament.

El que hem intentat demostrar amb aquest exemple és el que Sr. Grossbergdenomina el dilema de la estabilitat i plasticitat de l’aprenentatge. Aquest dilemaplanteja els següents interrogants:

- Com una xarxa podria aprendre nous patrons (plasticitat de l’aprenentatge).- Com una xarxa podria retenir els patrons prèviament apresos (estabilitat del

aprenentatge).

Aconseguir una xarxa que pugui donar a un d’aquests interrogants és senzill. Noobstant, no ho és si es pretén dissenyar-la per a que els solucioni els dos.

En resposta a aquest dilema, Grossberg, Carpenter i altres col·laboradors vandesenvolupar la denominada Teoria de la ressonància adaptativa (AdaptativeResónance Theory: ART).Aquesta teoria s’aplica a sistemes competitius (xarxes d’aprenentatge competitiu)en els quals quan es presenta certa informació d’entrada tant sols una de lesneurones de sortida de la xarxa (o una per cert grup de neurones) s’activa arribantal seu valor de resposta màxim després de competir les altres. Aquesta neuronarep el nom de guanyadora (winner talk-all unit).

El que es pretén és categoritzar les dades que s’introdueixen a la xarxa. Lesinformacions similars són classificades formant part de la mateixa categoria, i pertant, han d’activar la mateixa neurona de sortida, la neurona guanyadora. Les

Page 24: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

21

classes o categories han de ser creades per la pròpia xarxa, donat que es tractad’un aprenentatge no supervisat, a través de les correlacions entre les dadesd’entrada.

Per a solucionar el dilema de la plasticitat i l’estabilitat, el model ART proposaafegir a les xarxes un mecanisme de realimentació entre les neuronescompetitives de la capa de sortida de la xarxa i la capa d’entrada. Aquestmecanisme facilita l’aprenentatge de nova informació sense destruir-la jaemmagatzemada.

La teoria de la ressonància adaptativa es basa en la idea de fer ressonar lainformació d’entrada amb els representants o prototipus de les categories quereconeix la xarxa. Si entra en ressonància amb algun, és suficientment similar, laxarxa considera que pertany a característiques de dada presentada. Quan noressona amb cap, no s’assembla a cap dels existents, recordats per la xarxa finsaquest moment, la xarxa s’encarrega de crear una nova categoria amb la dadad’entrada com a prototipus de la mateixa.

Com a resultat d’aquest enfocament, els autors mencionats van presentant duesxarxes neuronals especialment adequades per a tasques de classificació depatrons. Aquestes xarxes solen denominar-se ART 1 (o ART) i ART 2. Les dueses diferencien en la naturalesa de la informació que es presenta a l’entrada. Laxarxa ART 1 treballa amb vectors d’entrada binaris, mentre que ART 2 és capaçde processar informacions continues o analògiques.

1.2.3.7 Funcionament d’una xarxa ART

El funcionament d’una xarxa ART pot descriure’s de forma simplificada a travésde la següent seqüència de passos:

1) Es presenta una informació (vector) d’entrada de la xarxa.2) Cada neurona de la capa d’entrada rep el valor del component

corresponent del vector i ho envia a totes les neurones de la capa desortida a través de les connexions corresponents.

3) Cada neurona de la capa de sortida competeix amb les altres d’aquestacapa fins que només una es manté activa. Les connexions laterals sónles que permeten realitzar aquesta competició.Desprès de cert nombre d’iteracions, s’arriba a una situaciód’estabilitat en la que una de les neurones resulta guanyadora,generant una sortida de valor 1, mentre que en les demés neuronesla sortida és 0. El factor a tenir en compte per saber quina és laneurona guanyadora és l’entrada que rep cada neurona a través de lesconnexions feedforward provenint de la capa d’entrada.

4) La neurona guanyadora envia la sortida a través de les connexions capenrera. Cada neurona i –èssima de la capa d’entrada el valor ?ijV

5) Es compara la informació d’entrada amb la informació rebuda en lacapa d’entrada des de la sortida a través de les connexions cap enrera.

Page 25: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

22

6) Es compara la relació de semblances amb un paràmetre de vigilància.Aquest valor serà fixat per l’usuari de 0 a 1, quan mes gran siguiaquest valor, s’està demanant al sistema que discrimini amb majorprecisió, per exemple; si ?=1 significa que a cada classe només hipoden pertànyer patrons exactament iguals.

Aprenentatge

On line, per això no es distingeix entre etapa d’entrenament i de funcionament.Els pesos varien durant el funcionament de la xarxa quan s’aplica una informaciód’entrada a la mateixa.

No supervisat de tipus competitiu, les neurones de la capa de sortidacompeteixen per activar-se i tant sols una d’elles resta activa davant unadeterminada entrada a la xarxa. Els pesos de les connexions s’ajusten en funcióde la neurona que hagi resultat guanyadora.

Xarxa Fuzzy Artmap

Són una classe de xarxes neuronals que implementen un aprenentatge supervisat iuna posterior classificació de vectors multidimensionals d’entrada en una sèriecategories de sortida.

Presenta múltiples avantatges que fa molt interessant per a l’aplicació amb‘nassos electrònics’, destacarem les següents:

- Aprenentatge ràpid (amb poca càrrega computacional) de les mesures que espresenten en l’entrenament, lo que permet programar l’algorisme endispositius programables de poc cost, implicar validacions creuades d’ordre 1i provar amb diferents combinacions de paràmetres.

- Aprenentatge amb un conjunt reduït de mesures d’entrenament, una cosa moltinteressant en qualsevol aplicació experimental en la que sigui costós laobtenció de conjunts de mesura extensos. La xarxa presenta una habilitatparticular per aprendre ràpidament fets singulars que apareixen molt poquesvegades en el conjunt d’entrenament. Per tant en aquest conjunt no ésnecessari que hi hagi el mateix nombre de mesures de cada classe per a quefuncioni correctament.

- Aprenentatge continu de noves categories sense oblidar lo que s’ha aprèsabans, una cosa molt útil per a adaptar-se a derives produïdes per sensors.

- En comparació a altres tipus de xarxes neuronals, Fuzzy Artmap determinaautomàticament les neurones de la capa oculta. A mes maximitza el poder degeneralització aprenent al 100% el conjunt d’entrenament.

- Un cop entrenada és possible extreure regles de classificació a partir delspesos obtinguts després del període d’entrenament, el que pot donar llumsobre els processos interns i com influeixen en la categoria de resultats.

- La implementació pràctica de la xarxa Fuzzy Artmap presenta un problemaque s’ha de tractar amb molt de compte: La xarxa aprèn el 100% de les

Page 26: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

23

mesures del conjunt d’entrenament sacrificant el mínim possible lageneralització. Però la presència d’”outliers” o mesures errònies en el conjuntd’entrenament pot requerir in increment del valor de vigilància excessiu, aixòperjudicarà seriosament la capacitat de generalitzar de la xarxa. Aquestproblema és una de les raons per les que aquest tipus d’aplicacions s’hanutilitzat en nassos electrònics, ja que en aquest tipus d’aplicacions éssummament difícil identificar mesures errònies donada la baixa repetitivitatdels senyals dels sensors.

RESUMINT

La xarxa Fuzzy Artmap és una xarxa de classificació amb aprenentatge supervisaten una fase d’entrenament de la xarxa necessita que se li subministro un conjuntde mesures. Cada mesura ha de contenir un vector d’entrada, que detalla elsparàmetres mesurats en cada experiència i un vector de sortida que codifica lacategoria que se li ha d’assignar. Posteriorment en la fase d’avaluació tant sols essubministra el vector d’entrada i la xarxa classifica aquesta mesura seguint elscriteris que après a la fase d’entrenament.

1.2.3.8 Algorisme

La xarxa Fuzzy Artmap està formada per dues xarxes Fuzzy ART connectadesentre si per un vector de relacions denominat “mapfield”. A una de les duesxarxes (la que denominarem A) li arriben, en la fase d’entrenament els vectorsque codifiquen la categoria correcta de cada mesura del conjunt d’entrenament.

Inicialment a la xarxa A el vector de vigilància és. En la xarxa B es sol donat unvalor igual a la unitat, ja que mesures que han de ser classificades conjuntamentenviaran a la xarxa B codificacions idèntiques. A més qualsevol vector decodificació diferent, per semblant que sigui la resta, ha de ser detectat i had’activar una neurona de sortida diferent en la xarxa B.

Cada cop que es subministra una mesura d’entrenament, la xarxa A activa unnode i la xarxa n’activa un altre. El mapa que les uneix aprèn a relacionar elsnodes activats.D’aquesta manera, a cada nou node que s’activa a la xarxa A se li associa un nodeen B. Hem de destacar que els nodes de B normalment seran imatge de diversosnodes de A. Cada categoria té varies mesures mentre que cada una de lescategories en A tant

Page 27: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

24

1.3 Processament del senyal

1.3.1 Objectius

L’objectiu d’aquest estudi és dissenyar les característiques del filtre i de la xarxaneuronal per tal que el sistema pugui ser factible en un sistema econòmic.

1.3.2 Metodologia

Ara veurem un petit diagrama de flux del software utilitzat:

Figura2 - Diagrama de flux del programa

Recordem que l’eina utilitzada per fer l’estudi és el Matlab.

En un principi tractarem els tres sons, telèfon, despertador i alarma. Ja s’ha dit enla memòria descriptiva que en el sistema real no s’utilitzaran els tres filtres, ja queno els pot proporcionar computacionalment. Però en l’estudi següent esdemostrarà perquè no es factible en el nostre sistema provar de discriminar eldespertador, el alarma i el telèfon.

Page 28: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

25

El mètode utilitzat esmentats és el següent:

Tenim uns sons enregistrats amb l’ordinador que són filtrats i generen els dostipus d’energia corresponent a cada filtre, energia1 (energia del filtre deldespertador) i energia2 (energia del filter del alarma).

Aquest bucle veiem que s’executa 20 vegades ja que tinc 10 gravacions deldespertador i 10 del alarma

Un cop hem obtingut aquesta matriu tenim les energies dels dos filtres i japodem començar a entrenar la xarxa.

En el programa neuro.m (en l’annex punt 3), el que s’executa és el bucle leaveone out (validació creuada d’ordre 1). Aquest consisteix en que de les n (en elnostre cas n és 30 ja que tenim 10 sons del despertador, 10 del alarma i 10 delbuit) files n’extrau una i amb les n-1 restants entrena el sistema amb la funciófzmapnok, i evalua si reconeix la mesura extreta amb la funció fzmaptsexp3.D’aquesta manera, després de recórrer les n files sabrem quants encerts i quantserrors.

En un principi es comença amb una sèrie de paràmetres inicials. Com podemveure, en la funció bucle.m hem automatitzat totes les funcions del sistema. Lipassem com a paràmetre d’entrada el número de mostres del sistema i la funcióbucle.m va recorrent tot el programa amb uns determinats amples de banda delsfiltres, quan acaba i ens dóna el número d’encerts variem els amples de bandad’aquests i tornem a executar el programa. Així fins que el número d’encertssigui el desitjat. S’ha estimat que un número d’encerts prou bo és el 90%, ja queper molt que exigim fiabilitat, el sistema real en si ja té algunes limitacions, comara el conversor A/D, en el qual perdem els 2 bits de menor pes.

1.3.3 Tractament del so

1.3.3.1 Enregistrament dels sons

En un principi, els criteris que s’han seguit per els enregistraments han estat:

1.- La paraula digital del conversor analògic-digital és de 8 bits.2.- La freqüència de mostreig de 22kHz.3.- El radi d’accció es de 10 metres, incloent-hi les parets que

d’alguna manera dificulten la interacció emisor receptor.

S’han realitzat 10 mesures de cada so, i amb els enregistraments s’ha tingut encompte la mateixa amplificació de la línia d’entrada del micròfon.

Els espectres d’energies dels sons enregistrats els podem veure en l’annex.

Page 29: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

26

Els resultats d’aquests han estat bons. Com veurem posteriorment als gràfics de

les energies i el nombre d’encerts, hem aconseguit una fiabilitat del

954038

??mostresencerts

Fiabilitat %

Bé, el resultat és molt bo però anem a veure què significa mostrejar a una

freqüència de 22 kHz. Això significa que cada s?4.4510*22

13 ? haurem d’haver

realitzat totes les operacions i per a un sistema econòmic basat en unmicrocontrolador de 20MHz i que no té multiplicacions per hardware siginificaque :

Cada cicle d’instrucció són 4 cicles de rellotge, en 45.5?s tenim temps de fer

nsinstruccioHzrellotgedecicles

Hz227

10*22*410*20

3

6

?

Doncs si cada multiplicació ens costa 36 cicles ? 227/36 = 6 multiplicacions.Tenint en compte que en un principi el número de mostres és de 50 i tenim tresfiltres, 50*3= 150 multiplicacions, per tant no és viable aquesta freqüència demostreig.

Baixant la freqüència de mostreig fins la a 11kHz, els resultats són també proubons, com podrem observar també als gràfics, però baixar la freqüència demostreig fins 11kHz sense variar el número de mostres del filtre ens dóna lloc aque si en 22kHz podiem fer 6 multiplicacions, en 11kHz en podem fer 12, id’aquí a poder-ne fer 150 hi ha un abisme.

Però no solament variant la freqüència de mostreig podem arribar a fer 150multiplicacions en el període de mostreig. També s’ha de baixar la qualitat delfiltre disminuint el número de mostres.

Però fixant-nos en els espectres d’energia del senyal com per exemple aquest:

Alarma

Despertador

Telèfon

Buit

00.5

11.5

2

x 105

0

1

2

3

x 104

0

1000

2000

3000

4000

Page 30: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

27

Figura 3 – Energies filtres

Resolució: 3.0437e-004

La resolució és el paràmetre que ens ha ajudat a decidir-nos per l’ample de bandadel filtres dissenyats. Per trobar aquest paràmetre i com podem veure en l’annexpunt2, utilitzem la següent fórmula (posant l’exemple del timbre):

Calculem la suma de les energies de les 10 mostres del timbre i ho normalitzemdividint-ho entre 10:

centroide_timb=sum(energies(1:10,:))/10;

Posteriorment calcularem la distància des de la suma d’energies fins cada puntd’energia (veure figura 3). Aquesta resta serà acumulativa i l’anomenaremintratimbre.

Podem veure que hi ha un bucle dins d’un altre. Això és perquè és la contribucióde cada un del sons (timbre, telèfon i despertador) a l’energia del timbre.

for i=1:10

for j=1:3

aux=(energies(i,j)-centroide_timb(j))^2;

intratimbre=aux + intratimbre;

end;

end;

intratimbre=intratimbre/10;

La intraclase serà, havent calculat la intratimbre, telèfon i despertador, lasuma de tots normalitzada a 3.

intraclase=(intratimbre + intratelf + intradesp)/3;

d=(centroide_desp-centroide_timb);

Consecutivament, la e i f seran igual a les respectives diferencies de les duesenergies restants.

interclase=sum(sqrt(sum(d.^2))+sqrt(sum(e.^2))+sqrt(sum(f.^2)))/3;

Page 31: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

28

La resolució serà finalment, el quocient entre la interclase i la intraclase.

resolucio=interclase/intraclase

En la figura 3 podem observar la contribució entre les tres energies i el buit a unafreqüència de mostreig de 22kHz i número de mostres 50. Aquest està filtrat ambels següents amples de banda: [0.38 0.46] despertador, [0.07 0.09] timbre i [0.090.12] telèfon.

Veiem que és el filtre del telèfon el que es solapa amb l’energia del buit. Enaquest moments ens plantegem si el motiu perquè el sistema requereix tantaqualitat és l’energia del telèfon que està molt a prop del buit.Aquest és un punt important per a l’evolució del disseny del sistema.A partir d’aquí es comença a dissenyar el sistema amb unes altrescaracterístiques:

- Tenim 2 filtres FIR (despertador i alarma).- Freqüència de mostreig 4kHz (8 kHz però decimarem el senyal per 2, ja que

amb la targeta de so sound blaster la freqüència mínima a la que es potmostrejar és de 8kHz).

- Nº de mostres del filtre: 4 mostres.

1.3.3.2 Convolució FIR

Els filtres digitals que s’utilitzen normalment en la major partd’aplicacions són els filtres recursius. Els filtres FIR s’utilitzen, sobretot, enaquells casos en que interessa tenir una fase que variï linealment amb lafreqüència. Això es deu al fet que es pot aconseguir fàcilment aquesta propietaten aquests tipus de filtres.

Tot seguit, si observem els espectres de la fft adjunts a l’annex punt 1 decadascun dels sons podem veure quina és la freqüència fonamental (la podemdefinir com la freqüència que aporta la major part de potència de l’energia total).

Tenint en compte que els espectres observats, son simètrics a partir de lafreqüència 0.5, en els gràfics següents veurem la contribució d’unes energiesamb les altres:

Amb l’espectre de la figura 3 veiem que els amples de banda que tenen mésresolució, és a dir, que contribueixen menys un so de l’altre, són els de:

En el cas del despertador es mou dintre del rang de [0.38 0.46]En el cas del alarma es mou dintre del rang de [0.07 0.09]

A continuació veurem número d’encerts de la xarxa neuronal en relació e lafreqüència de mostreig:

Page 32: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

29

El resultat amb una freqüència de mostreig de 22kHz:

Número de sons encertats = 38

Número de sons no encertats = 2

Sense classificar = 0

El resultat amb una freqüència de mostreig de 11kHz:

Número de sons encertats = 36

Número de sons no encertats = 4

Sense classificar = 0

El resultat amb una freqüència de mostreig de 8kHz:

Número de sons encertats = 19

Número de sons no encertats = 21

Sense classificar = 0

Amb una freqüència de 22kHz tenim més encert, concretament 38 però s’hadesestimat ja que es considera que 22kHz és una freqüència massa gran per a unsistema que hagi de realitzar moltes operacions amb el temps de MOSTREIGF/1

Amb la freqüència de 11kHz tenim una precisió del 90%, ja que de 40enregistraments avaluades per la xarxa neuronal, se’n han reconegut 36.D’aquests quatre errors, s’ha de tenir en compte que són quatre sons que han estatenregistrats a una distància considerable (concretament 8 metres i amb parets pelmig de la trajectòria entre l’ona creada pel telèfon/alarma/despertador i finsarribar al micròfon del PC on ha estat enregistrat.

Això indirectament crea un altra cota a tenir en compte en el sistema: el radid’acció del sistema és de 12 metres.He elegit 8 metres, ja que segons la distribució de les habitacions i el recinte onhe efectuat els enregistraments m’ha limitat a 12 metres. Però tampoc es potaugmentar excessivament el radi d’acció ja que, la potència de senyal que desprènqualsevol dels tres sons estudiats no pot superar aquesta barrera dels 12 metresper dos motius:

1. Per la distribució del recinte que hem utilitzat per fer l’enregistrament delsenyal

Page 33: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

30

2. Per la capacitat i qualitat del micròfon utilitzat per fer l’enregistrament, jaque per molt que ens allunyéssim del PC, nosaltres potser escoltem el so,però al micròfon li arriba un potència de senyal massa baixa i que no superael seu llindar d’energia.

Resultats obtinguts de la xarxa neuronal

Amb la simulació de la xarxa neuronal amb el Matlab, hem obtingut elsparàmetres que ens classificaran els sons i que hem d’utilitzar, i també hemgenerat els coeficients de Fourier per realitzar les tres convolucions.

El nombre de coeficients de Fourier serà (si el número de mostres per exemple ésde 50) el numero de mostres que desitgem que contingui més (en el nostre cas 50)+ 1. Això es fa per la simetria que existeix en les freqüències discretes, ja qued’aquesta manera li hem dit que volem 50 mostres i ens generarà 51 coeficients,dels quals els 25 primer són simètrics als 25 últims.

Amb els valors dels coeficients de Fourier podem observar que el sistemanecessita més de vuit bits (ja que el valor màxim supera 256), és a dir, fer unesconvolucions de 16 bits x 16 bits, per poder agafar tots els bits generats

Aquestes operacions que s’han de realitzar són d’una magnitud massa gran per ales dimensions del micro. En la següent figura podrem observar les operacionsque s’han de realitzar:

Operacions a realitzar

51 coeficients (16 bits) * 3 FIR’s (despertador, alarma, telèfon) = 153multiplicacions

1.- Utilitzant la sèrie 16 del PIC, tenim una freqüència rellotge de 20MHz

Tenint en compte que un cicle d’instrucció són quatre cicles de rellotge, i que elmicrocontrolador tarda una mitja de 242 cicles d’instrucció en realitzar l’operacióde multiplicació:

ms4.71020

42421536 ?

???

Aquí veiem que fent mutiplicacions de 16 bits, el temps supera al màxim definitper poder agafar la següent mostra que és 90?s.

2.- Utilitzant la sèrie PIC més potent (18F’s), tindrem una freqüència de rellotgede 40MHz, i amb això l’únic que aconseguirem serà que el bucle que hem de feramb 90?s i que amb la sèrie 16 ens costa 7.4ms, amb aquest ens costarà 3.7ms.

Page 34: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

31

Com podem veure, això no ens soluciona el problema.

Per entrenar el sistema en el lloc on s’ha habilitat l’exposició, s’han realitzat 10mesures. Posteriorment s’ha entrenat la xarxa neuronal amb aquest sons i elresultat d’encerts ha estat el següent:

encerts = 23 no encertats = 7 nsnc = 0

1.3.3.3 Preprocessament del senyal

1.3.3.3.1 Introducció

El pas previ a l’aplicació de tècniques de reconeixement de patrons és el ques’anomena preprocessament. La seva importància és capital per a l’èxit d’aquestaaplicació. Ës en aquesta fase on s’extrau la informació més rellevant dels sensorsper processar després la seva resposta. Dintre del preprocessament es podendistingir tres etapes clarament diferenciades, cadascuna de les quals repercuteixd’una manera essencial sobre els resultats que s’obtindrien posteriorment amb elsalgoritmes de reconeixement de patrons.

En una primera etapa s’extrauen els paràmetres que aporten informació rellevantdel conjunt de canvis fisico-químics que experimenten els sensors. Posteriorment,es condicionen aquest resultats en funció dels algoritmes que es vagin aplicant.

Finalment, es poden aplicar diferents tipus de criteris per seleccionar les variablesque aportin més informació i eliminar aquelles que solament aportin soroll.

1.3.3.3.2 Normalització

La normalització ve condicionada per l’adequació dels senyals mostrejats en lasoundblaster, ja que existeixen senyals més forts i més febles. Això implicarà quel’energia obtinguda pels filtres serà molt diferent si el senyal mostrejatcorresponent per exemple al despertador a 1 metre, que al despertador a 6 metres.

En l’estudi amb el Matlab, la normalització es realitzarà d’aquesta manera:

longitud=length(y2); k=sqrt(sum(y2.^2))/longitud;

yn=y2/k;

y2 ? El senyal de la mostra comprés entre –1 i 1

Longitud ? la llargada (en número de mostres)

Page 35: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

32

yn ? Senyal ja normalitzat (aquesta normalització s’ha realitzat ja que en elmoment que es representen els gràfics dels espectres del senyal de l’annex punt1,si no es realitzava una normalització, com ja he dit abans, es veien uns espectresmolt grans i en canvi per als senyals mostrejats a una certa distància quasi no esveien els espectres).

Aquesta normalització s’ha realitzat per poder veure gràficament i amb nitidesaamb el Matlab els harmònics fundamentals del senyals mostrejats, en quan a lesenergies de sortida dels filtres s’ha realitzat com he dit abans una altranormalització:

energia1=sum(filtre1.^2)/longitud;

Filtre 1 ? és l’energia del filtre després d’haver estat filtrat amb les característiques del filtre del despertador (com podem veure en el segon punt de l’annex)

La normalització en el sistema dissenyat real, serà l’adequació dels paràmetresreals del sistema al paràmetres definits als estudis experimentals. En la placad’adquisició de dades, tindrem la següent composició del senyal:

V 4.3

2.4 Marge dinàmic del senyal

mostrejat 0.5

t

És a dir, el senyal que tindré a l’entrada del conversor A/D del microcontroladorestarà entre 4.3 i 0.5, tenint una tensió llindar (que és la tensió continua de lasortida amplificada del micròfon) de 2.4 V.

Tenint en compte que les característiques del meu conversor són aquestes:

N = numero de bits= 8 bits

N2 N = 8 ?256

5V Voltios

Page 36: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

33

El senyal d’entrada al microcontrolador, amb numero decimal variarà des de 0fins a 255, que serà 0 i 5 Volts respectivament.

La placa d’adquisició del senyal ens dóna el marge dinàmic esmentat a la figurasuperior, és a dir, 4V. Per això hauré de configurar dues entrades auxiliars almicrocontrolador, una a 0.5 Volts i l’altra a 4.3 Volts, d’aquesta manera tindrémàxima resolució en l’entrada del conversor A/D.

El valor mostrejat, l’hauré de restar amb 128 decimal, que és la part quecontribueix amb continua, és a dir, quant el conversor estigui capturant el valor enaquest punt groc:

Volts

Temps

Tindrem el valor mostrejat proper a 0, però per al capturador

1.4 Prototipus validació

1.4.1 Solucions considerades

En quan al filtre, s’ha escollit el filtre digital perquè si el sistema es vol utilitzarper discriminar uns altres tipus de sons, sols s’haurà de canviar el codi que si alcontrari, s’hagués escollit un filtre analògic, s’hauria de sintonitzar un altre filtre.

En un primer moment, en quant al dispositiu controlador del sistema es van teniren compte dues opcions: DSP o microntrolador.La primera de les dues opcions, és més car que el microcontrolador, ja que laDSP costa 28 dòlars i el PIC 12 dòlars (com podem veure a les pàgines oficialsd’ambdós micros adjuntades a l’annex). A més a més de voler fer un sistemaeconòmic, permet utilitzar els coneixements adquirits en una assignatura optativacom és el cas de l’assignatura de Introducció als microcontroladors.En el moment que s’ha elegit el microcontrolador sens presenten moltes opcions,però per la utilitat que nosaltres el volem, necessitem un microcontrolador PICbastant potent i els dos més potents són el PIC 16F876 o el PIC18F876.El PIC 16F876 té una freqüència de rellotge de 20MHz i la sèrie 18 treballa a40MHz.

En un principi semblava una elecció fàcil en quan a potència de càlcul, però quanes va començar amb el projecte, no hi havia emulador per a la sèrie 18, i per tantfinalment vam elegir la versió 16, la qual si que teníem emulador.

Page 37: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

34

Fins aquí, hem escollit el tipus de filtre i el sistema de reconeixement. Araentrarem a aprofundir quants de sons filtrarem.

En un principi es volen discriminar 3 tipus de sons: el despertador, l’alarma i eltelèfon. A través dels resultats obtinguts amb l’estudi, s’ha comprovat que el sodel telèfon es discrimina molt poc respecte els altres son, és a dir, que eldespertador i el alarma són dos sons que per tenir l’harmònic fonamental bastantseparat freqüencialment es diferencien bé, però el telèfon al estar molt a prop del’harmònic fonamental del alarma es més difícil de discriminar. Aquesta dificultates fa visible en la necessitat de tenir un filtre FIR de molta qualitat, és a dir, demoltes mostres. Afegir mostres al filtre implica una càrrega computacional queun sistema econòmic com el dissenyat no pot assumir.A partir d’aquí s’ha començat a treballar intentant discriminar dos sons,despertador i alarma.

En quan al número de mostres que utilitzarem en la convolució (multiplicació)dels senyals, és una fita per al disseny optimitzar el número de mostres delsfiltres, ja que com he dit contribueix en la càrrega computacional. A través delscàlculs realitzats en l’estudi s’ha decidit per qüestions com he dit de limitacionsdel sistema, utilitzar filtres de 4 mostres. Ara es faran cinc cèntims del perquè delnúmero de mostres.

Tenim dos filtres, on cada filtre és de 4 mostres. Si cada cicle d’instrucció sónquatre cicles de rellotge, segons ens marca l’arquitectura interna del propimicrocontrolador, això significa que, per fer les operacions del filtre, i tenint encompte que cada multiplicació de 8 bits x 8 bits tarda en executar-se 36 ciclesd’instrucció:

sfiltresmostresHerzos

rellotgedeciclesinstrucciódecilcles?722*)14(*

10*204*36

6 ??

? 72?s < 250? s

En quant a la freqüència de mostreig, és suficientment baixa atenent-nos alscàlcul anterior, ja que el sistema té prou temps per no perdre cap mostra.

Aquesta és la despesa mínima en càlcul computacional, però s’ha de contar altresoperacions a més de les multiplicacions.

Temps d’encolar de les mostres ? 5.4?sTemps en realitzar la convolució (incloent moviments de variables) ? 199?s

El temps total en el que està el microcontrolador fent càlculs és 204.4.

?filtreexecucióTemps

Page 38: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

35

204.4?s < 250? s

Finalment, tenim prou temps per agafar totes les mostres sense perdre’n cap.

1.4.2. Solució adoptada

La solució adoptada està basada en un sistema digital amb un microcontrolador.El que hem fet és mostrejar el so ambient a 4kHz, convolucionar el so mostrejatamb un filtre FIR de 4 mostres i amb l’entrenament al que ha estat sotmèsprèviament el sistema amb una xarxa neuronal Fuzzy Art, classifica quina classede so és el que hem mostrejat.

Si el sistema detecta que el so tractat és un so conegut, aquest donarà un senyal alled corresponent del so i ens avisarà quan hagi mostrejat un dels senyalesmentats.

1.5 Conclusions

S’ha dissenyat un sistema amb el programa Matlab, per discriminar 3 tipus desons. En aquest cas el sistema no es pot implementar amb un PIC, ja que s’haprovat que per discriminar 3 tipus de sons (en el nostres cas alarma, despertador itelèfon), i no era capaç de detectar mínimament els sons sense baixar de 50mostres del filtre i sense baixar la freqüència de mostreig fins a 4kHz. Que nopugui baixar de 50 mostres vol dir que, com que el sistema no té lesmultiplicacions com una operació que es pugui fer pel hardware, sinó que lesmultiplicacions es una rutina de operacions com ara sumes i rotacions, això té uncost computacional, que el sistema no és capaç d’assumir. És a dir, el temps quetardaria en realitzar les operacions si el filtre fos de 50 mostres:

msfiltresrellotgeciclesHz

rellotgeciclesmostresT filtrat 1.13*36*

10*204*)150(6 ?

??

En aquesta operació s’ha tingut en compte que el numero de mostres del filtre ésde 51 mostres (1 més tenint en compte la simetria). Amb una freqüència de

mostreig de 8kHz ? Període= s?12510*81

3 ? . Com veiem, 125?s és molt menor

que 1ms que és el que li costaria al sistema filtrar el senyal.

Posteriorment, s’han anat fent proves com comprovarem en el processament delsenyal. S’ha baixat el número de mostres fins a 4 mostres del filtre. També lafreqüència s’ha disminuït la meitat, fins a 4kHz. El nombre final de filtres quetindrem serà de 2 filtres (despertador i alarma). El filtrat del telèfon s’ha descartatja que per a aquest és necessari un nombre de mostres del filtre de 50, i el sistemano es pot permetre aquesta despesa en càlcul, ja que implica directament als altres

Page 39: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMÒRIA DESCRIPTIVA

36

filtres a l’hora del temps. S’ha arribat a aquesta conclusió a través de l’estudi ambel Matlab realitzat, com podrem veure en l’apartat de processament de senyal.

El sistema dissenyat i amb aquestes característiques:

- Freqüència de mostreig de 4kHz- Nº mostres filtre FIR 4

és capaç de discriminar el so del despertador dins d’un ambient amb les mateixescaracterístiques on s’ha realitzat l’entrenament.

Page 40: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

37

MEMÒRIA DE CÀLCUL

Page 41: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

38

2.1 Descripció solució adoptada

En la següent figura mostrem el circuit dissenyat:

2.1.1. Resistències

En el circuit dissenyat hi ha 7 resistències.

La resistència R1 s’ha posat per polaritzar la càpsula electret. El valor deresistència que hem posat ha estat de 4k7? , ja que el paràmetre que ens acotavael valor d’aquesta és el corrent de polarització en el qual treballa la càpsulaelectret..

electretoccsistència VVV ??Re ? Si VVcc 5? i 0??electretoV , ja que la tensió desortida de la càpsula electret és molt baixa per les característiques d’aquestqcàpsula (veure punt 2.1.5.)

mAVolts

RV

I DDioPolaritzac 1

47005

4?

???

Les dos resistències que ara comentarem seran R2 i R3. Aquestes fan de divisorde tensió juntament amb el potenciòmetre P1 i P2 respectivament, com veurem enl’apartat de potenciòmetres.

Page 42: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

39

La resistència R5, en la sortida de l’amplificador d’àudio, és utilitzada seguint elscriteris del fabricant (veure annex). Com veurem en l’apartat de l’amplificador, esmostra una figura on podem observar el valor de la resistència de sortida del’amplificador. Aquest valor és de 10? i té aquest valor perquè aquest circuit estàdissenyat per donar-nos un guany de 200 (veure 2.1.8.).

Les ultimes resistències a comentar són R6, R7 i R8. Aquestes són les quepolaritzen als díodes led que ens han d’avisar si el sistema ha conegut algun so.El valor d’aquestes és de 1 k? , valor calculat tenint en compte que el corrent depolarització d’aquest tipus de díodes no pot superar 20 mA, segons ens marca elfabricant.

mAk

VVRVV

IIVVV DiodeccRDiodeDiodeRcc 3.4

17.05

??

??

?????? < 20mA

2.1.2. Condensadors

Hem utilitzat dos tipus de condensador, ceràmics i electrol·lítics.

El condensador C1, serà l’encarregat de la realimentació de l’amplificadord’àudio LM386. El seu val és de 10?F (seguint la configuració recomanada pelfabricant, veure 2.1.8.).

El condensador C2 es connecta a la sortida de la càpsula electret, tenint aquest unvalor de 10? F. Aquest és el valor estàndard per a que no es produeixiacoplaments del senyal d’entrada en la càpsula electret.

Els següents condensadors que comentarem són la connexió sèrie amb C3 i C4,ceràmic tots dos ja que per al valor que busquem no són molt habituals elscondensadors electrol·lítics. Concretament amb aquesta connexió sèrie es busca elvalor de 0.05? F, és a dir 50nF. Si connectem dos condensador sèrie de 100nFcada un, tenim un condensador de 50nF. Hem escollit el valor de 50nF, ja que lefabricant del LM386 així ho requereix per tenir un guany de 200 (veure 2.1.8.).

El següents condensadors que comentarem, són el C5 i C6, també ceràmics i devalor 15 pF cadascun. Aquest es connecten l’un a cada pota de l’oscil·lador delsistema i a massa, ja que aquesta és la manera de connectar el rellotge del sistemaa través d’un cristall de quars.

1.1.3. Díodes Led

Resulta molt difícil distingir, per pura inspecció visual, el model del LED aixícom el fabricant: els valors màxims de tensió i corrent que pot suportar y quesubministra el fabricant seran en general desconeguts. Per això, quan s’utilitza undíode LED en un circuit, es recomana que la intensitat que passa no superi els 20mA, precaució de caràcter general que resulta molt vàlida.

Page 43: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

40

S’han posat 3 leds per avisar a l’usuari quan es detecti un so conegut (Led Verd,Led Roig i Led Groc.

2.1.4. Potenciòmetres

Primerament comentarem dos poteciòmetres (en la figura els trobarem com P1 iP2).Aquest han servit de divisor de tensió juntament amb les resistències R2 i R3respectivament per ajustar el rang de tensió d’entrada del conversor A/D delmicrocontrolador.

El divisor de tensió entre el potenciòmetre P1 i la resistència R2 confina el límitinferior del rang de tensió del conversor, sent 0.5 V la tensió de sortida deldivisor.El divisor de tensió entre el potenciòmetre P2 i la resistència R3 confina el límitsuperior del rang de tensió del conversor, sent 4.3 V la tensió de sortida deldivisor.

Per últim, parlarem del tercer potenciòmetre on podem veure a la figura dedescripció el circuit amb el nom de P3. Aquest potenciòmetre servirà per ajustarla impedància d’entrada de l’amplificador d’àudio LM386 i s’ha escollit de 20k?seguint el circuit proporcionat pel fabricant per obtenir el guany desitjat (veure2.1.8.).

Tots tres potenciòmetres s’han escollit multivolta. S’han escollit multivoltaperquè una de les coses que caracteritza aquests potenciòmetres és la precisió al’hora d’ajustar-lo a un valor en concret. Aquesta diferència de qualitat també esveu reflectida en el preu de l’anomenat component.

2.1.5. Micròfon

Per micròfon hem elegit una càpsula electret, que entre altres característiquescom la omnidireccionalitat cal destacar les grans prestacions que dóna amb el seubaix cost. Per això no és d’estranyar que sigui el producte del seu camp mésvenut.

Les característiques d’aquest component són les següents:

- Alimentació de 2 a 6 Vcc- Condensador de sortida de 3 a 10?F- Resposta de freqüències: 50 a 10kHz- Sortida: -30dB/?bar a 1kHz- Impedància (sortida): 1000 Ohms màxim

Amb aquestes connotacions es poden extraure alguns paràmetres com ara latensió d’offset esmentada anteriorment, el valor que s’ha de connectar delcondensador de sortida i el valor de impedància de sortida.

Page 44: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

41

Utilitzant el quart punt d’entre les característiques, tenim que a una freqüència de1kHz ?

VoltsmVVdBV ooo 3210050.12030

)log(30)(log20 ??????

????

Com que el conversor A/D, per defecte té definit el rang d’entrada entre 0 i 5Volts, haurem d’utilitzar el màxim guany que ens proporcioni l’amplificador.Això s’aconseguirà amb l’amplificador d’àudio LM386 i una lògica externa queens pugui donar màxim rendiment a guany.

2.1.6. Regulador 5V

S’ha posat un regulador de 5 Volts al sistema ja que la tensió d’alimentació delmicrocontrolador és de 5 Volts i aquest necessita que la tensió d’alimentació siguiestable.En quan a l’elecció de quin podia ser el regulador més recomanat, s’ha escollit elregulador 7805, ja que és un regulador econòmic i fiable. A més sols necessitad’entrada un Volts més de la tensió de sortida d’aquest, és a dir, 5 + 1= 6 Volts tali com especifica al full de característiques del regulador 7805. Això ensproporcionarà més temps de funcionament tenint en compte que el sistema haestat dissenyat per a ser alimentat amb una pila de 9 Volts, i amb això vull dir queel voltatge de la pila pot disminuir fins a 6 V, que el regulador farà igualment laseva funció, mentre que si haguéssim escollit un altre tips de regulador que ensofereix el mercat, necessitaríem 5 + 3=8 Volts de llindar perquè el regulador ensproporcionés 5 Volts.

2.1.7. Oscil·lador del sistema

L’oscil·lador del sistema serà l’encarregat de proporcionar la freqüència delrellotge al microcontrolador, ja que és molt més precís que l’altra opció quetenim, l’oscilador RC.

L’altre punt és la freqüència d’oscil·lació de l’oscil·lador. Aquesta serà lamateixa que la freqüència de rellotge a la que nosaltres desitgéssim que treballi elmicrocontrolador, en el nostre cas hem escollit la màxima freqüència que pottreballar el microntrolador, és a dir, 20MHz (com podrem veure el full decaracterístiques del microcontrolador). Hem escollit 20 Mhz perquè per al sistemadissenyat necessitem molta velocitat de càlcul, i la velocitat de càlcul ésdirectament proporcional a la freqüència del rellotge.

Page 45: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MEMORIA DE CÀLCUL

42

2.1.8. Amplificador d’àudio

L’amplificador de la figura correspon a una configuració amb un guany 200. Ladiferència d’aquest circuit a un altre amb el mateix amplificador és elcondensador que hi ha raealimentat l’amplificador.

S’ha escollit un guany de 200 perquè com la tensió d’offset de la sortida delmicròfon és de 0.03 Volts, com hem càlcul a l’apartat corresponent ?

VoltsVmàxima 620003.0 ??? ? Suficient per arribar als 5 V, que

és el punt màxim per a acondicionar el rang d’entrada del conversor A/D.

2.1.9. Microcontrolador

El microcontrolador escollit ha estat el PIC 16F876, de 8 bits de paraula dememòria de dades i 20MHz de freqüència de rellotge.Els motius pels quals s’ha escollit aquest microcontrolador ha estat en l’apartat desolució adoptada.

Una de les principals avantatges que ens podem trobar en els PIC’s davant alsaltres ?C, és la seva arquitectura tipus RISC (Computadors de Joc de InstruccionsReduït). En aquest processadors el repertori de instruccions màquina és moltreduït i les instruccions són simples i, generalment, s’executen en un cicle (menysla multiplicació). Una altra avantatja és la facilitat d’aprenentatge i ús de l’entornde programació MPLAB, del qual es pot tenir accés en l’escola, per editar idepurar programes.

Un dels punts negatius d’aquest tipus d’arquitectura és que es complicalleugerament es software del sistema.

Page 46: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

PRESSUPOST

43

PRESSUPOST

Page 47: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

PRESSUPOST

44

4.1 Preu Material

A continuació veurem el quadre de preus del material per realitzar el montatgedel circuit de la figura vista en la memoria de càlcul.

Nº Descripció delcomponent

Preu unitari(Euros)

Quantitat Subtotal(Euros)

1 Resistències ¼ W 0.12 7 0.84

2 Potenciòmetremultivolta

rectangular 20k?

1.104 1 1.104

3 Potenciòmetremultivolta

horitzontal 1k?

1.602 2 3.204

4 Condensadorceràmic 4.7pF

0.06 3 0.18

5 Condensadormulticapa 0.1? F

0.132 2 0.264

6 Condensadorelectrol·lític10?F/25 V

0.07 2 0.14

7 Càpsula electretME 102

1.05 1 1.05

8 Cristall de quars20MHz

0.60 1 0.60

9 Zocal 28 pin 0.16 1 0.16

10 MicrocontroladorPIC16F876

11.92 1 11.92

11 Regulador MC7805 PLAS

1.1 1 1.1

12 LM 386 0.41 1 0.41

13 Díode Led placircular verd

0.14 1 0.14

Page 48: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

PRESSUPOST

45

14 Díode Led placircular vermell

0.13 1 0.13

15 Díode Led placircular àmbar

0.24 1 0.24

TOTAL 21.342

Un cop tenim el preu del material veurem el cost total de fabricació tenint encompte la ma d’obra.

4.2 Preu Disseny i montatge.

Descripció Cost/hora (Euros) Nº hores Total (Euros)

Hores de disseny 28 360 10080

Hores demontatge

24 5 120

TOTAL 10200

Per tant, el preu total de la fabricació de l’equip serà la suma del preu del materialmés les hores de disseny i montatge:

Descripció Cost (Euros)

Cost Material 21.342

Cost hores de Disseny i fabricació 10200

Total 10221.342

Page 49: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BIBLIOGRAFIA

46

BIBLIOGRAFIA

Page 50: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BIBLIOGRAFIA

47

5.1. Llibres consultats

[1] Apunts de l’assignatura. Introducció als sistemes enmicrocontroladors. Enrique Canto, Nicolau Cañellas 2001

[2] Apunts de l’assignatura. Señales i sistemas II. Luis MartinezSalamero, Jesús Brezmes Llecha 2001

[3] Proakis, J.G. y Manolakis, D.G. – Introduction to DigitalSignal Processing Mcmillan Publishing Company, New York,1988.

[4] Jose Maria Angulo V., Ignacio Angulo M. MicrocontroladoresPic – Diseño Práctico de aplicaciones E. Mc. Graw-Hill 1998

[5] PIC 16F876 - Datasheet Microchip 2001

5.2 Pàgines web consultades

[6] http://www.microchip.comDatasheet PIC 16F876

[7] http://www.farnell.comCatàleg de preus dels components electrònics

[8] http://garaje.ya.com/fscarmona/cachareo/micro/principi.htmConstrucció d’un micròfon amb una càpsula electret

[9] www.national.com/pf/LM/LM386.htmlDatasheet LM386

[10] www.national.com/pf/LM/LM78M05.htmlDatasheet MC7805

Page 51: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

DESARROLLO DE VISUALIZADOR DE ALARMAS SONORAS

ANNEX

AUTOR: Paco Lleixà Panisello. DIRECTOR: José L. Ramírez Falo, Jesús Brezmes Llecha

DATA: Setembre / 2003

Page 52: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

1. Espectres del sons enregistrats

DESPERTADOR

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 5 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 5 metres del micròfon.

Page 53: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 7 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 6 metres del micròfon.

Page 54: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 9 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 10 metres del micròfon.

Page 55: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 3 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 1 metres del micròfon.

Page 56: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 2 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deldespertador a 4 metres del micròfon.

Page 57: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

TELEFON

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 8 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 9 metres del micròfon

Page 58: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 9 metres del micròfon

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 7 metres del micròfon.

Page 59: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 7 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 10 metres del micròfon.

Page 60: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del telèfon a1 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 2 metres del micròfon.

Page 61: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 3 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so deltelèfon a 4 metres del micròfon.

Page 62: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

ALARMA

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so delalarma a 1 metre del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so delalarma a 10 metres del micròfon

Page 63: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 2 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 6 metres del micròfon.

Page 64: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 4 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarma5 metres del micròfon.

Page 65: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 6 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 7 metres del micròfon.

Page 66: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 8 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del alarmaa 9 metres del micròfon.

Page 67: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BUIT

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del buit enl’entorn del recinte.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del buit enl’entorn del recinte.

Page 68: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de la ràdioa 3 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de la ràdioa 4 metres del micròfon.

Page 69: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de la ràdioa 5 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de latelevisió a 1 metre del micròfon.

Page 70: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de latelevisió a 4 metres del micròfon

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de latelevisió i la ràdio a 5 metres del micròfon.

Page 71: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so de latelevisió i la ràdio a 8 metres del micròfon.

Cn

Aquest gràfic correspon a l’espectre de la fft de la gravació del so del buit enl’entorn del recinte.

Page 72: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

2. Programes MATLAB

Nota: El programa aquí mostrat en l’annex correspon a la versió final. Aquestaversió consta dels següents paràmetres: 2 filtres (despertador i alarma) i elnúmero de mostres del filtre de 4 mostres. Si es vol provar el programa per atres filtres i el un número diferent de mostres sols s’ha de canviar el paràmetrenº de mostres a la funció bucle.m i per a filtrar el telèfon sols s’ha d’esborrar elcomentari en la línea de codi corresponent al filtre 3 i a l’hora d’etiquetar s’had’afegir una altra classe.

BUCLE.M

Amb aquest programa el que es farà és la crida a totes les funcions ques’utilitzaran, a la vegada que es farà un bucle per trobar l’ample de banda delsfiltres òptims. Per saber quin és l’òptim tenim la funció resolució, on veuremposteriorment de què es tracta.

mat_mat=[0.36 0.48 0.07 0.09 0.09 0.14 0.36 0.47 0.07 0.09 0.09 0.14 0.36 0.46 0.07 0.09 0.09 0.14 0.36 0.40 0.07 0.09 0.09 0.14 0.36 0.44 0.07 0.09 0.09 0.14 0.38 0.48 0.07 0.09 0.1 0.14 0.38 0.46 0.07 0.09 0.09 0.14 0.38 0.44 0.07 0.09 0.09 0.12 0.38 0.40 0.07 0.09 0.46 0.54 0.30 0.40 0.07 0.09 0.46 0.54 0.38 0.46 0.07 0.09 0.09 0.16 0.38 0.46 0.07 0.09 0.09 0.12 0.38 0.4 0.06 0.07 0.09 0.17 0.36 0.48 0.05 0.07 0.1 0.14 0.36 0.44 0.06 0.08 0.09 0.15 0.8 0.9 0.4 0.5 0.1 0.2];

n_mostres=4;

for w=1:1

v=mat_mat(w,:); final; neuro resolucio;

end

Page 73: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

FINAL.M

Aquesta funció llegirà el so prèviament enregistrat i a través d’una funcióanomenada wavread, convertirà un arxiu *.wav amb una matriu de valorscompresos entre –1 i 1.Després, ja que la targeta de so sols ens ha permès mostrejar a 8kHz, per arribarals 4kHz previstos per al sistema real, decimarem el vector de valors, és a dir, siteniem una longitud del vector de x, amb la instrucció decimate tindrem unalongitud de x/2. Això és el mateix que mostrejar amb la freqüència de 8kHz/2, ésa dir 4kHz.Després dissenyarem el filtre b1 i b2, amb el numero de mostres i l’ample debanda, ja que aquest són els paràmetres que la funció filter ens demanaràposteriorment.La funció filter tindrà com a paràmetres d’entrada el vector mostra, la classe defiltre i les característiques del filtre definides per b1 i b2 respectivament.

hold off;

c=[]; %inicialitzem la matriu a null

cd sonidos_finals

a=dir('*.wav');

for i=1:20

y=abs(ceil(128*((wavread(a(i).name)))));

y2=ceil(decimate(y,2));

longitud=length(y2);

k=sum(y2);

yn=y2;

%k=sqrt(sum(y2.^2))/longitud; %yfft=abs(fft(yn));

%vector=(1/longitud(1))*[1:longitud(1)]; %definim quins criterisseguira el %plot

b1=fir1(n_mostres,[v(1:1) v(2:2)]); %filtre corresponent al despertador

b2=fir1(n_mostres,[v(3:3) v(4:4)]); %filtre corresponent al alarma

%b3=fir1(n_mostres,[v(5:5) v(6:6)]); %filtre corresponent al telefon

%b1=[2 4 19 19 4 2];

Page 74: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

%b2=[0 5 13 13 5 0];

%b1=[2 4 20 4 2]; %b2=[1 9 12 9 1];

filtre1=filter(b1,1,yn); %la funcio filter ens retornara %la senyal coprresponent la yfft filtrada

%amb l'ample de banda corresponent, ja definit

filtre2=filter(b2,1,yn);

%filtre3=filter(b3,1,yn);

%title('energia1');

%energia1=sum(filtre1.^2)/longitud; energia1=(sum(filtre1)/longitud)/k; %title('energia2'); energia2=(sum(filtre2)/longitud)/k;

%title('energia3'); %energia3=sum(filtre3.^2)/longitud;

b=[energia1 energia2];

c=[c b];

end

cd d:\matlab\bin;

auto2; %aquí farem el mateix però amb els sons del buit

%ordenar %representar %centroides

Nota: les línies del codi que estan encapçalades al principi de línia amb %, sóncomentaris o accions que s’han fet de prova i que per al funcionament normaldel sistema no fan falta però si que han fet falta per saber algun paràmetre onormalitzar alguna variable.

Page 75: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

AUTO2

Aquesta funció fa la mateixa funció que la de final.m però en lloc de processarels sons del despertador i de alarma, processa els sons del buit.

hold off;

cd sonidos4; %anem al directori eon tenim enregistrats els sons%del despertador i alarma

a=dir('*.wav');

d=0;g=[];

for i=1:10 y=abs(ceil(128*((wavread(a(i).name))))); y2=ceil(decimate(y,2)); longitud=length(y2); %size(y2) k=sum(y2); yn=y2; %k=sqrt(sum(y2.^2))/longitud; %yfft=abs(fft(yn));

%vector=(1/longitud(1))*[1:longitud(1)]; %definim quins criteris%seguira el plot

b1=fir1(n_mostres,[v(1:1) v(2:2)]); %filtre corresponent al despertador b2=fir1(n_mostres,[v(3:3) v(4:4)]); %filtre corresponent al alarma

%b3=fir1(n_mostres,[v(5:5) v(6:6)]); %filtre corresponent al%telefon

%b1=[2 4 19 19 4 2]; %b2=[0 5 13 13 5 0];

%b1=[2 4 20 4 2]; %b2=[1 9 12 9 1];

filtre1=filter(b1,1,yn); %la funcio filter ens retornara %la senyal coprresponent la yfft filtrada

%amb l'ample de banda corresponent, ja%definit

filtre2=filter(b2,1,yn);%filtre3=filter(b3,1,yn);

title('energia1'); %energia1=sum(filtre1.^2)/longitud; energia1=(sum(filtre1)/longitud)/k;

Page 76: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

title('energia2'); energia2=(sum(filtre2)/longitud)/k;

%title('energia3'); %energia3=sum(filtre3.^2)/longitud;

b=[energia1 energia2];c=[c

b];

end

cd d:\matlab\bin;

ORDENAR

Aquesta funció es va servir per ordenar els 30 sons del telèfon, alarma idespertador respectivament quan s’intentava com ja he dit abans en un primermoment discriminar els tres sons inicials. Com que amb la directiva dirdireccionem el directori a una carpeta (cd sonidos_finals), aquesta és gestionadapel windows, a través dels camps de cada arxiu i amb aquesta funció ensassegurem que els 10 primers sons són del alarma, els 10 següents deldespertador i els 10 últims del telèfon

energies=c;

% Ara ordenarem el senyal del alarma

for n=1:3

energies(1,n)=c(4,n);

end

for n=1:3

energies(2,n)=c(5,n);

end

for n=1:3

energies(3,n)=c(6,n);

end

for n=1:3

Page 77: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

energies(4,n)=c(7,n);

end

for n=1:3

energies(5,n)=c(8,n);

end

for n=1:3

energies(6,n)=c(9,n);

end

for n=1:3

energies(7,n)=c(10,n);

end

for n=1:3

energies(8,n)=c(1,n);

end

for n=1:3

energies(9,n)=c(2,n);

end

for n=1:3

energies(10,n)=c(3,n);

end

% Ara ordenarem el senyal del despertador

for n=1:3

energies(11,n)=c(12,n);

end

Page 78: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

for n=1:3

energies(12,n)=c(13,n);

end

for n=1:3

energies(13,n)=c(14,n);

end

for n=1:3

energies(14,n)=c(15,n);

end

for n=1:3

energies(15,n)=c(16,n);

end

for n=1:3

energies(16,n)=c(17,n);

end

for n=1:3

energies(17,n)=c(18,n);

end

for n=1:3

energies(18,n)=c(19,n);

end

for n=1:3

energies(19,n)=c(20,n);

end

e=20;

Page 79: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

f=11;

for n=1:3

energies(e,n)=c(f,n);

end

% Ara ordenarem el senyal del telefon

for n=1:3

energies(21,n)=c(24,n);

end

for n=1:3

energies(22,n)=c(25,n);

end

for n=1:3

energies(23,n)=c(27,n);

end

for n=1:3

energies(24,n)=c(28,n);

end

e=25;

f=30;

for n=1:3

energies(e,n)=c(f,n);

end

for n=1:3

energies(26,n)=c(21,n);

Page 80: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

end

for n=1:3

energies(27,n)=c(22,n);

end

e=28;

f=26;

for n=1:3

energies(e,n)=c(f,n);

end

e=29;

f=29;

for n=1:3

energies(e,n)=c(f,n);

end

e=30;

f=23;

for n=1:3

energies(e,n)=c(f,n);

end

energies=[energies

g];

title('energia filtre despertador');

filtre_desp=energies(:,1);

title('energia filtre alarma');

filtre_timb=energies(:,2);

Page 81: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

title('energia filtre telefon');

filtre_telf=energies(:,3);

x=filtre_desp;

y=filtre_timb;

z=filtre_telf;

REPRESENTAR

Aquesta funció ens respresentarà la relació d’energies dels senyals esmentatats,amb un plànol 3D, d’aquesta manera podrem veure en quin grau intervé unsenyal amb l’altre.

title('energia filtre despertador');

filtre_desp=energies(:,1);

title('energia filtre alarma');

filtre_timb=energies(:,2);

title('energia filtre telefon');

filtre_telf=energies(:,3);

x=filtre_desp;

y=filtre_timb;

z=filtre_telf;

hold off;

plot3(x(1:10),y(1:10),z(1:10),'ob')

hold on;

plot3(x(11:20),y(11:20),z(11:20),'ok')

hold on;

plot3(x(21:30),y(21:30),z(21:30),'or')

hold on;

Page 82: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

plot3(x(31:40),y(31:40),z(31:40),'og')

hold on;

grid on;

CENTROIDES

Aquesta funció ens donarà la resolució del sistema

centroide_timb=sum(energies(1:10,:))/10;

centroide_desp=sum(energies(11:20,:))/10;

centroide_telf=sum(energies(21:30,:))/10;

%inicialitzacions

aux=0;a=0;b=0;c=0;d=0;e=0;f=0;

intradesp=0;

intraalarma=0;

intratelf=0;

%Calcularem la intraclasse del alarma

for i=1:10

for j=1:3

aux=(energies(i,j)-centroide_timb(j))^2;

intraalarma=aux + intraalarma;

end;

end;

Page 83: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

intraalarma=intraalarma/10; %intraclasse del alarma

%Calcularem la intraclasse del despertador

for i=11:20

for j=1:3

aux=(energies(i,j)-centroide_desp(j))^2;

intradesp=aux + intradesp;

end;

end;

intradesp=intradesp/10; %intraclasse del despertador

%Calcularem la intraclasse del telefon

for i=21:30

for j=1:3

aux=(energies(i,j)-centroide_telf(j))^2;

intratelf=aux + intratelf;

end;

end;

intratelf=intratelf/10; %intraclasse del telefon

intraclase=(intraalarma + intratelf + intradesp)/3;

d=(centroide_desp-centroide_timb);

e= (centroide_timb-centroide_telf);

f= (centroide_desp-centroide_telf);

interclase=sum(sqrt(sum(d.^2))+sqrt(sum(e.^2))+sqrt(sum(f.^2)))/3;

resolucio=interclase/intraclase

Page 84: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Programes de reconeixement

NEURO

Aquesta funció serà la que gestionarà el tractament de la informació en la xarxaneuronal. Des de entrenar amb una matriu a evaluar si algun d’aquest vectors dela matriu pertany a algun so conegut.

%Partimos de una matriz de 40 filas y 3 columnas.%Hemos de crear otra columna con la etiqueta de cada fila que%nos dirá si el sonido pertenece al campo telefono%al alarma o al telefono.

etiquetar_final2; %la columna de més a la dreta serà la classe de la%mostra, és a dir, des de la fila 1 a la 10 serà classe 1%(despertador), de la 11 a la 20 classe 2 del alarma, i%de la 21 a la 30 classe 3 de buit.

%EN AQUESTA VERSIO FAREM SERVIR L'ENTRENO ORIGINAL I LA%TERCERA MODIFICACIÓ DE TESThome ;llimpiem la pantalla

%A modificar para cada aplicacion o matrizcd d:/matlab/bin%matriz=load (matriu);

matriz=mat;vecsens=[1:2];vectarget=[3]; ;com he dit abans, la tercera columna serà la classe

%Paràmetres de la xarxa%lr=0.8;lr=0.8;%v_lr=[0.95 0.9 0.8 0.2 0.1 0.05];

%for i=1:6

%lr=v_lr(i);

error=0;

%Normalitzacio per columnes entre 0 i 1[f,c]=size(matriz);auxmax=max(matriz);for i=1:c nmatriz(:,i)=matriz(:,i)./auxmax(i);endfor i=1:f

Page 85: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

for j=1:c if nmatriz(i,j)<0 nmatriz(i,j)=0; end endend

nmatriz;

%inicialitzaciobien=0;mal=0;nsnc=0;

% Bucle leave-one-out(sale uno fuera)for i=2:(f-1)

mattrain= nmatriz([1:(i-1) (i+1):f],:);mattest=nmatriz([i],:);homei;[ga,wija2,wijb2,wijab]=fzmaptnok(0,1,lr,1,0.001,mattrain(:,vecsens),mattrain(:,vectarget));[a1,a2,infotst,viga,wija,vigb,wijb]=fzmaptsexp3(ga,1,lr,1,0.001,wija2,wijb2,wijab,mattest(:,vecsens),mattest(:,vectarget));

infotst;historial(i,:)=a2(2:3);bien=bien+infotst(1);mal=mal+infotst(2);nsnc=nsnc+infotst(3);

end

mattrain= nmatriz([1:(f-1)],:);mattest=nmatriz(f,:);

[ga,wija2,wijb2,wijab]=fzmaptnok(0,1,lr,1,0.001,mattrain(:,vecsens),mattrain(:,vectarget));[a1,a2,infotst,viga,wija,vigb,wijb]=fzmaptsexp3(ga,1,lr,1,0.001,wija2,wijb2,wijab,mattest(:,vecsens),mattest(:,vectarget));

historial(f,:)=a2(2:3);bien=bien+infotst(1);mal=mal+infotst(2);nsnc=nsnc+infotst(3);

mattrain= nmatriz([2:f],:);mattest=nmatriz([1],:);

Page 86: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

[ga,wija2,wijb2,wijab]=fzmaptnok(0,1,lr,1,0.001,mattrain(:,vecsens),mattrain(:,vectarget));[a1,a2,infotst,viga,wija,vigb,wijb]=fzmaptsexp3(ga,1,lr,1,0.001,wija2,wijb2,wijab,mattest(:,vecsens),mattest(:,vectarget));

drawnow

historial(1,:)=a2(2:3);bien=bien+infotst(1)mal=mal+infotst(2)nsnc=nsnc+infotst(3)historial'

%end

ETIQUETAR

Aquesta funció classificarà les mostres en tres classes, alarma, despertador i buit.En el cas que només volem reconéixer tres sons, com per exemple eldespertador, el tmbre i el telèfon s’ha d’afegir una altra classe en la matriud’etiquetes.

h=[c g];

eti=[111111111122222222223333333333];

Page 87: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

mat=[h eti];

FZMAPTNOK

Aquesta funció el que fa és entrenar al sistema, i crear una sèrie de paràmetresper llavors tenir en compte a l’etapa d’evaluació.

function [viga,wija,wijb,wab]=fzmaptnok(vigbase,vigb,lra,lrb,alfa,ent,sal)l1=size(ent);l2=size(sal);a=fzcc(ent);viga=vigbase;epoch=0;reset=1;maxa=1;wab=0;maxa=1;wab=-1;wija=inifzart(l1(2));wijb=inifzart(l2(2));

lrb=0.8;

while reset > 0epoch=epoch+1;

reset=0;for i=1:l1(1)

[real(i),wijb]=fziart(vigb,lrb,alfa,sal(i,:),wijb); [outa(i),temp]=fziart(viga,lra,alfa,ent(i,:),wija);

contwhile=0;

while (wab(outa(i))~=real(i))

%contwhile=contwhile+1 if wab(outa(i))==-1

wab(maxa)=real(i);

maxa=maxa+1;

Page 88: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

wab(maxa)=-1;else

reset=reset+1; % wija(outa(i),:) %a(i,:) viga=10^(-9) + fzm(fzand(a(i,:),wija(outa(i),:)))/fzm(a(i,:));% auxviga=viga-1 [outa(i),temp]=fziart(viga,lra,alfa,ent(i,:),wija); % ri=0.999999999999 %pause clc end

end wija=temp; end

end;

pred=wab(outa(1:l1(1)));a=[ent,pred',real',sal];

FZMAPTSTEXP3

Aquesta serà la funció que s’encarregarà d’evaluar si un determinat so pertany auna classe coneguda i si és així el classificarà o si no pertany a ninguna de lesclasses conegudes.

function[a1,a2,infotst,viga,wija,vigb,wijb]=fzmaptstexp3(viga,vigb,lra,lrb,alfa,wija,wijb,wijab,ent,sal)

% Esta función va modificando el valor del viga hasta su valor mas elevado% siempre que en la salida no haya ninguna muestra por clasificar% viga como parametro de entrada determina el viga inicial al hacer la busqueda% Ultima version que parece que funciona del 13-oct-2000

ok=0;

Page 89: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

l1=size(ent);l2=size(sal);l3=size(wija);disroup=(1-viga)/2;disrodown=viga/2;disromin=min(disroup,disrodown);

testviga=viga;nsnc=1;

while ((disromin>0.01)| (nsnc>0)) abc=((disromin>0.01)| (nsnc>0)); wijabucle=wija; wijbbucle=wijb;wab=wijab;%wab(l3(1))=0;a=fzcc(ent);for i=1:l1(1) [real(i),wijb]=fziart(vigb,lrb,alfa,sal(i,:),wijbbucle);

[outa(i),temp]=fziart(testviga,lra,alfa,ent(i,:),wijabucle);%if l3(1)~=outa(i)

if wab(outa(i))> -1wijabucle=temp;end;end

length(wab);wab;outa;pred=wab(outa(1:l1(1)));a=[ent,outa',pred',real',sal];pauseok=0;nsnc=0;for i=1:l1(1)if pred(i)==real(i)ok=ok+1;end;if pred(i)== -1 nsnc=nsnc+1;end;endnok=l1(1)-ok-nsnc;rateok=100*ok/l1(1);

nsnc;if nsnc>0 testviga=testviga-disrodown;

Page 90: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

else testviga=testviga+disroup;end

disroup=disroup/2;disrodown=disrodown/2;disromin=min(disroup,disrodown);testviga;

endviga=testviga;length(wab);wab;outa;pred=wab(outa(1:l1(1)));a1=[ent,outa',pred',real',sal];a2=[outa',pred',real'];ok=0;nsnc=0;for i=1:l1(1)if pred(i)==real(i)ok=ok+1;end;if pred(i)== -1 nsnc=nsnc+1;end;end

nok=l1(1)-ok-nsnc;rateok=100*ok/l1(1);infotst=[ok nok nsnc rateok length(viga)];

INIFZART

Aquesta funció crea un vector amb la quantitat d’uns com la longitud que lipasses com a paràmetre d’entrada multiplicat per dos.

function [wij]=inifzart(a)wij=ones(1,a*2);

FZIART

Esta funció va recorrent una matriu, i quan detecta que el paràmetre devigilancia viga, detecta una classe coneguda, surt del bucle, i a través de lavariable punt tindrem de quina classe es tracta.

Page 91: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

function [act,wijb]=fziart(ro,lr,alfa,entr,wija)wijb=wija;input=fzcc(entr);b=size(wija);%ri=0.8if b(1)>1for i=1:(b(1)-1) t(i)=fzm(fzand(input,wija(i,:)))/(alfa+fzm(wija(i,:)));end;t(b(1))=0;else t(1)=1; end;[aux,index]=sort(-t);punt=1;

if ro > 1 ro=1;end

while (fzm(fzand(input,wija(index(punt),:)))/fzm(input)) < ro

%clc %ro %wija(index(punt),:) %fzm(fzand(input,wija(index(punt),:)))/fzm(input) punt=punt+1; %pauseend;

%punt% Fast commit slow recodeif wija(index(punt),:)==ones(1,b(2)) wijb(index(punt),:)=input;else wijb(index(punt),:)=lr*(fzand(input,wija(index(punt),:)))+(1-lr)*wija(index(punt),:);end% Final de la modificacioif punt==b(1)wijb=[wijbones(1,length(input))];end;wijb;act=index(punt);

Page 92: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

FZCC

Aquesta funció s’encarrega de calcular el complement a dos de una cadena.

function [res]=fzcc(a)res=[a 1-a];

FZAND

Aquesta funció troba el mínim d’entre una cadena.

function [res]=fzand(a,b)aux=[ab];res=min(aux);

FZM

Aquesta funció calcula la suma de una cadena.

function [res]=fzm(a)res=sum(a);

Page 93: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

3. Programes MPLAB

Aquí es mostra el programa ensamblador:

Tot el text que estigui escrit després de un ; és un comentari i no consta com capinstrucció del programa.

Declaració de variables

Les energies del despertador i del alarma s’han tingut que declarar en 3variables, ja que com que a l’estudi amb el matlab hem observat que les energiesde tots dos filtres es mouen sobre l’entorn dels 10.000.000, necessitem 24 bitsper poder arribar a 10.000.000 decimals.

list p=16F877

include "p16F877.inc" ;incloem la llibraria P16F876

#define BANK0 BCF STATUS,RP0 ;definim els canvis de banks#define BANK1 BSF STATUS,RP0

mostra EQU 0x20 ;contindra el valor de la nova mostra

energia_desp_L EQU 0x21 ;contindra la part baixa de la energia del despertador

energia_desp_H EQU 0x22 ;contindrà la part alta de la energia del ;despertador

energia_desp_LW EQU 0x7C ;conté els 8 bits alts de la energia del ;despertador

energia_timb_L EQU 0x23 ;contindra la part baixa de la energia del ;alarma

energia_timb_H EQU 0x24energia_timb_LW EQU 0x7B

quocient EQU 0x79

H_byte EQU 0x44 ;aquesta variable serveix per dipositar la ;part alta de la multiplicació de 8 bits.

L_byte EQU 0x45 ;aquesta la part baixa del resultat

Page 94: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

mulplr EQU 0x25 ;aquest es diposita una dels dos termes de ;la multiplicació

mulcnd EQU 0x26

compta_tmr1 EQU 0x27 ;contador de interrupcions del timer1inici_cola EQU 0x28 ;contindra la direccio de la primera mostra de

la colaconta_mostres EQU 0x29 ;contindrà el nombre de mostres

estat_cola EQU 0x3A ;ens informara si la cola conté el numero de mostres corresponents

ACCaHI EQU 0x30 ;valor d'entrada de funcions d'operacio aritmètica

ACCaLO EQU 0x31ACCbHI EQU 0x32ACCbLO EQU 0x33ACCcHI EQU 0x34ACCcLO EQU 0x35ACCdHI EQU 0x36ACCdLO EQU 0x37

aux EQU 0x38mostra_nova EQU 0x39 ;ens proporcionara informacio si ha hagut una

;nova mostraconta_cola EQU 0x3E

index0 EQU 0x3B ;aquestes variables serviranindex1 EQU 0x3C ;per a poder recorrer els vectors de mostresindex2 EQU 0x3D ;i de coeficients

dos_segons EQU 0xA0

count EQU 0xEF

tempLo EQU 0xB9tempHi EQU 0xBA

TMP_STATUS EQU 0x7FTMP_W EQU 0x46

coef_desp_H EQU 0x40 ;contindra el valor apuntat de coeficientcoef_desp_L EQU 0x41coef_timb_H EQU 0x42coef_timb_L EQU 0x43

conta_tmr0_H EQU 0x7Dconta_tmr0_L EQU 0x7E

resto EQU 0xAAmostra_H EQU 0xABmostra_L EQU 0xAC

normal_H EQU 0xADnormal_L EQU 0xAE

restaurar_pclath EQU 0x47

Page 95: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

max_desp_H EQU 0x2A ;part alta del valor màxim d’energia del ;despertador

max_desp_L EQU 0x2B

max_timb_H EQU 0x2C

max_timb_L EQU 0x2D

suma_mostres_H EQU 0x2Esuma_mostres_L EQU 0x2Fsuma_mostres_LW EQU 0x7A

;******************** aquestes son les variables de la xarxa neuronal **************

punt EQU 0x110offset EQU 0x111over_pclath1 EQU 0x112disromin_h EQU 0x113disromin_l EQU 0x114comparate1_h EQU 0x115comparate1_l EQU 0x116primer EQU 0x117segon EQU 0x118igual EQU 0x119comparate2_h EQU 0x11Acomparate2_l EQU 0x11B

suma_h EQU 0x11Csuma_l EQU 0x11Dsuma1_h EQU 0x11Esuma1_l EQU 0x11Fsuma2_h EQU 0x120suma2_l EQU 0x121mes_petit_h EQU 0x122mes_petit_l EQU 0x123conta_fcc EQU 0x124conta_vegades EQU 0x125wija_H EQU 0x126wija_L EQU 0x127over_pclath2 EQU 0x128clase EQU 0x129mes_gran_h EQU 0x12Ames_gran_l EQU 0X12Bconta_punt EQU 0x12Cmes_petit_entrh EQU 0x12Dmes_petit_entrl EQU 0x12E

ORG 0x00

GOTO START

;gestio de interrupcions

org 0x04

movwf TMP_W ;Salva W y STATUS

Page 96: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

swapf STATUS,Wmovwf TMP_STATUSBANK0

goto interrupcio

Programa incial

Aquí inicialitzarem les variables, els ports i configurarem els timers.

El primer que fem és incialitzar els coeficients de Fourier, els quals s’hantrobat amb l’estudi previ realitzat. Cal tenir en compte que els valorhexadecimals dels coeficients són de 16 bits, però per qüestions delimitacions en el temps (com ja he comentat), les multiplicacions oconvolucions es fan de 8 bits. Igualment s’ha provat en el procés desimulació, i baixant la qualitat dels coeficients de Fourier fins a 8 bits handonat els mateixos resultats esmentats.

El timer 0 el carregarem de manera que sigui el que ens avisi quan hagitranscorregut el temps 1/Fmostreig, en el nostre cas 250?s(en el seu moments’explicarà com s’ha carregat el valor).El timer 1 serà l’encarregat d’avisar-nos quan hagin passat els 2 segons i japuguem classificar el so.

Els port A està relacionat amb el conversor analògic digital. El pin 0 del portA serà el pin d’entrada del conversor, en el qual entrarà el senyal desprésd’haver estat degudament amplificat per l’amplificador d’àudio. Els bits 2 i3 del port A serveixen per acotar el rang d’entrada del conversor A/D, demanera que igual que el pin 0 s’han de configurar com a entrada analògica.El port B el configurarem com a sortida, ja que serà el que encendrà els ledquan el moment ho sol·liciti.

START:

CALL ini_coeficients ;carregarem els coeficients dels diferents ;filtres als seus espais corresponents de

;memòria CALL ini_ports ;inicialitzarem els ports utilitzats

CALL ini_interrupcions ;inicialitzarem els registres implicats en ;les interrupcions

CALL ini_variables

CLRF max_desp_HCLRF max_desp_L

CLRF max_timb_HCLRF max_timb_L

Page 97: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Programa principal

En el programa principal hi haurà un bucle d’espera fins que transcorren els250?s, que és el temps de mostreig. Un cop han passat el 250?s, el valor dela mostra de 8 bits es col·loca a la cola creada (en el seu moment es donaranmés detalls) per capturar les mostres necessàries per poder convolucionarposteriorment.

El mètode que hem seguit a la convolució ha estat el següent.S’ha reservat un espai de memòria de dades en el bank 0. De les posicions74h a la 48h aniran entrant mostres en posició decreixent.

0x48...............0x74

De manera que la primera mostra es còpia en la posició 0x70, la següent enla 0x6F, la següent a la 0x6E, i així fins la 0x48. Quan arriben a la 0x48, les4 ultimes mostres es copien a les posicions 0x71,72,73,75, de manera que lasegüent convolució de 5 mostres es faci amb les 4 mostres anteriors i laactual en la poscició 0x70.

Les convolucions es realitzaran tantes vegades com doni temps en dossegons. Els resultats de les convolucions s’aniran afegint en les variablesdeclarades com a energia_desp_LW,_H,_L i energia_timb_LW,_H,_L.

Quan hagin passat els dos segons el següent a fer és normalitzar el valor deles energies.Seguint els passos que hem fet servir en l’estudi amb el Matlab, dividirem elvalor de les energies amb el sumatori de totes les mostres capturades.Això es farà a la funció normalitzar_energies, en la que a part d’això esnormalitzarà el valor de les energies entre 0 i 10000, ja que un dels requisitsper al correcte funcionament de la xarxa neuronal és que els valors d’entradaestiguin entre 0 i 1. Nosaltres multipliquem les energies d’entrada igual queels paràmetres d’entrenament per 10000, ja que fer operacions en comaflotant seria molt més costós en temps. Aquesta normalització es fa haventagafat varies mesures del mostrejador, de manera que trobem el valormàxim d’energia del despertador i del alarma que hem observat i dividim elvalor d’energia pel màxim de la respectiva energia i ho multipliquem per10000.

Un cop hem normalitzat les corresponents energies, ja podem executar laxarxa neuronal. Aquesta part de la xarxa neuronal s’explica en elcorresponent moment.

Page 98: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

;********************* PROGRAMA PRINCIPAL ***************************

PRINCIPI:

BANK0

BCF STATUS,IRP

BTFSS mostra_nova,0

goto PRINCIPI

BCF mostra_nova,0

INCF conta_mostres,F

BSF ADCON0,2

s8: BTFSC ADCON0,2

goto s8

CALL encolar2

CALL convolucionar

BANK1

BTFSS dos_segons,0

goto PRINCIPI

CLRF dos_segons

BANK0

call normalitzar_energies

CALL xarxa_neuro

CALL reconeixer

CALL ini_interrupcions ;inicialitzarem els registres implicats en les ,interrupcions

CALL ini_variables

goto PRINCIPI

;************************fi del programa principal********************

En la següent funció tractarem la rutina de interrupció. Es mira de detectarquin ha estat el motiu pel qual s’ha produït una interrupció testejant lespossibles interrupcions que hagin pogut interrumpir. Encara que pareix una

Page 99: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

cosa sense importància, s’ha de tenir en compte que només ens podeninterrumpir les variables que nosaltres volem. Amb això vull dir que alprincipi quan incialitzem les interrupcions, s’han de deshabilitar totes ihabilitar solament en el nostre cas la dels timers i la del conversor A/D.Quan hagi detectat quina de les interrupcions ha estat la que hagi generat lainterrupció hem de recordar de netejar el bit que ens ha avisat que hi haviainterrupció.

;************aqui tractarem la rutina de interrupció******************

interrupcio:

nop

banksel TMR0

BCF INTCON,0BCF INTCON,1

BTFSS INTCON,2 ;comprovem si és interrupció del timer 0goto g1

BCF INTCON,2 ;si es així netegem el bit que ha provocat la ;interrupció

CALL T_mostreig ;carregarem altre cop el valor del timer 0

BSF mostra_nova,0

g1: BTFSS PIR1,0 ;comprovem si s’ha generat la interrupció del ;timer1

goto g3BCF PIR1,0CALL ini_tmr1INCF compta_tmr1,FMOVF compta_tmr1,WSUBLW D'20'

;comprovarem si han transcorregut 20 vegades 100ms, és a dir, 2 segons

BTFSS STATUS,Zgoto g3CLRF compta_tmr1

BANK1BSF dos_segons,0BANK0

g3: swapf TMP_STATUS,W ;actualitzarem el valor de STATUS al que ;hi havia abans de generar-se la interrupció ;per poder tornar al mateixa posició de

;programa.movwf STATUSswapf TMP_W,Fswapf TMP_W,W

RETFIE

Page 100: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

;*****************inicialitzem els patàmetres de les interrupcions***************

ini_interrupcions:

BCF INTCON,GIEBCF PIR1,0

MOVLW 0x30MOVWF T1CON

CALL ini_tmr0 ;inicialitzarem el timer0 utilitzat per la freqüència ;de conversió A/D

CALL T_mostreig ;configurarem el període de mostreig utilitzant el ;timer0

CALL ini_tmr1 ;inicialitzarem el timer1 per contabilitzar els dos;segons entre refresc i resfresc de la xarxa neuronal

CALL ini_AD ;inicialitzarem els paràmetres de la conversió A/DBCF PIR1,ADIF

BSF INTCON,GIE;BSF INTCON,PEIEBSF ADCON0,2BSF T1CON,TMR1ON

RETURN

;****************inicialitzem les variables*******************

ini_variables:

BANK1

CLRF dos_segonsBANK0

CLRF quocient

CLRF conta_tmr0_HCLRF conta_tmr0_L

CLRF conta_colaCLRF conta_mostresCLRF suma_mostres_HCLRF suma_mostres_LCLRF suma_mostres_LW

CLRF conta_tmr0_HCLRF conta_tmr0_L

CLRF ADRESH

Page 101: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

CLRF ADRESL

CLRF energia_desp_LCLRF energia_desp_HCLRF energia_desp_LWCLRF energia_timb_LCLRF energia_timb_HCLRF energia_timb_LW

CLRF 0x74CLRF 0x73CLRF 0x72CLRF 0x71CLRF 0x70

BANK1

BANK0

CLRF compta_tmr1 ;inicialitzem el contador de interrupcions

MOVLW 0x48 ;la primera mostra estarà en aquesta posicióMOVWF inici_cola

CLRF auxCLRF mostra_nova

;MOVLW 0x33 ;hi haurà una cola de 51 mostres;MOVWF conta_mostres

CLRF ACCaHICLRF ACCaLOCLRF ACCbHICLRF ACCbLOCLRF ACCcHICLRF ACCcLOCLRF ACCdHICLRF ACCdLO

CLRF coef_desp_HCLRF coef_desp_LCLRF coef_timb_HCLRF coef_timb_L

banksel EEDATA

CLRF puntCLRF offsetCLRF over_pclath1CLRF disromin_hCLRF disromin_lCLRF comparate1_hCLRF comparate1_lCLRF primerCLRF segonCLRF igualCLRF comparate2_h

Page 102: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

CLRF comparate2_l

CLRF suma_hCLRF suma_lCLRF suma1_hCLRF suma1_lCLRF suma2_hCLRF suma2_lCLRF mes_petit_hCLRF mes_petit_lCLRF conta_fccCLRF conta_vegadesCLRF wija_HCLRF wija_LCLRF over_pclath2CLRF clase

banksel TMR0

return

;**************incialitzem els ports**************

ini_ports:

BCF STATUS,RP1BSF STATUS,RP0 ;anem al bank1 per configurar els registres TRISMOVLW b'00001101' ;Configuro RA0 (AN0) com a entrada per al

;mostreig del micròfon i RA2 i RA3 per les ;tensions;superiors e inferiors de referència

MOVWF TRISA

CLRF TRISBCLRF TRISC

BCF STATUS,RP0 ;tornem al bank 0

CLRF PORTB

RETURN

En la següent funció, configurarem el timer 0 (cal tenir en compte que és uncomptador ascendent de 8 bits) amb un pre-escalat de 1:32 ja que és laconfiguració en la que es produeix menys error, és a dir:

El pre-scaler el que fa es dividir la freqüència del rellotge en N, si N=2 ? lafreqüència del comptador del timer serà de 20Mhz/2 ? 10MHz.Volem que el timer es desbordi i produeixi una interrupció cada 250?s.

Page 103: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Mirant en el datasheet del PIC16F876, i aplicant la fórmula per trobar eltemps de desbordament del timer:

NTMRTt OSCDESBORDE *)0(**4 ?? ; Pre-scaler 1:N

sTMRHz

tDESBORDE6

610*25032*)0(*

10*201

*4 ????

Si N = 32 ? 3906.3932*4

10*20*10*250)0(

66

?????

TMR

Si N = 64 ? (-TMR0) = 19.53

Si N = 128 ? (-TMR0) = 9.76

Si N = 16 ? (-TMR0) = 78.125

Si N = 8 ? (-TMR0) = 312.5 ? no es pot codificar en 8 bits.

En l’aproximació que cometem menys error és en el pre-scaler a 32.

Per tant el valor que s’ha de carregar al timer 0 és, seguint lescaracterístiques que ens dóna el datasheet, el complement a 2 del valor, pertantel complement a 2 de 39 és H ’D9’. El valor del timer serà carregat en lafunció T_mostreig.

;**********************inicialitzem el timer 0*******************************

ini_tmr0:

BCF STATUS,RP1 ;vaig al bank1BSF STATUS,RP0MOVLW b'10000100' ;configurem l'oscil.lador del sistema amb

;un pre-escalat de 1:32MOVWF OPTION_REGBCF STATUS,RP0 ;tornem al bank0

return

;*************carreguem el valor del de desbordament del timer 0***********

T_mostreig:

BCF INTCON,2 ;llimpiem la interrupció que s'ha pogut generar

Page 104: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

;anteriorment ja que s'ha de llimpiar per software

BCF INTCON,5 ;T0IE=0, és a dir, deshabilitem les interrupcions ;del timer0 ja que quan es carga el valor del timer

;les interrupcions ;han d'estar inhibides per evitar ;posibles errors

MOVLW b'11011001' ;carreguem les interrupcions del timer0 amb el ;valor de 39 en complement a 2

MOVWF TMR0

BSF INTCON,5 ;habilitem les interrupcons del timer0

RETURN

El timer 1és un comptador ascendent però a diferència del timer 0 que és de8 bits, aquest és de 16 bits i per això serà l’encarregat d’avisar-nos quanhagin passat dos segons, ja que pot comptar fins un número més gran que eltimer 0. Això ho aconseguim carregant al timer el valor de 1ms, i a travésd’un comptador quan hagi comptat 20 vegades desbordant-se el timer 1 voldir q han passat els 2 segons. S’ha fet amb un comptador, ja que el timer nopot comptar fins a 2 segons perquè el màxim q pot comptar és fins a :

NTMRTt OSCDESBORDE *)1(**4 ?? ? Si el valor del timer1 és de 16 bits, elvalor màxim que pot comptar és de

max16

6 *)12(*10*201

*4 NHz

tDESBORDE ?? ? Si el pre-scalat màxim és,

segons el datasheet, de 8 i el valor màxim que podem carregar al timer és de65536 – 1 tenint en compte el complement a dos ?

msegonsst màximDESBORDE 1105.0 ??

Per carregar el valor al timer1, apliquem el mateix mètode que amb eltimer0.

;************incialitzem el timer 1************

ini_tmr1:

BSF STATUS,RP0

BCF PIE1,0

BCF STATUS,RP0

MOVLW 0x0BMOVWF TMR1H ;carreguem els valors al timer H i LMOVLW 0xDCMOVWF TMR1L

Page 105: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BSF STATUS,RP0

BSF PIE1,0

BCF STATUS,RP0

RETURN

Ara configurarem el conversor A/D.

;******************aquí configurem el conversor A/D *******************

ini_AD:

MOVLW 0xC1

;canal 0 (RA0), A/D està operatiu

MOVWF ADCON0

BSF STATUS,RP0MOVLW 0x08

MOVWF ADCON1

;he configurat que el resultat de la conversió siguin 10 bits;esquerres, i elegint tot el portA com un canal de conversió;analògic i d'aquesta manera perdo els 2 bits menys significatius

;BSF PIE1,ADIE

BCF STATUS,RP0

RETURN

;***** ara incialitzare els coeficients per poder convolucionar***************

ini_coeficients:

;**** COEFICIENTS DEL DESPERTADOR*********

;BSF STATUS,RP0

MOVLW 0xBB

MOVWF FSR

MOVLW 0x02MOVWF INDFINCF FSR,F

MOVLW 0x04MOVWF INDF

Page 106: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

INCF FSR,F

MOVLW 0x20MOVWF INDFINCF FSR,F

MOVLW 0x04MOVWF INDFINCF FSR,F

MOVLW 0x02MOVWF INDFINCF FSR,F

;******** COEFICIENTS DEL ALARMA**********

BSF STATUS,IRP ;anem al bank 2;BCF STATUS,RP0

CLRF FSR

MOVLW 0x3BMOVWF FSR

MOVLW 0x01MOVWF INDFINCF FSR,F

MOVLW 0x09MOVWF INDFINCF FSR,F

MOVLW 0x12MOVWF INDFINCF FSR,F

MOVLW 0x09MOVWF INDFINCF FSR,F

MOVLW 0x01MOVWF INDFINCF FSR,F

BCF STATUS,IRP ;tornem al bank0

RETURN

;***************normalitzare les energies***********

normalitzar_energies:

Page 107: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BANK0

MOVF energia_desp_LW,WMOVWF ACCbHIMOVF energia_desp_H,WMOVF ACCbLOMOVF suma_mostres_LW,WMOVWF ACCaHIMOVF suma_mostres_H,WMOVWF ACCaLO

call D_divSMOVF ACCdHI,WMOVWF energia_desp_HMOVF ACCdLO,WMOVWF energia_desp_L

MOVF energia_timb_LW,WMOVWF ACCbHIMOVF energia_timb_H,WMOVF ACCbLOMOVF suma_mostres_LW,WMOVWF ACCaHIMOVF suma_mostres_H,WMOVWF ACCaLO

call D_divSMOVF ACCdHI,WMOVWF energia_timb_HMOVF ACCdLO,WMOVWF energia_timb_L

MOVF energia_timb_H,WMOVWF ACCaHIMOVF energia_timb_L,WMOVWF ACCaLOMOVLW 0x27MOVWF ACCbHIMOVLW 0x10MOVWF ACCbLOcall D_mpysMOVF ACCdLO,WMOVWF energia_timb_HMOVF ACCcHI,WMOVWF energia_timb_LMOVF ACCcLO,WMOVWF quocient

banksel TMR0MOVF energia_timb_H,WMOVWF ACCbHIMOVF energia_timb_L,WMOVWF ACCbLOMOVLW 0x00

Page 108: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MOVWF ACCaHIMOVLW 0x24MOVWF ACCaLO

call D_divSMOVF ACCdLO,WMOVWF energia_timb_HMOVF quocient,WMOVWF energia_timb_L

CLRF ACCaHICLRF ACCaLOCLRF ACCbHICLRF ACCbLOCLRF ACCcHICLRF ACCcLOCLRF ACCdHICLRF ACCdLO

MOVF energia_desp_H,WMOVWF ACCaHIMOVF energia_desp_L,WMOVWF ACCaLOMOVLW 0x27MOVWF ACCbHIMOVLW 0x10MOVWF ACCbLOcall D_mpysMOVF ACCdLO,WMOVWF energia_desp_HMOVF ACCcHI,WMOVWF energia_desp_LMOVF ACCcLO,WMOVWF quocient

banksel TMR0MOVF energia_desp_H,WMOVWF ACCbHIMOVF energia_desp_L,WMOVWF ACCbLOMOVLW 0x00MOVWF ACCaHIMOVLW 0x2BMOVWF ACCaLO

call D_divSMOVF ACCdLO,WMOVWF energia_desp_HMOVF quocient,WMOVWF energia_desp_L

return

Page 109: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

;***********en aquesta funció actualitzo la cola de mostres*********

encolar2:

MOVF ADRESH,WSUBLW 0x80BTFSC STATUS,Cgoto d2MOVWF ACCbLOCOMF ACCbLO,FINCF ACCbLO,FMOVF ACCbLO,W

d2: MOVWF mostra ;mostra contindrà el valor de la mostra actual

ADDWF suma_mostres_LBTFSS STATUS,Cgoto d3INCF suma_mostres_H,FBTFSS STATUS,Zgoto d3INCF suma_mostres_LW,FCLRF suma_mostres_H

d3: MOVWF mostraMOVLW 0x70MOVWF FSR

MOVF conta_mostres,WSUBWF FSR

MOVF mostra,WMOVWF INDF

MOVF conta_mostres,WSUBLW 0x28BTFSS STATUS,Zgoto f1

CLRF conta_mostresMOVF 0x48,WMOVWF 0x74MOVF 0x49,WMOVWF 0x73MOVF 0x4A,WMOVWF 0x72MOVF 0x4B,WMOVWF 0x71

f1: nop

RETURN

Page 110: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

Ara multiplicarem els coeficients de Fourier amb la cola de mostres.

;************* convolucionem la cola de mostres**********

convolucionar:

INCF conta_tmr0_L,FBTFSS STATUS,Zgoto e3INCF conta_tmr0_H,FCLRF conta_tmr0_L

e3: CLRF index0CLRF index1CLRF index2

MOVLW D'05' ;inicialitzo el contador que recorrerà la cola amb un ;valor de 5, ja que la convolució es realitzarà amb 5

;mostres

MOVWF conta_cola

b2: MOVF conta_mostres,WSUBLW 0x70

MOVWF FSR

MOVF index0,W

ADDWF FSR,FMOVF INDF,W

MOVWF aux

MOVWF mulplr

INCF index0,F

;**************convolucionem amb el coeficient del despertador***********

MOVLW 0xBBMOVWF FSR

MOVF index1,W

ADDWF FSR,F

Page 111: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MOVF INDF,W

MOVWF coef_desp_H ;el contingut de la posició de memoria on;apunta l'FSR el mourem al coef_desp

INCF index1,F

INCF FSR,F

MOVF coef_desp_H,W

MOVWF mulcnd

CALL mpy8

MOVF L_byte,W

ADDWF energia_desp_L,F

BTFSS STATUS,C

goto d8

INCF energia_desp_H,F

BTFSS STATUS,Z

goto d8

INCF energia_desp_LW,FCLRF energia_desp_H

;****************convolucionem amb el coeficient del alarma*************

d8: BSF STATUS,IRP

MOVLW 0x3BMOVWF FSR

BCF STATUS,IRP

MOVF index2,W

BSF STATUS,IRP

ADDWF FSR,F

MOVF INDF,W

BCF STATUS,IRP

MOVWF coef_timb_H ;el contingut de la posició de memoria on ;apunta l'FSR el mourem al coef_timb_H

INCF index2,F

BSF STATUS,IRP

INCF FSR,F

Page 112: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BCF STATUS,IRP

MOVF aux,W

MOVWF mulplr

MOVF coef_timb_H,W

MOVWF mulcnd

CALL mpy8

MOVF L_byte,W

ADDWF energia_timb_L

BTFSS STATUS,C

goto b5

INCF energia_timb_H,F

BTFSS STATUS,Z

goto b5

INCF energia_timb_LW,FCLRF energia_timb_H

b5: DECFSZ conta_cola,F

goto b2

CLRF conta_cola

banksel TMR0

return

En la següent funció tractarem les energies resultants d’haver convolucionatles mostres durant 2 segons.

;*************************xarxa neuronal******************************

xarxa_neuro:

nop

banksel EEDATA

MOVLW 0x12MOVWF conta_punt

Page 113: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

MOVLW 0x01MOVWF punt

CLRF offset

call fcc

MOVLW 0x90MOVWF FSR

call fzm

MOVF suma_h,WMOVWF suma1_h

MOVF suma_l,WMOVWF suma1_l

R8: call agafar_valor_wijaCLRF PCLATHMOVLW 0x90MOVWF FSR

call fzand ;trobarem el minim entre el primer valor wija;i el primer valor del vector d'entrada

MOVLW 0xA0MOVWF FSR

MOVF mes_petit_h,WMOVWF INDFINCF FSR,F

MOVF mes_petit_l,WMOVWF INDFINCF FSR,F

call agafar_valor_wijaCLRF PCLATHMOVLW 0x90MOVWF FSR

call fzand ;trobarem el minim entre el segon valor wija;i el segon valor del vector d'entrada

MOVLW 0xA2MOVWF FSR

MOVF mes_petit_h,WMOVWF INDFINCF FSR,F

MOVF mes_petit_l,WMOVWF INDFINCF FSR,F

Page 114: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

call agafar_valor_wijaCLRF PCLATHMOVLW 0x90MOVWF FSR

call fzand ;trobarem el minim entre el tercer valor wija;i el tercer valor del vector d'entrada

MOVLW 0xA4MOVWF FSR

MOVF mes_petit_h,WMOVWF INDFINCF FSR,F

MOVF mes_petit_l,WMOVWF INDFINCF FSR,F

call agafar_valor_wija

CLRF PCLATHMOVLW 0x90MOVWF FSR

call fzand ;trobarem el minim entre el quart valor wija;i el quart valor del vecor d'entrada

MOVLW 0xA6MOVWF FSR

MOVF mes_petit_h,WMOVWF INDFINCF FSR,F

MOVF mes_petit_l,WMOVWF INDFINCF FSR,F

MOVLW 0xA0MOVWF FSR

call fzm

MOVF suma_h,WMOVWF suma2_h

MOVF suma_l,WMOVWF suma2_l

MOVF suma1_h,W

Page 115: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

BCF STATUS,IRPbanksel TMR0

MOVLW 0x4C

MOVWF ACCaHI

banksel EEDATAMOVF suma1_l,W

banksel TMR0MOVWF ACCaLObanksel EEDATAMOVF suma2_h,W

banksel TMR0MOVWF ACCbHI

banksel EEDATAMOVF suma2_l,W

banksel TMR0MOVWF ACCbLO

call D_divS

MOVF ACCdHI,W

banksel EEDATAMOVWF comparate1_h

banksel TMR0MOVF ACCdLO,W

banksel EEDATAMOVWF comparate1_l

MOVLW 0x00MOVWF comparate2_h

MOVLW 0x01MOVWF comparate2_l

call comparacio

DECFSZ conta_punt

BTFSC igual,0

goto R10

goto R7

goto R10

R7: BTFSS segon,0

goto R10

INCF punt,F

Page 116: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

goto R8

; goto R7

nopbanksel TMR0

R10:

RETURN

;***************aquesta funcio realitza el complememtari*****************

fcc:

BCF STATUS,IRP

banksel TMR0

MOVLW 0x27 ;carrego el valor de 10000 decimalMOVWF ACCbHIMOVLW 0x10MOVWF ACCbLO

MOVF energia_desp_H,WMOVWF ACCaHI

;BCF STATUS,RP0banksel EECON1

MOVWF 0x190

banksel TMR0

MOVF energia_desp_L,WMOVWF ACCaLO

banksel EECON1

MOVWF 0x191

banksel TMR0

call D_sub

MOVF ACCbHI,W

banksel EECON1

MOVWF 0x194

Page 117: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

banksel TMR0

MOVF ACCbLO,W

banksel EECON1

MOVWF 0x195

banksel TMR0

MOVLW 0x27 ;carrego el valor de 10000 decimalMOVWF ACCbHIMOVLW 0x10MOVWF ACCbLO

MOVF energia_timb_H,WMOVWF ACCaHI

banksel EECON1

MOVWF 0x192

banksel TMR0

MOVF energia_timb_L,WMOVWF ACCaLO

banksel EECON1

MOVWF 0x193

banksel TMR0

call D_sub

MOVF ACCbHI,W

banksel EECON1

MOVWF 0x196

banksel TMR0

MOVF ACCbLO,W

banksel EECON1

MOVWF 0x197

banksel TMR0

RETURN

Page 118: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

;**************aquesta funcio troba el minim de dos numeros**************

fzand:

CLRF mes_petit_hCLRF mes_petit_l

BSF STATUS,IRP

;MOVLW 0x90;MOVWF FSR

MOVF INDF,WMOVWF mes_petit_hMOVF mes_petit_h,WMOVWF comparate1_hINCF FSR,F

MOVF INDF,WMOVWF mes_petit_lMOVF mes_petit_l,WMOVWF comparate1_lINCF FSR,F

MOVF wija_H,WMOVWF comparate2_h

MOVF wija_L,WMOVWF comparate2_l

call comparacio

BTFSS primer,0 ;si el segon es mes petit canvio el valor de

;mes petitgoto R6

MOVF comparate2_h,WMOVWF mes_petit_hMOVF comparate2_l,WMOVWF mes_petit_l

R6: RETURN

;****aquesta funcio realitza la suma de un nombre de bytes definits per conta_fzm****

fzm:

banksel EEDATACLRF suma_hCLRF suma_l

MOVLW 0x02MOVWF conta_vegades

Page 119: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

banksel TMR0

BSF STATUS,IRP;MOVLW 0x90;MOVWF FSR

R3: nop

banksel TMR0

BSF STATUS,IRP

MOVF INDF,W

BCF STATUS,IRP

MOVWF ACCaHIBSF STATUS,IRPINCF FSR,FMOVF INDF,WBCF STATUS,IRPMOVWF ACCaLOBSF STATUS,IRPINCF FSR,FMOVF INDF,WBCF STATUS,IRPMOVWF ACCbHIBSF STATUS,IRPINCF FSR,FMOVF INDF,WBCF STATUS,IRPMOVWF ACCbLOBSF STATUS,IRPINCF FSR,F

BCF STATUS,IRP

call D_add

banksel EEDATA

MOVF suma_l,Wbanksel TMR0MOVWF ACCaLO

banksel EEDATAMOVF suma_h,Wbanksel TMR0MOVWF ACCaHIcall D_add

MOVF ACCbHI,Wbanksel EEDATAMOVWF suma_hbanksel TMR0MOVF ACCbLO,Wbanksel EEDATAMOVWF suma_l

Page 120: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

DECFSZ conta_vegades,FGOTO R3

RETURN

;*****************aquest funció compara dos números************************

comparacio:

CLRF primerCLRF segonCLRF igualMOVF comparate2_h,WSUBWF comparate1_h,WBTFSS STATUS,Cgoto t9BTFSS STATUS,Zgoto t8MOVF comparate2_l,WSUBWF comparate1_l,WBTFSS STATUS,Cgoto t9BTFSS STATUS,Zgoto t8goto t10

t8: INCF primer,F

goto t11

t9: INCF segon,F

goto t11

t10: INCF igual,F

t11: RETURN

;*************** aquí comprovarem si coneixem el so i quina classe és*************

reconeixer:

nop

banksel PR2

CLRF TRISBbanksel TMR0

Page 121: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

CLRF PORTB

banksel EEDATA

MOVF punt,W

MOVWF offset

SUBLW 0xFF

BTFSS STATUS,Zgoto a2INCF over_pclath2,F

CLRF offset

a2: MOVLW 0x05MOVWF PCLATH

CALL taula2

CLRF PCLATH

MOVWF clase

SUBLW 0x01

BTFSC STATUS,Z

BSF PORTB,3

MOVF clase,W

SUBLW 0x02

BTFSC STATUS,Z

BSF PORTB,2

MOVF clase,W

SUBLW 0x03

BTFSC STATUS,Z

BSF PORTB,1

banksel TMR0

return

;**********aquest algorisme realitza la resta de dos numeros de 16 bits**************

D_sub:

MOVF ACCaLO,W

Page 122: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

SUBWF ACCbLO,FBTFSS STATUS,CINCF ACCaHI,FMOVF ACCaHI,WSUBWF ACCbHI,FRETURN

;**********aquest algorisme realitza la suma de dos numeros de 16 bits**************

D_add:

MOVF ACCaLO,WADDWF ACCbLO,F ;sumo els bits més significatiusMOVF ACCaHI,WADDWF ACCbHI,F ;sumo la part alta amb el carry

return

;*****************aquest algotirme fa la multiplicació de 8bits*************

mpy8:

CLRF H_byteCLRF L_byteCLRF countBSF count,3 ;configuro count=8MOVF mulcnd,WBCF STATUS,C ;netejo el bit de carry en el STATUS register

loop:BTFSC mulplr,0ADDWF H_byte,FRRF H_byte,FRRF L_byte,FRRF mulplr,FDECFSZ count,Fgoto loop

return

;**************aquest algoritme fa la multiplicació de dos números de 16 bits*********

D_mpys:

CLRF countBSF count,4 ;activo el compator a 16

MOVF ACCbLO,WMOVWF tempLoMOVF ACCbHI,WMOVWF tempHi

CLRF ACCdHI

Page 123: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

CLRF ACCdLO

;salto a la dreta i sump 16 vegades al registre

mpyLoop:

RRF tempHi,FRRF tempLo,FBTFSS STATUS,CGOTO NoAdd ;si la part mes baixa es 0 no necessita sumar-li

MOVF ACCaLO,WADDWF ACCdLO,F ;li sumo a la part menys significativa

MOVF ACCaHI,WADDWF ACCdHI,F ;li sumo a la part mes significativa

NoAdd:

RRF ACCdHI,FRRF ACCdLO,FRRF ACCcHI,FRRF ACCcLO,FDECFSZ count,FGOTO mpyLoop

RETURN

;***************aquest algoritme realitza la divisió de dos números de 16 bits*********

D_divS:

CLRF countBSF count,4 ;configurem count=16CLRF ACCcHICLRF ACCcLOCLRF ACCdLOCLRF ACCdHI

divLoop

BCF STATUS,CRLF ACCbLO,FRLF ACCbHI,FRLF ACCcLO,FRLF ACCcHI,FMOVF ACCaHI,WSUBWF ACCcHI,W;comprovem si a>cBTFSS STATUS,ZGOTO notzMOVF ACCaLO,WSUBWF ACCcLO,W;si la part alta es igual despres comprovo la part alta

Page 124: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

notz

BTFSS STATUS,C;el carry se activa si a>cgoto nosub ;si c>a

subca

MOVF ACCaLO,WSUBWF ACCcLO,FMOVF ACCaHI,WSUBWF ACCcHI,FBSF STATUS,C;salto a 1 en d (el resultado)

nosub

RLF ACCdLO,FRLF ACCdHI,FDECFSZ count,Fgoto divLoop

RETURN

;***amb aquesta funció agafarem un valor de la taula de paràmetres d'entrenament wija***

agafar_valor_wija:

banksel EEDATA

MOVF offset,W

SUBLW 0xFC

BTFSS STATUS,Zgoto a1INCF over_pclath1,F

CLRF offset

a1: MOVLW 0x04MOVWF PCLATH

CALL taula1

CLRF PCLATH

MOVWF wija_H

INCF offset,F

MOVF offset,W

MOVLW 0x04MOVWF PCLATH

CALL taula1

Page 125: DESARROLLO DE VISUALIZADOR DE ALARMAS SONORASdeeea.urv.cat/public/PROPOSTES/pub/pdf/386pub.pdf · - Micròfon PC - Matlab 5.1 La targetasoundblaster l’hem utilitzada per fer les

CLRF PCLATH

MOVWF wija_L

INCF offset,F

RETURN

org 0x400

taula1:

MOVF over_pclath1,W ADDWF PCLATH,F

MOVF offset,W ADDWF PCL,F

DT0x27,0x0C,0x27,0x0C,0x00,0x01,0x00,0x01,0x27,0x0F,0x27,0x0F,0x00,0x00,0x00,0x00,0x27,0x0A,0x27,0x0A,0x00,0x05,0x00,0x05,0x0D,0x43,0x0D,0x43,0x19,0xCD,0x19,0xCD,0x0B,0xBB,0x0B,0xBB DT0x1B,0x55,0x1B,0x55,0x0C,0xB6,0x0C,0xB6,0x1A,0x5A,0x1A,0x5A,0x08,0x5F,0x08,0x5F,0x1E,0xB1,0x1E,0xB1,0x08,0xFC,0x08,0xFC,0x1E,0x14,0x1E,0x14,0x09,0x42,0x09,0x42,0x1D,0xCE,0x1D,0xCEDT0x0A,0x2E,0x0A,0x2E,0x1C,0xE2,0x1C,0xE2,0x0B,0xC0,0x0B,0xC0,0x1B,0x50,0x1B,0x50,0x0B,0x87,0x0B,0x87,0x1B,0x89,0x1B,0x89,0x0C,0x39,0x0C,0x39,0x1A,0xD7,0x1A,0xD7,0x27,0x0C,0x27,0x0CDT0x00,0x04,0x00,0x04,0x27,0x10,0x27,0x10,0x00,0x00,0x00,0x00,0x27,0x0D,0x27,0x0D,0x00,0x03,0x00,0x03,0x27,0x0F,0x27,0x0F,0x00,0x01,0x00,0x01,0x27,0x10,0x27,0x10,0x27,0x10,0x27,0x10

org 0x500

taula2:

MOVF over_pclath2,W ADDWF PCLATH,F MOVF offset,W ADDWF PCL,F

DT0x00,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x01,0x02,0x03

end