Anturit ja Arduino Tomi Pulli Signaalinkäsittelyn ja akustiikan laitos Mittaustekniikka
Anturit ja Arduino Luennon sisältö 1. Taustaa 2. Antureiden ominaisuudet 3. AD-muunnos 4. Antureiden lukeminen Arduinolla 5. Anturityyppejä Kiihtyvyysanturi (Analog Devices) 2
Anturit Määritelmä Eräs määritelmä: Mittauslaitteen osa, johon mitattava suure välittömästi vaikuttaa. Anturi reagoi fysikaaliseen suureen muutokseen tavalla, joka on luettavissa (yleensä sähköisenä) signaalina. Esim. Vastuslämpötila-anturi PT100 Lämpötilan muutos > Resistanssin muutos > Mitatun jännitteen muutos. Usein antureissa on anturielementin lisäksi myös muita komponentteja, esim. vahvistin ja/tai AD-muunnin. Mittalaite voi koostua esim. anturista, mittavahvistimesta, AD-muuntimesta ja näyttöyksiköstä. 3
Antureiden ominaisuuksia
Antureiden ominaisuuksia Ideaalinen anturi Herkkä mitattavan ilmiön suhteen. Täysin epäherkkä muiden ilmiöiden suhteen. Tarkka. Kohinaton. Ei vaikuta mitattavaan kohteeseen. Laaja mittausalue. Ominaisuuksiltaan muuttumaton (esim. ajan suhteen). Vasteeltaan lineaarinen (yleensä). 5
Antureiden ominaisuuksia Tarkkuus Tarkkuudella voidaan tarkoittaa eri asioita. Accuracy, paikkansapitävyys, ulkoinen tarkkuus Pieni systemaattinen virhe (verrattuna todelliseen arvoon). Paranee kalibroimalla. Precision, täsmällisyys, sisäinen tarkkuus Pieni satunnainen virhe. Paranee keskiarvoistamalla. Accurate, precice Precise, accurate 6
Antureiden ominaisuuksia Herkkyys ja lineaarisuus Herkkyys Kuinka paljon anturin ulostulosignaali (esim. jännite) muuttuu, herätteen (esim. lämpötila) muuttuessa. Lineaarisuus S(s) = ks + a S = ulostulosignaali s = sisääntulosignaali, heräte k = kulmakerroin, herkkyys a = offset Huom. anturi on usein lineaarinen vain tietyllä mittausalueella. 7
Antureiden ominaisuuksia Kohina Signaalin spontaania, satunnaista vaihtelua. Voidaan määritellä vain tilastollisesti, ei voida ennustaa. Anturin lisäksi myös vahvistin, A/D-muunnin, jne. aiheuttavat mitattavaan signaaliin kohinaa. Usein ilmoitetaan Kohinan tehollisarvo (esim. ulostulojännitteenä V noise ) Kohinajännitetiheys u noise = V noise / B [V/ Hz], missä B on kohinakaistanleveys Signaali-kohinasuhde SNR = 10 log P signal P noise [db] = 20 log V signal V noise Signaalikohinasuhdetta käytetään myös mm. vahvistimien ja A/D-muuntimien ominaisuuksien kuvaamiseen db 8
Antureiden ominaisuuksia Häiriöt Kohinan lisäksi mittauksissa useita häiriölähteitä. Anturin lukemaan vaikuttaa usein myös muu kuin mitattava suure. Useat anturit ovat herkkiä lämpötilalle. Myös sähköiset häiriöt aiheuttavat usein virhettä signaalissa. 9
Antureiden ominaisuuksia Kohina ja häiriöt Kohinan vähentäminen Suodatus tai keskiarvoistus. Esimerkiksi: val = 0; for (int i = 0; i < 10; i++) val += analogread(pin); val = val/10; Anturivalinta. Häiriöiden minimointi Poista häiriölähde (esim. stabiloi lämpötila). Siirry kauemmas häiriölähteestä (esim. sähköjohdot). Suojaus (esim. laitekotelointi ja suojatut johdot). 10
Antureiden ominaisuuksia Mittausalue Antureille ilmoitetaan tyypillisesti rajallinen toimintaalue. Toiminta-alueen ulkopuolella: Toimintaa ei ole testattu, Anturi ei saavuta luvattua tarkkuutta, Vaste on voimakkaasti epälineaarinen, Anturi ei toimi, Anturi on vaarassa tuhoutua tai Jotain muuta. Antureiden ja mittalaitteiden ominaisuudet (herkkyys, tarkkuus, jne.) riippuvat usein käytetystä mittausalueesta. 11
Analogi digitaalimuunnos
AD-muunnos Taustaa Arduinon AD-muunnin muuttaa anturin syöttämän analogisen jännitesignaalin digitaaliseen muotoon. Arduinon AD-muuntimen ominaisuudet (Arduino UNO) Resoluutio 10 bittiä: 2 10 = 1024 jännitetasoa Referenssijännite 5 V: 0 V vastaa luku 0; 5 V vastaa luku 1023 Näytteistystaajuus (max) n. 10 khz: 10 000 näytettä / s. Osa antureista suorittaa AD-muunnoksen itse. Arvot siirretään Arduinolle digitaalisessa muodossa. Anturin AD-muuntimen ominaisuudet ratkaisee. 13
AD-muunnos Resoluutio Kuvaa digitaalisen mittalaitteiston erottelukykyä. Pienin havaittava jännitteen muutos riippuu resoluution lisäksi referenssijännitteestä. Esim. V ref = 5 V: 10 bittiä: 2 10 = 1024 jännitetasoa; 5 V / 2 10 = 4.88 mv 16 bittiä: 2 16 = 65536 jännitetasoa; 5 V / 2 16 = 0.0763 mv Huom. Jos luet Arduinolla (10 bit, V ref = 5 V) anturia, jonka jännite vaihtelee välillä 0 20 mv, on käytössäsi vain viisi jännitetasoa! Signaalin vahvistus, referenssijännitteen muuttaminen, jne. 14
AD-muunnos Resoluutio ja näytteistystaajuus Periaatekuva ADmuunnoksesta Pieni resoluutio tai huonosti valittu referenssijännite. Pieni näytteistystaajuus AD-muunnoksen optimointi ei aina ole tarpeen. Esim. onko valo päällä vai ei? 15
Antureiden lukeminen
Antureiden lukeminen Analoginen anturi Yksinkertaisin anturityyppi: Jänniteantoinen analoginen anturi Vaatii käyttöjännitteen Kytke maapotentiaali (ground, GND). Kytke käyttöjännite (3.3 V, 5 V, ). Vaatii signaalijohdon Kytke anturin ulostulo Arduinon Analog In osioon. 17
Antureiden lukeminen Analoginen anturi Koodiesimerkki: int pin = 0; // anturipinni int val = 0; // mitattu arvo void setup() { Serial.begin(9600); // avaa sarjaliikenne } void loop() { val = analogread(pin); // lue anturin arvo Serial.println(val); // tulosta arvo sarjaporttiin delay(500); // odota 500 ms } 18
Antureiden lukeminen Digitaalinen anturi Lukuisia digitaalisia toteutuksia. Vaatii käyttöjännitteen ja signaaliväylän. Jännitetasot ja kytkentä tulee tarkastaa anturikohtaisesti. 19
Antureiden lukeminen Digitaalinen anturi Koodiesimerkki: #include <OneWire.h> // liitä tarvittava kirjasto mukanaan int pin = 2; // anturipinni float val = 0; // mitattu arvo OneWire ds(pin); // luo OneWire-objekti void setup() { Serial.begin(9600); // avaa sarjaliikenne } void loop() { val = gettemp(); // funktiokutsu Serial.println(val); // tulosta arvo sarjaporttiin delay(500); // odota 500 ms } // Funktio, joka kysyy anturin arvoa, ja palauttaa lämpötilan liukulukuna. float gettemp() { } // funktion toteutus return temperature; 20
Antureiden lukeminen Yleisiä huomioita Lue antureiden tietolehdet/ohjeet/tutoriaalit Onko käytetty Arduinon kanssa? Onko toiminut? Mahdollisia ongelmia esim. mikrokontrollerin nopeus ja anturin ulostulosignaalin muoto. Ennen kytkentää Pinnijärjestys, käyttöjännitteet, jne. Älä keksi pyörää uudestaan! Valmiit kirjastot ja koodiesimerkit usein hyvin toteutettuja, vakaita ja tuettuja. 21
Antureiden lukeminen Yleisiä huomioita Suosi Arduino-yhteensopivia antureita. Fyysinen koko: Paljaita pintaliitoskomponentteja vaikea käsitellä. Sovituslevyt (engl. Breakout board). Analoginen anturi: Jänniteantoinen. Esim. Vastuslämpömittari PT100 vaatii monimutkaisen kytkennän. Ulostulojännite sopivalla välillä. Esim. Jos jännite on välillä 0 20 mv, tarvitaan erillinen vahvistin. Digitaalinen anturi: Valmiit kirjastot ja esimerkit. 22
Anturityyppejä
Anturityyppejä Lämpötila-anturit Lämpötilan mittaus voi perustua esim. resistanssin muutokseen, lämpösähköiseen ilmiöön tai lämpösäteilyyn. Esim. Analog Devices TMP36 (analoginen) Herkkyys 10 mv/ºc Toiminta-alue -40 +125 ºC Esim. Dallas Semiconductor DS18B20 (digitaalinen) Resoluutio parhaimmillaan 0.0625 ºC Toiminta-alue -55 +125 ºC 24
Anturityyppejä Etäisyysanturit Etäisyyden mittaus voi perustua esim. lasereiden, infrapunaledien tai ultraääniantureiden käyttöön. Esim. Sharp GP2Y0A21YK analoginen IR-etäisyysanturi 10 cm -> 3.1 V ulostulojännite; 80 cm -> 0.4 V ulostulojännite Epälineaarinen vaste. Esim. Maxbotix LV-MaxSonar- EZ1 analoginen ultraäänianturi Herkkyys (V cc /512) / tuuma, missä V cc on käyttöjännite. Huom. Antureiden keilamuoto otettava huomioon. 25
Anturityyppejä Kiihtyvyysanturit ja gyrot Kiihtyvyysanturi mittaa kappaleen kiihtyvyyttä suhteessa vapaassa pudotuksessa olevan tarkkailijan kiihtyvyyteen. Paikallaan oleva anturi mittaa siis noin 9,8 m/s 2 ylöspäin. Toimii kallistusanturina! Gyroskooppi mittaa pyörimisnopeutta. Painovoima ei vaikuta lukemaan. Käytetään usein yhdessä kiihtyvyysanturin kanssa: Liike ja suunta voidaan määrittää tarkemmin. Esim. Analog Devices ADXL335 analoginen kiihtyvyysanturi Mittaa kiihtyvyyttä kolmen akselin suhteen. 26
Anturityyppejä Muut anturit Sähkö ja magnetismi Virta, magneettikenttä, kompassi, Valo Intensiteetti (ultravioletti, näkyvä, infrapuna), väri, kuva, Kemikaalit Alkoholi, häkä, ph, Kosketus Paine, taivutus, kosketuspinnat, sormenjälki, Ja niin edelleen Ilmanpaine, kosteus, ääni, kortinlukijat, 27
Linkkejä Komponentit, ohjeet Ohjeet Arduino: arduino.cc Arduino Playground: playground.arduino.cc Bildr: bildr.org. Komponentit, datalehdet, ohjeet Sparkfun: sparkfun.com Seeed Studio: seeedstudio.com DFRobot: dfrobot.com. Yleisesti: Anturin tyyppi + Arduino 28