Mobilna aplikacija za analizo zvoka avtomobilskega motorja

Velikost: px
Začni prikazovanje s strani:

Download "Mobilna aplikacija za analizo zvoka avtomobilskega motorja"

Transkripcija

1 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Urban Kobal Mobilna aplikacija za analizo zvoka avtomobilskega motorja DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Mentor: doc. dr. Luka Šajn Ljubljana, 2019

2 Copyright. Rezultati diplomske naloge so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavo in koriščenje rezultatov diplomske naloge je potrebno pisno privoljenje avtorja, Fakultete za računalništvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil L A TEX.

3 Fakulteta za računalništvo in informatiko izdaja naslednjo nalogo: Tematika naloge: V okviru diplomske naloge izdelajte mobilno aplikacijo za operacijski sistem android, ki s poslušanjem preko vgrajenega mikrofona mobilne naprave, prepozna obrate na minuto motorja z notranjim izgorevanjem.preučite različne metode za dosego cilja. Aplikacija naj bo sposobna izračunati obrate različnih tipov motorja z notranjim izgorevanjem. Aplikacijo tudi ustrezno testirajte.

4

5 Zahvaljujem se staršem za podporo pri študiju, posebej še očetu za pomoč pri diplomi. Zahvaljujem se tudi vsem sostanovalcem in prijateljem za lepo doživeta študijska leta.

6

7

8

9 Kazalo Povzetek Abstract 1 Uvod 1 2 Uporabljena orodja, tehnologije in naprave Operacijski sistem Android Razvojno okolje Android Studio Programski jezik Java Fourierjeva transformacija Mobilne naprave Motor z notranjim zgorevanjem in osnove tahometra Opis delovanja motorja z notranjim zgorevanjem Opis tahometra Razvoj mobilne aplikacije Frekvenčna analiza Ključni razredi za delovanje aplikacije Opis aplikacije, testiranje in primerjava Grafični vmesnik Primerjava in testiranje

10 6 Sklepne ugotovitve Možne nadgradnje Spremna misel Literatura 34

11 Seznam uporabljenih kratic kratica angleško slovensko FFT Fast Fourier transform Hitra Fourierjeva transformacija DFT Discrete Fourier transform Diskretna Fourierjeva transformacija IFFT Inverse fast Fourier transform Inverzna Fourierjeva transformacija RPM Revolutions per minute Obrati na minuto

12

13 Povzetek Naslov: Mobilna aplikacija za analizo zvoka avtomobilskega motorja Avtor: Urban Kobal Danes se z mobilnimi aplikacijami srečujemo praktično na vsakem koraku, tako da so nam postale že domače. Uporabljajo se na čedalje več področjih, vendar jih je malo, ki bi nam pomagale pri delu z avtomobili ali drugimi prevoznimi ali delovnimi sredstvi, ki za svoje delo ali pogon uporabljajo motor z notranjim zgorevanjem. Cilj diplomskega dela je bil razviti mobilno androidno aplikacijo, ki na podlagi analize zvoka pravilno prepozna število obratov na motorju z notranjim zgorevanjem. V diplomskem delu so predstavljena orodja in tehnologije, ki so bile uporabljene pri izdelavi, ter različni tipi motorjev in naprav, ki so se ali se še uporabljajo za meritve obratov motorja. Prikazani so tudi različni načini kako s frekvenčno analizo zvoka pridemo do obratov motorja. Na koncu je predstavljena še primerjava rezultatov pridobljenih z mobilno aplikacijo in napravo za merjenje obratov motorja, ki se uporablja na tehničnih pregledih. Ključne besede: frekvenčna analiza, android, FFT, RPM.

14

15 Abstract Title: Mobile application for analysing sound of car engine Author: Urban Kobal Today mobile applications are practically everywhere, they are used in every step and on more and more areas. But when we are talking about cars, vehicles and other machines that use combustion engine for their drive or doing work, there are not so many applications for mobile devices. The goal of this thesis was to develop an application witch by using a microphone of mobile devices will be able to calculate and determine as exact as possible number of rotations of engine per minute. In this document, we present technologies, devices, and tools which were used in our thesis, we also present different tools and devices which were used or are still used for determining engine rotations per minute. We also show different methods of frequency analysis. And in the end, we show how tested our application in real life situation compare with professional equipment. Keywords: frequency analysis, android, FFT, RPM.

16

17 Poglavje 1 Uvod Tahometer je instrument, ki meri vrtilno hitrost gredi ali diska. Znan je tudi po drugih izrazih, vključno z merilnikom števila vrtljajev. Merilnik navadno prikazuje vrtljaje na minuto (RPM) na kalibriranem analognem ali digitalnem prikazovalniku. Na vozilu, kot je avto ali motorno kolo, merilnik vrtljajev meri stopnjo vrtenja motorne ročične gredi. Vozniki lahko s pomočjo tahometra na prikazovalniku ocenijo hitrost motorja in ustrezno reagirajo. Na vsakem prikazovalniku so prikazani največji še varni obrati za določen motor. Prekoračitev te omejitve lahko povzroči poškodbe motorja ali njegovo popolno odpoved. Prvi tahometer naj bi leta 1817 razvil nemški inženir Dietrich Uhlhorn, danes pa so vgrajeni že v skoraj vsakem avtomobilu in motorju. Ker pa niso vgrajeni v prav vsakem avtomobilu ali delovnem stroju, kot so na primer starejši traktorji in ostali delovni stroji, smo se pri diplomski nalogi odločili izdelati mobilno aplikacijo, ki bi bila sposobna sama v resničnem času zaznavati obrate motorja. Če vemo natančne obrate motorja, se lahko izognemo hujšim poškodbam motorja, smo bolj ekonomični z gorivom, ker skrbimo za vrtenje motorja na idealnih obratih za dano prestavo itd. Aplikacija pa je morala biti tudi dovolj enostavna za uporabo, da jo lahko uporabljajo tudi manj vešči uporabniki ter dovolj fleksibilna, da jo lahko uporabljamo na različnih tipih motorja. Cilj naloge je bil torej narediti mobilno aplikacijo za platformo Android, 1

18 2 Urban Kobal ki je sposobna z minimalnim uporabniškim vnosom izračunati obrate tako na avtomobilskih motorjih kot na mopedih in na drugih delovnih sredstvih, kot so bencinske kosilnice in podobno. Drugi cilj naloge je omenjeno aplikacijo testirati na realnem problemu in sicer pri tehničnih pregledih avtomobilov. V nadaljevanju besedila so opisana orodja in tehnologije, ki smo jih uporabili pri diplomski nalogi. V drugem poglavju si pogledamo, kako je sploh mogoče na podlagi zvoka motorja izračunati obrate motorja ter kako deluje klasičen tahometer ter motor z notranjim zgorevanjem. Razvoj aplikacije, glavni algoritmi pri različnih fazah razvoja aplikacije in struktura same aplikacije so opisani v četrtem poglavju. V petem poglavju pa sta na hitro opisana še grafična podoba aplikacije in njeno testiranje v realnem okolju na tehničnih pregledih Ajdovščina.

19 Poglavje 2 Uporabljena orodja, tehnologije in naprave Pri izdelavi aplikacije smo se odločili za odprto platformo Android, ker je bila najbolj dostopna ter zaradi prejšnjih dobrih izkušenj pri delu z njo. Za razvijanje na tej platformi smo uporabili razvojno okolje Android Studio, ki je namenjeno razvijanju izključno za operacijski sistem Android. Na kratko je opisana tudi hitra Fourierjeva transformacija, uporabljen programski jezik Java in uporabljena mobilna telefona OnePlus One in Samsung A Operacijski sistem Android Operacijski sistem Android je odprtokodni operacijski sistem, primarno namenjen mobilnim napravam [2]. Je en izmed največkrat nameščenih operacijskih sistemov na elektronskih napravah, mobilnih napravah, najdemo pa ga tudi na pametnih televizorjih, tabličnih računalnikih, pametnih urah, ročnih računalnikih (ang. PDA) ter avtomobilih. Sprogramiran je večinoma v programskem jeziku Java in bazira na prav tako odprtokodnem operacijskem sistemu Linux. Razvit je bil s strani istoimenskega podjetja Android, kasneje pa ga je kupilo in vzelo pod okrilje podjetje Google. Leta 2007 se je oblikoval konzorcij podjetij, ki proizvajajo mobilne naprave ali program- 3

20 4 Urban Kobal sko opremo zanje, imenovan Open Handset Alliance. Ta skrbi, da platforma Android ostaja odprtokodna (ang. open source) ter za njen nadaljnji razvoj. Zadnja različica sistema verzija 9, imenovana Pie oz. pita, je izšla [3, 10]. 2.2 Razvojno okolje Android Studio Android Studio je uradno razvojno okolje (IDE) za operacijski sistem Android. Temelji na programski opremi JetBrains IntelliJ IDEA in je zasnovan posebej za razvoj Androida. Na voljo za prenos je na operacijskih sistemih Windows, MacOS in Linux. To okolje je zamenjava za razvojna orodja Eclipse Android (ADT) kot primarni IDE za razvoj aplikacij za Android [20]. Glavne značilnosti Android Studia so enostavno popravljanje in iskanje napak (ang. debuging), bogat nabor elementov za uporabniški vmesnik, ki jih lahko preprosto povlečemo na zaslon (ang. drag and drop), uporaba Android psevdonaprave, ki nam omogoča testiranje aplikacij brez uporabe fizične naprave. V verziji 3.0 je bila dodana še podpora androidovi nosljivi tehnologiji (pametne ure itd.). 2.3 Programski jezik Java Programski jezik Java je programski jezik tako imenovane 3. generacije, ki ga je razvilo podjetje Sun Microsystem. Je splošno namenski jezik uporaben za vse vrste aplikacij, tako namizne kot spletne in seveda tudi mobilne. Možno ga je izvajati tudi na mikroprocesorjih, tako se lahko uporablja tudi na gospodinjskih aparatih. Glavne prednosti programskega jezika Java so objektna usmerjenost, varnost ter neodvisnost od platforme. Glavna značilnost programskega jezika Java je, da se lahko prevedena programska koda, brez potrebe po vnovičnem prevajanju, izvaja na vseh platformah, ki podpirajo Javo. Javanske aplikacije so tipično prevedene v t. i. bytecode, ki se potem lahko izvaja na katerem koli javanskem navideznem stroju (JVM),

21 Mobilna aplikacija za analizo zvoka avtomobilskega motorja 5 ne glede na arhitekturo računalnika na katerem je JVM [1]. Pomembno za našo diplomsko nalogo pa je, da je Java primarni jezik za pisanje aplikacij za Android. 2.4 Fourierjeva transformacija Fourierova transformacija je matematična funkcija, ki se lahko uporablja za prikaz različnih delov neprekinjenega signala. Največ se uporablja za pretvorbo iz časovne v frekvenčno domeno. Fourierove transformacije se pogosto uporabljajo za izračun frekvenčnega spektra signala, ki se sčasoma spreminja. Ta vrsta obdelave signalov ima veliko uporab, kot so obdelava signalov, kriptografija, oceanografija, prepoznavanje govora ali prepoznavanje rokopisa. Fourierove transformacije lahko uporabimo tudi za reševanje diferencialnih enačb. Fourierova transformacija pokaže katere frekvence so v signalu. Na primer: imamo zvočni val, ki vsebuje tri različne glasbene note: A, B in C. Ustvarjanje grafa Fourierove transformacije tega zvočnega vala bo pri vsaki frekvenci pokazal svoj vrhunec, ki ustreza eni od glasbenih not. Številne signale je mogoče ustvariti s seštevanjem kosinusov in sinusov z različnimi amplitudami in frekvencami. Fourierova transformacija nariše amplitude in faze teh kosinusov in sinusov glede na njihove frekvence. Fourierove transformacije so pomembne, ker so številni signali bolj smiselni, ko jih ločimo na njihove frekvence [14]. V diplomski nalogi uporabljamo različico originalne Fourierjeve transformacije imenovano hitra Fourierjeva transformacija. Ta izhaja iz različice Fourierjeve transformacije imenovane diskretna Fourierjeva transformacija (DFT). Razlika med diskretno in originalno Fourierjevo transformacijo je, da transformacija DFT uporablja končno število vhodnih podatkov, medtem ko originalna transformacija uporablja neskončno funkcijo za vhod [6]. Za računalniške sisteme je tako bolj priročna izvedba DFT originalne funkcije.

22 6 Urban Kobal 2.5 Mobilne naprave V sklopu diplomskega dela sta bili za potrebe testiranja in implementacije uporabljeni mobilni napravi OnePlus One in Samsung A3. Oba telefona temeljita na operacijskem sistemu Android. Prvi ima nameščeno verzijo 6.0.1, Samsung pa uporablja verzijo Obe mobilni napravi smo uporabili v fazi razvoja aplikacije, da smo lahko primerjali hitrosti in postavitev elementov na ekranu. V fazi testiranja pa smo uporabljali samo OnePlus One, ker Samsung ni bil na voljo.

23 Poglavje 3 Motor z notranjim zgorevanjem in osnove tahometra Ker je tema diplomske naloge tesno povezana z avtomobilskim motorjem in njegovim delovanjem, bomo v naslednjih odstavkih najprej opisali, kako deluje motor z notranjim zgorevanjem ter kateri tipi teh motorjev obstajajo. Pomembno je, da razumemo, kje se ustvari pok, na podlagi katerega izračunamo frekvenco obratov avtomobila. Na koncu bomo pogledali še različne vrste tahometrov. 3.1 Opis delovanja motorja z notranjim zgorevanjem Motor z notranjim zgorevanjem je motor, v katerem se zgorevanje ali sežig goriva skupaj z oksidantom (običajno zrak) odvija v zgorevalni komori, ki je temeljni del delovanja motorja z notranjim zgorevanjem (v nasprotju z motorjem z zunanjim zgorevanjem, kjer se sežig zgodi zunaj motorja, npr. parne lokomotive). V takem motorju širjenje, z zgorevanjem nastalega, segretega in stisnjenega, plina uporabljamo za povzročitev sile na neki drugi del motorja. Sila se običajno uporablja za pomikanje batov, lopatic, turbin ali rotorjev. Sila premakne komponente na daljavo in tako pretvarja kemij- 7

24 8 Urban Kobal sko energijo v mehansko, ki je bolj priročna [7]. Izraz motor z notranjim zgorevanjem se običajno nanaša na motor pri katerem zgorevanje ni konstantno, temveč poteka v več korakih taktih, kot na primer pri štiritaktnih ali dvotaktnih batnih motorjih, ki bodo bolj natančno obrazloženi v nadaljevanju [5].Poznamo tudi 6-taktne motorje in wanklov motor, ki pa niso preveč pogosti in zato v nalogi ne bodo predstavljeni. Drugi motorji, ki prav tako spadajo med motorje z notranjim zgorevanjem, a jih običajno ne prepoznamo pod tem imenom, so plinske turbine, reaktivni motorji in večina raketnih motorjev. Pod ta izraz bi lahko dodali tudi strelno orožje, ki ga tudi lahko uvrščamo k motorjem z notranjim zgorevanjem. Za potrebe diplomske naloge moramo poznati tudi različne vrste motorjev z notranjim zgorevanjem, ki se uporabljajo v vsakdanjem okolju. Delitev je sicer več: poznamo delitev glede na izmenjavo zraka in dimnih plinov, to je predvsem delitev na dvotaktne in štiritaktne motorje to delitev smo že spoznali in jo bomo podrobneje opisali v naslednjih odstavkih. Poznana je tudi delitev glede na vžig in zgorevanje, kamor uvrščamo predvsem dizelski in bezinski (Ottov motor) (ta delitev za potrebe diplomske naloge ni ključna), poznamo pa tudi delitev glede na konstrukcijo in število cilindrov. Pri tej delitvi poznamo od enocilindrskih pa vse do 42-cilindrskih motorjev, najbolj pogosti pri današnjih avtomobilih pa so 4-cilindrski (po nekaterih ocenah okoli 38% trga [13]), 6-cilindrski in 8-cilindrski motorji, ki so predvsem v zmogljivejših avtomobilih Štiritaktni motor Štiritaktni motor je motor, pri katerem bat opravi štiri ločene takte in tako obrne ročično gred. Takt se nanaša na polno potovanje bata vzdolž cilindra v obeh smereh. Pri motorjih z notranjim zgorevanjem se zažge zelo majhna količina bencina, ki v valju ustvari nadzorovano eksplozijo. V štiritaktnem motorju energija iz eksplozije potisne bat v motorju, da se premakne v valju. Vsak bat dopolnjuje štiri ločene faze v tem gibalnem ciklu: vnos, stiskanje, zgorevanje in izpuh plinov. Med vstopnim taktom se bat premika od vrha do

25 Mobilna aplikacija za analizo zvoka avtomobilskega motorja 9 dna cilindra, mešanica bencina in zraka pa pride v motor. Stiskalni takt se pojavi, ko se bat pomakne nazaj na vrh cilindra, pri čemer stisne mešanico plina in zraka. V zgorevalnem taktu vžigalna svečka vžge mešanico plina in zraka v valju, posledična eksplozija pa bat spet spusti. Končno se izvede izpušni takt, ko se bat vrne na vrh cilindra in potisne izpušne pline v izpušni sistem iz motorja [8]. Sesanje Sesanje (Slika 3.2), lahko imenovano tudi indukcija. Takt bata se začne na vrhu cilindra in se konča na dnu cilindra. Pri tem mora biti sesalni ventil na odprtem položaju, medtem ko bat potegne mešanico goriva in zraka v cilinder preko proizvajanja vakuumskega tlaka v cilindru s pomikom navzdol. Bat se premika navzdol, to pa povzroči sesanje zraka v cilinder [9]. Slika 3.1: Začetno stanje štiritaktnega motorja. Slika 3.2: Prvi takt štiritaktnega motorja. (Povzeto po spletni strani https: (Povzeto po spletni strani https: //en.wikipedia.org/wiki/fourstroke_engine) //en.wikipedia.org/wiki/fourstroke_engine) Stiskanje Ta takt se začne na spodnjem koncu cilindra oziroma na koncu sesalnega takta in se konča na vrhu cilindra. V tem taktu bat stisne zmes zraka in

26 10 Urban Kobal goriva v pripravi na tretji takt ali vžig. Na tej stopnji sta zaprta tako sesalna kot tudi izpušna ventila(slika 3.3) [9]. Slika 3.3: Drugi takt štiritaktnega motorja. (Povzeto po spletni strani Zgorevanje Znano tudi kot delo ali vžig(slika 3.4). To je začetek drugega dela štiritaktnega cikla. Na tej točki je ročična gred zaključila celoten 360-stopinjski obrat. Ko je bat v najbolj zgornji točki svojega premika po cilindru (konec drugega takta), se mešanica stisnjenega zraka in goriva vžge z vžigalno svečko (v bencinskem motorju) ali s toploto, ki jo generira visok pritisk v cilindru (dizelski motor). To povzroči gorenje zmesi in ker se pri zgorevanju plin razširja, potisne bat ponovno navzdol. Bat pri tem opravi mehansko delo in zavrti ročično gred motorja [8] [9]. Izpuh Sesalni ventil je zaprt(slika 3.6). Bat med gibanjem navzgor potiska ostanke izgorevanja skozi odprt izpušni ventil. Na koncu tega takta se sesalni ventil odpre, izpušni ventil pa zapre. Nato se ponovi ves proces znova s prvim taktom [8] [9].

27 Mobilna aplikacija za analizo zvoka avtomobilskega motorja11 Slika 3.4: Vžig goriva v štiritaktnem motorju. Slika 3.5: Tretji takt v štiritaktnem motorju. (Povzeto po spletni strani https: (Povzeto po spletni strani https: //en.wikipedia.org/wiki/fourstroke_engine) //en.wikipedia.org/wiki/fourstroke_engine) Slika 3.6: Četrti takt štiritaktnega motorja Dvotaktni motor Dvotaktni motor je tip motorja z notranjim zgorevanjem, pri katerem se en delovni cikel zaključi z dvema hodoma bata med samo enim vrtenjem ročične gredi. Dvotaktni motor izvede enake korake, ki jih izvaja 4-taktni motor sesanje, stiskanje, zgorevanje in izpuh, vendar 2-taktni motor izvede vse te korake v samo dveh taktih, 4-taktni pa zaključi en cikel v 4-taktnih korakih. Najmanjši bencinski motorji so navadno dvotaktni in imajo večje razmerje med težo in močjo v primerjavi s štiritaktnimi motorji. So enostavni in zato v primerjavi s štiritaktnimi motorji cenejši za proizvodnjo [8].

28 12 Urban Kobal Prvi takt V prvem taktu se bat premakne iz dna cilindra na vrh cilindra, da dovoli svežemu zraku vstop v zgorevalno komoro (uplinjač). Mešanica goriva in zraka dostopa do komore skozi spodnji del motorja [8]. Drugi takt V drugem taktu se bat giblje od zgornje proti spodnji legi. Stisnjeno mešanico goriva vžge svečka. Ko se zmes vžge, se začne razširjati in plini potisnejo bat navzdol. Pri pomikanju bata navzdol se vhod odpre in zmes zraka in goriva se vsesa v ohišje ročične gredi. Drugi takt se začne, ko se bat vrača proti vrhu in začne stiskati zmes. To ustvari delni vakuum in iz ohišja potegne zmes v zgorevalno komoro za nov takt. Ko bat doseže zgornji del cilindra, se svečka vžge in cikel se ponovi [8]. Slika 3.7: Presek dvotaktnega motorja. (Povzeto po spletni strani

29 Mobilna aplikacija za analizo zvoka avtomobilskega motorja Opis tahometra Tahometer ali števec vrtljajev, je priprava za merjenje vrtilne hitrosti gredi ali diska, na primer v motorju ali drugem stroju. Na analognem ali digitalnem števcu navadno prikazuje vrtljaje na minuto (RPM). Besedi tahometer in merilnik hitrosti imata enak pomen: obe opisujeta napravo, ki meri hitrost. V splošnem pa se v avtomobilskem svetu beseda tahometer uporablja za merejenje hitrosti motorjev, druga pa za hitrost vozila [19] Osnove tahometrov Tahometer voznikom z osnovnim razumevanjem delovanja avtomobilskega motorja omogoča, da izboljšajo svojo varnost na cesti in povečajo učinkovitost delovanja motorja. Tahometer je pomemben merilnik v vozilih z ročnim menjalnikom. Mnogi vozniki prestavljajo z ene prestave v drugo tako, da poslušajo zvok motorja, drugi pa gledajo tahometer za najvišjo vrednost RPM, ki jim pokaže kdaj naj prestavijo. Namen tahometra je preprečiti čezmerne obrate motorja, saj to lahko povzroči pregrevanje in druge poškodbe. Tahometri dajejo koristne informacije tudi vozniku vozila z avtomatskim menjalnikom, saj lahko dokaj hitro opazi ali je avtomobil prehitro ali prepočasi prestavil. Prav tako lahko pri vožnji v klanec tahometer nakaže, da je čas za nižjo prestavo Vrste tahometrov V osnovi vse izvedbe tahometra delujejo po istem principu in sicer tako, da merijo tresljaje, ki jih proizvaja vrteče se telo. Poznamo celo vrsto tahometrov: od najbolj osnovnih instrumentov, ki so sestavljeni le iz žice in ohišja, pa do zelo kompleksnih laserskih merilnikov. V nadaljevanju bom predstavil nekaj različnih izvedb.

30 14 Urban Kobal Vibra-Tak Kot kemični svinčnik velika naprava je sestavljena iz ohišja in umerjene žice, ki vibrira(slika 3.8). Z njo lahko s precejšno natančnostjo izmerimo vse od pa do RPM. Deluje tako, da ohišje prislonimo na motor in premikamo žico ven in noter, dokler vizualno ne dobimo točke, pri kateri žica najbolj vibrira [16]. Slika 3.8: Vibra-Tak tahometer (Povzeto po spletni strani Elektronski tahometer To je najbolj pogost tip tahometra, ki je vgrajen v sodobnih avtomobilih. Deluje na podlagi električnega toka, ki ga proizvaja vrtenje motorja; ta tok izmerimo in na podlagi tega prikažemo ustrezno vrednost. V večini avtomobilov je ta vrednost prikazana analogno s kazalcem na armaturni plošči, vse bolj pa se uporabljajo in vgrajujejo tudi digitalne različice. Čeprav je digitalno prikazovanje različno in računalniško regulirano, pa je v osnovi enako kot v analognih različicah [18] (Slika 3.9).

31 Mobilna aplikacija za analizo zvoka avtomobilskega motorja15 Slika 3.9: Shematski primer zgradbe in delovanja elektronskega tahometera (Povzeto po spletni strani Laserski tahometer Laserski tahometer (Slika 3.10) uporablja za merjenje hitrosti vrtenja gredi, kolesa ali katerega koli drugega vrtljivega predmeta, infrardečo svetlobo. Za delo laserskega tahometra je potrebno le, da je na površini predmeta barvni kontrast. Infrardeča svetloba iz tahometra se odbije od odbojnih mest in se zazna na detektorju, ki je na tahometru. Detektor zazna spremembo odbite svetlobe, ki se izmenično odbija od površine predmeta in kontrastnega mesta. Število frekvenčnih sprememb na enoto časa omogoča izračun hitrosti vrtenja predmeta. Slika 3.10: Primer laserskega tahometera (Povzeto po spletni strani

32 16 Urban Kobal Zvočni tahometer Zvočni tahometer deluje na podlagi frekvence zvoka motorja. Primeren je predvsem za motorje z notranjim zgorevanjem, saj ti pri svojem delovanju proizvajajo eksplozije, ki jih tahometer prebere in iz njihove frekvence izračuna RPM motorja. Ta tip tahometra uporabljamo tudi v tej diplomski nalogi, zato bo podrobneje opisan v naslednjih poglavjih, prav tako bo opisano delovanje te aplikacije.

33 Poglavje 4 Razvoj mobilne aplikacije V tem poglavju diplomske naloge bo opisano delo na aplikaciji, načini reševanja problemov, na katere smo naleteli pri njenem razvoju ter končna rešitev. Prvotna naloga je bila izbrati način, kako računati frekvenco iz danega zvoka (signala). To smo skušali rešiti na naslednje tri načine (podrobneje so opisani v naslednjih podpoglavjih): z metodo Zero Crossings, z algoritmom Radix-2 FFT, knjižnico JTransforms [15]. Odločili smo se za zadnjo knjižnico JTransforms. Pogledali bomo ključne razrede, ki se uporabljajo v aplikaciji ter njihovo delovanje. V fazi razvoja smo se poigravali tudi z zamislijo o avtokorelaciji, ki smo jo tudi implementirali, vendar je aplikacija ne uporablja, saj je bila naša izvedba računsko zahtevna in je upočasnila delovanje aplikacije do te mere, da je postala neuporabna. 4.1 Frekvenčna analiza V procesu izdelave aplikacije se je testiralo in poskušalo implementirati več načinov obdelave zvoka. Na koncu se je kot najboljša izkazala že izdelana 17

34 18 Urban Kobal knjižnica JTransforms, zaradi česar je tudi ostala v končni verziji aplikacije. Na to je vplivalo predvsem dejstvo, da je ta knjižnica hitrejša in bolj natančna od izvedb, ki smo jih sami implementirali v sklopu razvijanja aplikacije. Vse izvedbe bomo spoznali v naslednjih odstavkih Metoda Zero crossings Metoda Zero crossings ali metoda štetja prehodov čez ničlo je zelo enostavna funkcija, ki sprejme zvočne ali druge podatke in na tej podlagi prešteje, kolikokrat v danem času se je vrednost premaknila čez ničlo [12]. V svetu digitalne fotografije se ta metoda uporablja za odkrivanje robov ali kot gradientni filter. Tukaj jo uporabljamo za zaznavanje osnovne frekvence v zvoku motorja. Delovanje metode: v zanki pridobivamo podatke iz mikrofona v velikosti tabele buffersize, ki služi kot začasni pomnilnik. V našem primeru, ki smo ga implementirali, je velikost tega začasnega pomnilnika * 3 bajta, vrednosti pa so zakodirane v bitnem formatu PCM. To pomeni, da podatke iz mikrofona dobimo v 16-bitnem predznačenem formatu in tako lahko vsak vzorec zavzame vrednost med in V naslednjem koraku gremo z zanko skozi celoten pomnilnik in preštejemo, kolikokrat se je vrednost spremenila iz pozitivne v negativno in obratno. Ko preštejemo vse spremembe, se izračuna frekvenca po naslednji formuli: f requency = (8000/buf f ersize) (numcrossing/2) Frekvenca je torej polovica števila sprememb krat število vzorcev pomnilnika na sekundo. V tem primeru je naša frekvenca vzorčenja Hz. Ko smo preizkušali to metodo merjenja frekvence na praktičnem primeru, se ni izkazala kot najboljša. Velikokrat ji namreč ni uspelo dobiti osnovne frekvence, ko pa jo je, je bila zgrešena. Veliko bolje je delovala v mirnem okolju, kjer je bilo manj motečih dejavnikov (npr. v kabini avtomobila). Zato smo to metodo, ki je računsko najmanj zahtevna, opustili. Vseeno

35 Mobilna aplikacija za analizo zvoka avtomobilskega motorja19 pa je bila zanimiva in sicer kot učni primer, tj. na kakšne načine se lahko osnovna frekvenca izračuna Algoritem Radix-2 FFT Za implementacijo FFT-ja smo izbrali najenostavnejšo in najbolj razširjeno verzijo algoritma Cooley Tukey FFT, imenovano Radix-2 [4]. Ta ne spada med najbolj optimalne verzije Cooley Tukeyjevega algoritma, vendar je za implementacijo relativno preprost. [11] public void fft(double[] x, double[] y){ int i, j, k, n1, n2, a; double c, s, e, t1, t2; j = 0; n2 = n / 2; for (i = 1; i < n - 1; i++){ n1 = n2; while (j >= n1){ j = j - n1; n1 = n1 / 2; } j = j + n1; if (i < j) { t1 = x[i]; x[i] = x[j]; x[j] = t1; t1 = y[i]; y[i] = y[j]; y[j] = t1; }} n1 = 0; n2 = 1; for (i = 0; i < m; i++){

36 20 Urban Kobal n1 = n2; n2 = n2 + n2; a = 0; for (j = 0; j < n1; j++){ c = cos[a]; s = sin[a]; a += 1 << (m - i - 1); for (k = j; k < n; k = k + n2) { t1 = c * x[k + n1] - s * y[k + n1]; t2 = s * x[k + n1] + c * y[k + n1]; x[k + n1] = x[k] - t1; y[k + n1] = y[k] - t2; x[k] = x[k] + t1; y[k] = y[k] + t2; } } } } Funkcija dobi kot parametre dve tabeli x in y; v tabeli x je shranjen realni del kompleksnega števila, v y pa imaginarni. Ker uporabljamo to funkcijo nad zvočnim posnetkom, ki ima samo realni del, je tabela y napolnjena s samimi ničlami. Za izračun energetskega spektra seštejemo kvadrata realnega in imaginarnega dela števila: P [0] = x[0] 2 + y[0] 2. Prav tako ne smemo pozabiti, da ima Fourierjeva transformacija, ko jo izračunamo preko realnih števil, simetričen rezultat. To pomeni, da ima prva vrednost v tabeli enako vrednost kot zadnja in vrednost na polovici tabele ima podatke o vrednosti frekvence 0 Hz. Vrednost prvega in zadnjega podatka v tabeli pa ima podatek o frekvenci, ki je enaka polovici vzorčne frekvence. Če npr. vzorčimo s frekvenco 44 khz, ima prva vrednost v tabeli podatek o frekvenci 22 khz. Čeprav je ta algoritem uspešen pri manjšem številu podatkov, se je po preizkušanju za naše potrebe izkazal za prepočasnega. V primerjavi s knjižnico Jtransform je veliko počasnejši in tudi manj natančen.

37 Mobilna aplikacija za analizo zvoka avtomobilskega motorja Knjižnica JTransforms Knjižnica JTransforms je prva odprtokodna, večnitna FFT-knjižnica, napisana v javanskem jeziku. Trenutno so v sklopu knjižnice na voljo diskretna Fourierjeva transformacija (DFT), diskretna kosinusna transformacija (DCT), diskretna sinusna transformacija (DST) in diskretna Hartlejeva transformacija (DHT). Knjižnica se lahko uvozi v kateri koli javanski projekt. Čeprav je bila prvotno namenjena javanskim aplikacijam, ki tečejo na osebnih računalnikih, je zaradi razvoja zmogljivosti mobilnih naprav na voljo tudi za android projekte. Odlikujeta jo hitrost izvedbe in istočasnost izvajanja na več nitih [17]. 4.2 Ključni razredi za delovanje aplikacije Snemalni razred Ta razred je namenjen izključno pridobivanju podatkov iz mikrofona. Za zajem podatkov aplikacija uporablja mikrofon, ki je vgrajen na napravi. Pred uporabo je treba inicializirati snemalnik, kar storimo z naslednjimi parametri: frekvenca vzorčenja Hz (kar nam omogoča analizo podatkov vse do 22 khz), 16-bitno PCM kodiranje, mono vhodni kanal ter bajtov velik začasni pomnilnik, v katerem shranjujemo pridobljene podatke. Ta začasni pomnilnik ob napolnitvi pošljemo v razred za iskanje frekvence v nadaljnjo obdelavo Razred za iskanje frekvence V tem razredu iz, s snemalnega razreda pridobljenih, podatkov in s pomočjo knjižnice JTransforms pridobimo frekvenco. Najprej se ustvari tako imenovano Hammingovo okno, s katerim se zmanjša spektralno odtekanje, do katerega pride pri vzorčenju vhodnega signala. Vrednosti v oknu se izračunajo

38 22 Urban Kobal po formuli: window[i] = Math.cos(2 Math.P I i/(size 1.0)) Ker dobimo podatke iz snemalnega razreda v koščkih velikih 8 k, nastavimo velikost okna na isto velikost. Nato podatke (iz Hammingovega okna in iz snemalnega razreda) pomnožimo enega z drugim. private double[] applyhammingwindow(short[] input) { double[] res = new double[input.length]; //buildhammingwindow(input.length); for( int i = 0; i < input.length - 1; ++i) res[i] = (double)input[i] * mwindow[i]; return res; } Nad tako preračunanimi podatki s pomočjo knjižnice izvedemo hitro Fourierjevo transformacijo (FFT). Ta vrne realni in imaginarni del signala. S pomočjo teh dveh komponent nato izračunamo magnitudo na danem podatku ter si zapomnimo mesto največje magnitude. for(int i = 0; i < a.length / 2; ++i) { double re = a[2*i]; double im = a[2*i+1]; double mag = Math.sqrt(re * re + im * im); t = (double)samplerate * i /(a.length/2); if(mag > maxmag && t < 85) { maxmag = mag; maxind = i; } }

39 Mobilna aplikacija za analizo zvoka avtomobilskega motorja23 Tako pridobljeno največjo magnitudo uporabimo za izračunanje frekvence, za katero predpostavljamo, da je osnovna frekvenca v danih podatkih. Frekvenco izračunamo po formuli: samplerate maxind/a.length Velja, da je samplerate frekvenca, s katero vzorčimo ( Hz), maxind je mesto v tabeli z največjo magnitudo in a.lenght je dolžina oz. velikost okna. To frekvenco nato pošljemo v glavni razred v nadaljnjo obdelavo Glavni razred V glavnem razredu poskrbimo za definicijo grafičnih elementov (gumbov, izbirnih gumbov in prikazovalnika obratov), iz izračunane frekvence, ki jo dobimo v prejšnjem razredu, pa pridobimo točni RPM motorja. Pri tem nam je v pomoč uporabnik, ki izbere tip motorja (dvotaktni ali štiritaktni) ter število cilindrov. To izračunamo s pomočjo naslednje formule: f rekvenca (stevilocilindrov/stevilotaktov) 60 pri čemer velja, da je frekvenca izračunana v razredu za njeno iskanje, število cilindrov in število taktov pa izbere uporabnik na zaslonu s pomočjo izbirnih gumbov; po prednastavitvi sta ti dve vrednosti nastavljeni na štiritaktni motor ter na 4 cilindre. Vse skupaj pomnožimo s 60, da dobimo vrednosti, izračunane na minuto in ne na sekundo. To vrednost nato izpišemo na zaslon in jo posodabljamo vsakič, ko dobimo novo vrednost.

40 24 Urban Kobal

41 Poglavje 5 Opis aplikacije, testiranje in primerjava V tem poglavju si bomo ogledali, kako je narejen grafični vmesnik aplikacije ter kako se aplikacija obnese v realnih okoliščinah, kot so na primer tehnični pregledi, kjer je bila aplikacija testirana. 5.1 Grafični vmesnik Pri načrtovanju grafičnega vmesnika smo se trudili, da je ta čim bolj preprost in intuitiven, za uporabnika pa čim lažji za uporabo in brez motečih dejavnikov. Tako ima samo glavni zaslon aplikacije, na katerem je digitalni prikazovalnik RPM, dva sklopa izbirnih gumbov ter gumb za vklop/izklop merjenja. V prvem (levem) sklopu izbiramo med dvotaktnim in štiritaktnim motorjem, na desni strani pa izbiramo število cilindrov, ki jih ima motor: 4, 6 ali 8. Ko izberemo želeno konfiguracijo motorja, začnemo poslušati zvok, kar storimo z gumbom za vklop, ki je lociran v centru spodaj(slika 3.6). Pomoč je na voljo v glavnem meniju (gumb v obliki treh pik na vrhu desno), kjer je tudi razloženo, kako uporabljati aplikacijo ter kakšna je naloga posameznega gumba. 25

42 26 Urban Kobal Slika 5.1: Grafični vmesnik mobilne aplikacije. 5.2 Primerjava in testiranje Ko je bila aplikacija končana in so se začetna testiranja izkazala za dovolj natančna, smo se odločili, da jo je potrebno preveriti in primerjati s pripomočki, ki so že testirani in uveljavljeni. Tako smo našo aplikacijo primerjali s profesionalnim merilnikom MAHA RPM VC 2, ki deluje kot zunanja naprava za MAHA MGT 5. Ta naprava se največ uporablja v sklopu tehničnega pregleda avtomobilov, tovornjakov ali drugih prevoznih sredstev, ki delujejo na motor z notranjim zgorevanjem. Omogoča merjenja izpušnih plinov, RPM-ja ter kombinacijo obojega, kar se dejansko uporablja na tehničnih pregledih v Ajdovščini, kjer smo opravljali meritve. Na podlagi teh meritev ugotavljajo, če avtomobil izpusti v zrak manj kot dovoljeno število trdih delcev v določenem območju RPM. Tako morajo vsak bencinski avtomobil testirati na območju med in RPM, dizelski pa na območju med 500 in RPM. Dizelske motorje morajo testirati še na maksimalnem območju delovanja, ki

43 Mobilna aplikacija za analizo zvoka avtomobilskega motorja27 se giblje okrog RPM. Slika 5.2: Merilna naprava MAHA MGT 5. Slika 5.3: Zaslon s podatki meritev merilne naprave MAHA MGT 5. Odločili smo se, da bomo testirali na čim več različnih frekvenčnih mestih in na čim več različnih tipih motorjev. Zaradi pomanjkanja časa smo bili pri zastavljenih ciljih omejeno uspešni, kljub temu pa smo dobili kar precej kakovostnih meritev, ki so predstavljene v tabeli (Slika 5.3). Za vsako meritev imamo tri odčitke: prvi (osnovni) je odčitek iz tahometra, ki je na vsakem avtomobilu, drugi je iz naše aplikacije, tretji pa iz merilne postaje MAHA

44 28 Urban Kobal RPM VC2. Kot vidimo v tabeli in grafu (Slika 5.3), (Slika 5.4) se je naša aplikacija v primerjavi z ostalima dvema merilnikoma odrezala zelo dobro. Razen anomalije pri deseti meritvi, do katere je prišlo zaradi harmoničnih frekvenc (kar je tudi ena izmed šibkih točk aplikacije, razvidno na (Slika 5.4)), so meritve z obema merilnikoma konsistentne oz. zelo podobne profesionalnemu merilniku. To pa je objektivno tudi najpomembnejše za dokazovanje, da je aplikacija kakovostna. Slika 5.4: Primerjava različnih načinov merjenja Opis testiranja Testiranje je potekalo tako, da smo avtomobil pripeljali na merilno mesto in v informacijski sistem tehničnih pregledov vnesli registrsko oznako avtomo-

45 Mobilna aplikacija za analizo zvoka avtomobilskega motorja29 Slika 5.5: Primerjava različnih načinov merjenja 2. bila iz tega sistema smo pridobili podatke o avtomobilu in tipu motorja. Ko smo namestili naprave za merjenje izpušnih plinov ter obratov motorja (Slika 5.5), se je kontrolor usedel v avtomobil, v katerem je bila mobilna naprava OnePlus One z nameščeno aplikacijo. Poleg avtomobila je stal zapisnikar, ki je zapisoval izmerjene podatke v tabelo. Kontrolor je v notranjosti avtomobila pritiskal na pedal za plin, dokler niso bile vrednosti na tahometru v avtomobilu na želenih vrednostih. Ko so se vrednosti ustalile, smo odčitali vse meritve ter jih zapisali na desetinko RPM natančno. Vse meritve je

46 30 Urban Kobal profesionalno opravil izkušen kontrolor. Slika 5.6: Sonda za merjenje na motorju RPM VC2.

47 Poglavje 6 Sklepne ugotovitve V diplomskem delu je bila razvita ter predstavljena aplikacija za prepoznavo in izračun obratov motorja na podlagi njegovega zvoka. Cilji, ki smo si jih zadali na začetku razvoja aplikacije, so bili uspešno doseženi. Aplikacija deluje, kot je bilo zamišljeno, saj v veliki večini primerov uspešno prepozna frekvenco motorja in izračuna obrate motorja. Prav tako uspešno deluje na različnih tipih motorjev (dizelskih in bencinskih) z različnim številom cilindrov. Več pozornosti bi verjetno morali nameniti prepoznavi in odpravljanju šumov ter zaznavanju harmoničnih frekvenc, ki so nam povzročale nekaj težav. Bolj bi se lahko tudi osredotočili na optimizacijo in pohitritev izračunov, vendar se nam to, zaradi praktično vsakodnevno novega in zmogljivejšega mobilnega aparata na trgu, ni zdelo preveč potrebno. Aplikacija bi lahko bila z nekaj popravki konkurenčna in primerljiva z nekaterimi profesionalnimi pripomočki. Kot smo videli v primerjavi, je bila naša aplikacija že zdaj zelo uspešna. 6.1 Možne nadgradnje Med razvijanjem aplikacije smo na podlagi pogovorov dobili kar nekaj idej za njen nadaljnji razvoj. Tako smo dobili predloge za samodejno predlaganje menjave prestave na podlagi vnesenih podatkov in zvoka motorja. Če ima naprava več mikrofonov, bi lahko uporabili dodaten mikrofon za izničevanje 31

48 32 Urban Kobal šuma, kar v trenutni implementaciji povzroča napačne meritve. Z dodanim frekvenčnim filtrom pa bi lahko tudi izboljšali zanesljivost meritev. Ker pa je na trgu že nekaj podobnih aplikacij, ki ponujajo podobne zmogljivosti v bolj izdelani obliki, bo ta aplikacija ostala le kot učni primer za to diplomsko nalogo. 6.2 Spremna misel Temo diplomske naloge sem si izbral, ker me je vedno zanimal razvoj mobilnih aplikacij. Predvsem me fascinirajo različne možnosti sodobnih mobilnih naprav, ki s svojimi senzorji zmorejo že ogromno zanimivih stvari. Ob razvijanju aplikacije sem se veliko naučil, naučeno znanje pa mi sedaj koristno služi pri moji zaposlitvi.

49 Mobilna aplikacija za analizo zvoka avtomobilskega motorja33

50 34 Urban Kobal

51 Literatura [1] Ken Arnold, James Gosling, and David Holmes. The Java programming language. Addison Wesley Professional, [2] Margaret Butler. Android: Changing the mobile landscape. IEEE Pervasive Computing, 10(1):4 7, [3] Jerome DiMarzio. Beginning Android Programming with Android Studio. John Wiley & Sons, [4] Pierre Duhamel and Henk Hollmann. Split radix fft algorithm. Electronics letters, 20(1):14 16, [5] V Ganesan. Internal combustion engines. McGraw Hill Education (India) Pvt Ltd, [6] Haitao Guo, Gary A Sitton, and C Sidney Burrus. The quick discrete fourier transform. In Proceedings of ICASSP 94. IEEE International Conference on Acoustics, Speech and Signal Processing, volume 3, pages III 445. IEEE, [7] Internal combustion engine. Dosegljivo: wiki/internal_combustion_engine, [Dostopano: ]. [8] Motorji z notranjim izgorevanjem. Dosegljivo: doc/diplome/cah_romeo-motorji_z_notranjim_izgorevanjem.pdf, [Dostopano: ]. 35

52 36 Urban Kobal [9] Sebastjan Škvarč, Vključevanje aktualnih vsebin o motorjih z notranjim izgorevanjem k pouku tehnike in tehnologije. Dosegljivo: pefprints.pef.uni-lj.si/1833/1/diplomsko_delo.pdf, [Dostopano: ]. [10] Android 9 Pie. Dosegljivo: versions/pie, [Dostopano: ]. [11] Columbia University FFT. Dosegljivo: edu/~ronw/code/dev/meapsoft/src/com/meapsoft/fft.java, [Dostopano: ]. [12] Everyday DSP for Programmers: Frequency Measurement. Dosegljivo: [Dostopano: ]. [13] Four-cylinder engine cars are the majority of cars on the road today. Dosegljivo: four-cylinder-engine-cars-majority-cars-road-today/, [Dostopano: ]. [14] Fourier transform. Dosegljivo: Fourier_transform, [Dostopano: ]. [15] Knjižnica JTransforms. Dosegljivo: site/piotrwendykier/software/jtransforms, [Dostopano: ]. [16] Micro Group, Vibra-Tak Tachometer. Dosegljivo: microngroup.com/vibra-tak_tachometer, [Dostopano: ]. [17] Piotr Wendykier: JTransforms. Dosegljivo: com/site/piotrwendykier/software/jtransforms, [Dostopano: ].

53 Mobilna aplikacija za analizo zvoka avtomobilskega motorja37 [18] StackExchange How does the tachometer on my dashboard actually work?. Dosegljivo: questions/25584/how-does-the-tachometer-onmy-dashboardactually-work, [Dostopano: ]. [19] What Does RMP Mean in Cars? Dosegljivo: https: // [Dostopano: ]. [20] Mike Van Drongelen. Android studio cookbook. Packt Publishing Ltd, 2015.