Arduino ja anturit – potentiometri

Artikkelissa kuvataan lyhyesti potentiometrin lukeminen Arduino alustalla.

[size=150]Arduino ja anturit – Potentiometri[/size]
potentiometrejä.png
Potentiometri on säädettävävastus. Potentiometrillä voidaan toteuttaa mm. erilaisia nuppeja projekteihin, kuten vaikkapa volyyminsäätö tai mikroaaltouunin tehonsäätö.

Potentiometri näyttää yleisimmillään pyöritettävältä nupilta jossa on kolme jalkaa. Sisältä potentiometri näyttää useasti kellotaululta jonka päällä on esim. grafiittikerros, taas jonka päällä liikkuu neula. Tästä neulasta mitataan missä asennossa potentiometri on. Mitä kauemmas positiivisesta jalasta neula liikkuu, sitä suuremman matkan sähkövirta joutuu kulkemaan sitä vastustavaa grafiittia pitkin päästäkseen keskimmäiseen jalkaan ja lyhyemmän matkan päästäkseen uloimpaan jalkaan. Järjestelmään muodostuu ikään kuin kaksi vastusta joiden arvot riippuvat siitä missä kohtaan potentiometrin neula on.
virtamatka.png

http://www.youtube.com/watch?v=iTMVD9PibKg&feature=youtu.be
Oheisessa videossa voit nähdä kuinka potentiometrin resistanssi muuttu kun potentiometrin nuppia käännetään. Yleismittari on kytketty yhteen potentiometrin uloimmista ja keskimmäiseen jalkaan. Yleismittari on asetettu mittaamaan resistanssia.

Muodostuvaa piiriä kutsutaan jännitteen jakajaksi (eng. voltage divider). Piiri jakaa nimensä mukaisesti jännitteen kahteen eri johtimeen. Johtimiin siirtyvä jännite riippuu siitä millaiset vastukset piirissä ovat.

voltagedivider1.png
Otetaan seuraavanlainen esimerkki tilanne. Virtapiirille syötetään 9volttia ja siinä on peräkkäin kaksi 50ohmin vastusta. Jos mittaamme jännitteen vastusten välistä näyttää jännitemittarimme 4,5volttia. Tilanne vastaa sitä että potentiometrin nuppi on asetettu keskiasentoon ja potentiometrin neulan kummallakin puolella on yhtä pitkä ja saman resistanssin omaava pätkä grafiittia.

voltagedividercircuit2.png
Muutetaan tilannetta hieman ja asetetaan ensimmäiseksi vastukseksi 80ohmin vastus ja jälkimmäiseksi 20ohmin vastus. Jos nyt mittaamme jännitteen vastustenvälistä jännitemittari näyttää 1,8volttia. Tilanne vastaa sitä että jos potentiometrin nuppia voisi pyörittää enintään 360astetta, olisi nuppi asetettu noin 288 asteen kulmaan.

voltagedivider3.png
Muutetaan piiriä vielä kerran ja asetetaan ensimmäiseksi vastuksesi 20ohmin vastus ja jälkimmäiseksi 80ohmin vastus. Nyt keskeltä mitattu jännite on 7,2volttia. Tilanne vastaa sitä että jos potentiometrin nuppia voisi pyörittää enintään 360astetta, olisi nuppi asetettu noin 72 asteen kulmaan.

Vastustenvälillä oleva jännite riippuu siis piirissä olevien kahden vastuksen suhteesta. Keskeltä saatavan jännitteen kaava on:
kaava.png

http://www.youtube.com/watch?v=fD22AdhdEzw
Oheisessa videossa voit nähdä kuinka potentiometrin keskimmäisestä pinnistä mitattu jännite muuttuu kun potentiometrin nuppia pyöritetään. Potentiometrin toiseen uloimmista pinneistä on kytketty 16,1voltin jännite ja toinen ulompipinni on kytketty maahan.

[size=150]Teoriasta käytäntöön[/size]
Seuraavassa esimerkissä esitetään kuinka potentiometrin asento voidaan lukea Arduinon analogi-pinneillä ja luettu arvo lähetetään tietokoneelle sarjaliikenteenä.

Analogi-pinnit voivat mitata sitä jännitettä joka niihin kohdistuu.

piirikaavio1.png
Kytke Arduinon 5voltin pinni potentiometrin toiseen uloimmista liittimistä ja maataso toiseen uloimmista liittimistä. Kytke potentiometrin keskimmäinen pinni Arduinon analogi A0 liittimeen. On suositeltavaa käyttää joko 1K ohmin tai 10K ohmin potentiometriä mutta myös isompia voi käyttää. Potentiometrin ohmiarvo kertoo sen resistanssin joka syntyy keskipinniin kun potentiometri on käännetty ääriasentoonsa.
DSC06309.jpg

Arduinoon ladataan seuraava ohjelma.

[code]// Seuraava funktio suoritetaan
// vain yhden kerran kun Arduino
// käynnistetään
void setup() {
Serial.begin(9600); //Tällä komennolla
//alustetana sarjaliikenne
}

// Seuraava funktio suoritetaan
// uudelleen ja uudellen kunnes
// Arduino sammutetaan
void loop() {
// Luetaan jännite joka näkyy
// Analogi 0 liittimessä
int arvo = analogRead(A0);
// Tulostetaan saatu jännite
// sarjaliikenteenä tietokoneelle
Serial.println(arvo);
// Rajoitetaan ohjelman nopeutta.
// Tämä tulee tehdä jotta luetut
// jännitteet olisivat totuuden
// mukaisia
delay(50);
}[/code]
Sarjaliikenteenä tulostuvat arvot ovat väliltä 0 ja 1023. Arvo 0 tarkoittaa että pinnissä näkyy 0voltin jännite ja arvo 1024 että pinnissä näkyy 5voltin jännite.

[size=150]Ledin vilkkumisnopeuden säätäminen potentiometrillä[/size]
Ohessa esimerkki jossa potentiometrillä voidaan hallita arduinon pinniin 13 liitettyä ledin vilkkumisnopeutta. Tässä esimerkissä kytkentä on sama kuin aijemmassa esimerkissä.

[code]
void setup() {
pinMode(13, OUTPUT); //Tähän jalkaan on kytketty UNO
//alustassa laudalla oleva LED.
//Tällä funktiolla asetetaan tämä
//jalka ulostuloksi
digitalWrite(13, LOW); // Sammutetaan LEDi
}

void loop() {
// Luetaan jännite joka näkyy
// Analogi 0 liittimessä
unsigned int arvo = analogRead(A0);

digitalWrite(13, HIGH); // Kytketään LEDi päälle
delay(arvo); // Odotetaan jänniteen arvon verran
digitalWrite(13, LOW); // Sammutetaan LEDi
delay(arvo); // Odotetaan jänniteen arvon verran
} [/code]

http://www.youtube.com/watch?v=bbOW2sgV2Qk
Oheisella videolla voit nähdä kytkennän käytännössä.

http://www.youtube.com/watch?v=tmfdQZ-x4DU
Tällä videolla kytkentään on lisätty jännitemittari joka osoittaa sitä jännitettä joka potentiometrin keskimmäisessä pinnissä on.

Hieno ja hyvä artikkeli aloittelijoille. :slight_smile:

Ajattelin tähän mainita (anteeksi mainostus), että jos aloittelevia Launchpadilla värkkäilijöitä täällä on niin potentiometrin lukua on tehty myös tässä osoitteessa, ikäänkuin “vastapainona” Arduinolle :slight_smile: