8. IO-Portit (analogiset, digitaaliset), sensorin liittäminen, kirjastot

Tehtävät

  1. Tee toteutus, jossa kahdella kytkimellä ohjataan neljää LEDiä. Kun kumpikin kytkin on auki -> LED1 palaa, muut ei. Kun kytkin1 on kiinni ja kytkin2 auki -> palaa LED2, jne. Kytkimenä voi käyttää johtoa, joka kytketään maahan (0) tai käyttöjännitteeseen (1). LEDeillä pitää olla etuvastukset jotta ne eivät mene rikki.
  2. NTC-vastuksen käyttö lämpötilan mittaamiseen: kytkentään tarvitaan NTC-vastus ja 10kohm vastus, jotka kytketään sarjaan käyttöjännitteen ja maan välille. Keskipiste kytketään AD-muuntimen tuloon.
    • Testaa esimerkkiohjelman (NTC_readValue) toiminta
    • Lisää mittauksen luotettavuutta seuraavalla toiminnolla: tee mittaus 10 kertaa (for-silmukka) ja ota mittauksista keskiarvo, jota jatkokäsitellään ohjelmassa.
    • Optio: Ota 11 mittauksesta mediaani. Kumpi olisi mielestäsi parempi tapa (keskiarvon vai mediaanin käyttö)?
  3. NTC-vastusmittauksen kalibrointi:
    • Edellisen tehtävän mukaisen mittauksen perusteella määritellään lämpötila. Muunnoksen (ja kalibroinnin) voi tehdä esim. käyttämällä B-parametriyhtälöä (https://learn.adafruit.com/thermistor/using-a-thermistor) tai muodostamalla yhtälö Excelillä (trendline). Tavoitteena on < 1 C asteen tarkkuus.
  4. DS18x20-anturin käyttö lämpötilan mittaamiseen (esim. http://www.pjrc.com/teensy/td_libs_OneWire.html):
    • Asenna kirjasto (Onewire tai vastaava)
    • Etsi ja testaa esimerkkikoodi
    • Tutustu koodiin ja tee omia muutoksia toimintaan.
  5. Servon ohjaaminen: servon ohjaaminen tapahtuu PWM-lähdöllä (pulssinleveysmodulaatio)
    • Tutustu mitä servo ja PWM tarkoittaa ja miten ne toimivat. Optio: mittaa PWM-lähtöä oskilloskoopilla se seuraa miten se muuttuu, kun muutat parametreja.
    • Etsi sopiva koodi servon ohjaamiseen ja testaa toiminta.
    • Muokkaa ohjelma siten, että syöttämällä kulman suuruuden sarjamonitoriin tai potentiometrilla servo kääntyy oikeaan kulmaan. Mitkä ovat suurin ja pienin kulma mihin servo kääntyy?