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 myytävissä antureissa on anturielementin lisäksi myös muita komponentteja, esim. vahvistin ja/tai ADmuunnin. 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). 5
Antureiden ominaisuuksia Tarkkuus Tarkkuudella voidaan tarkoittaa eri asioita. Accuracy, paikkansapitävyys, ulkoinen tarkkuus Kuvaa systemaattisen virheen suuruutta (Virhe suhteessa todelliseen arvoon). Mikäli ulkoinen tarkkuus on huono, paranee kalibroimalla. Precision, täsmällisyys, sisäinen tarkkuus Kuvaa satunnaisen virheen suuruutta. Mikäli sisäinen tarkkuus on huono, paranee esim. keskiarvoistamalla. Accurate, precise 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 (tai ei ollenkaan). 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. Komponenttien kohinaa kuvataan useilla eri suureilla, esim. 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 usein 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 (esim. ylimääräinen 50 Hz signaali). 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; (Parempi toteutus: https://www.arduino.cc/en/tutorial/smoothing) Anturivalinta. Häiriöiden minimointi Poista häiriölähde (esim. stabiloi lämpötila, poista radiolähetin). 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 (esim. saturaatio), Anturi ei toimi (esim. digitaaliset anturit), Anturi on vaarassa tuhoutua (esim. lämpötila) tai Jotain muuta. Antureiden ja mittalaitteiden ominaisuudet (herkkyys, tarkkuus, jne.) voivat riippua käytetystä mittausalueesta. Datalehtien tiedot jaettu usein eri mittausalueille. 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, ei Arduinon. 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 mittauksessa vain 20 mv, on käytössäsi vain viisi jännitetasoa! Esim. huoneen lämpötilan mittaus. 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 kuitenkaan aina ole tarpeen. Voi riittää tieto siitä, 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. Tarvittaessa käytä ulkoista lähdettä tai regulaattoria. 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, yleisesti käytetyt kirjastot ja koodiesimerkit usein hyvin toteutettuja, vakaita ja tuettuja. Ei kuitenkaan aina. Jos koodi ei toimi, ei vika ole välttämättä teissä. 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 Antureilla oma yksilöllinen osoite. Samaan OneWire väylään voidaan kytkeä useita antureita. Laaja anturiverkko käyttämättä suurta määrää mikrokontrollerin liittimiä. 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 asento voidaan määrittää tarkemmin. - Inertial Measurement Unit (IMU). 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, tarkista ennen ostoa: Anturin tyyppi + Arduino 28