Anturit ja Arduino

Anturit ja
Arduino
ELEC-A4010 Sähköpaja
Tomi Pulli
Signaalinkäsittelyn ja akustiikan laitos
Mittaustekniikka
Anturit ja Arduino
Luennon sisältö
1.
2.
3.
4.
5.
Taustaa
Antureiden ominaisuudet
AD-muunnos
Antureiden lukeminen Arduinolla
Anturityyppejä
Kiihtyvyysanturi
(Analog Devices)
ELEC-A4010 Sähköpaja
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ä.
ELEC-A4010 Sähköpaja
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).
…
ELEC-A4010 Sähköpaja
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
ELEC-A4010 Sähköpaja
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).
ELEC-A4010 Sähköpaja
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ä 𝑉noise )
• Kohinajännitetiheys
•
𝑢noise = 𝑉noise / 𝐵 [V/ Hz] , missä B on kohinakaistanleveys
• Signaali-kohinasuhde
𝑃signal
𝑆𝑁𝑅 = 10 log
•
Signaalikohinasuhdetta käytetään usein mm. vahvistimien ja A/D-muuntimien
ominaisuuksien kuvaamiseen
𝑃noise
[dB] = 20 log
𝑉signal
•
𝑉noise
dB
ELEC-A4010 Sähköpaja
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).
ELEC-A4010 Sähköpaja
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).
ELEC-A4010 Sähköpaja
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.
ELEC-A4010 Sähköpaja
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ä: 210 = 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.
ELEC-A4010 Sähköpaja
13
AD-muunnos
Resoluutio
• Kuvaa digitaalisen mittalaitteiston erottelukykyä.
• Pienin havaittava jännitteen muutos riippuu resoluution
lisäksi referenssijännitteestä. Esim. Vref = 5 V:
• 10 bittiä: 210 = 1024 jännitetasoa; 5 V / 210 = 4.88 mV
• 16 bittiä: 216 = 65536 jännitetasoa; 5 V / 216 = 0.0763 mV
• Huom. Jos luet Arduinolla (10 bit, Vref = 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.
ELEC-A4010 Sähköpaja
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.
ELEC-A4010 Sähköpaja
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.
ELEC-A4010 Sähköpaja
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
}
ELEC-A4010 Sähköpaja
18
Antureiden lukeminen
Digitaalinen anturi
• Lukuisia digitaalisia
toteutuksia.
• Vaatii käyttöjännitteen
ja signaaliväylän.
• Jännitetasot ja kytkentä
tulee tarkastaa
anturikohtaisesti.
ELEC-A4010 Sähköpaja
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;
}
ELEC-A4010 Sähköpaja
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ä.
ELEC-A4010 Sähköpaja
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.
ELEC-A4010 Sähköpaja
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ä.
ELEC-A4010 Sähköpaja
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-MaxSonarEZ1 analoginen ultraäänianturi
• Herkkyys (Vcc/512) / tuuma, missä
Vcc on käyttöjännite.
• Huom. Antureiden keilamuoto
otettava huomioon.
ELEC-A4010 Sähköpaja
25
Anturityyppejä
Kiihtyvyysanturit ja gyrot
• Kiihtyvyysanturi mittaa kappaleen kiihtyvyyttä suhteessa
vapaassa pudotuksessa olevan tarkkailijan kiihtyvyyteen.
• Paikallaan oleva anturi mittaa siis noin 9,8 m/s2 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.
ELEC-A4010 Sähköpaja
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, …
ELEC-A4010 Sähköpaja
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
ELEC-A4010 Sähköpaja
28