Sisältö

  1. Yleistä
  2. Video
  3. Osat
  4. Kytkennät
  5. Ohjelmoiminen

_________________

Mitä seuraavaksi?

MITÄ TULEE TÄHÄN?

Yleistä

Tässä ohjeessa tutustutaan servomoottorin käyttöön.

Servomoottori on sähkömoottori, joka kääntyy haluttuun asentoon ja pysyy asennossa halutun ajan. Servomoottorien etuna tavalliseen sähkömoottoriin verrattuna on niiden tarkkuus. Niiden kytkeminen on myös huomattavasti helpompaa, sillä kytkijän ei tarvitse itse välittää transistorista (kuten tehtävässä 3.ONKO TÄMÄ NUMEROIMINEN HYVÄ IDEA, jos tehtävät menee myös meidän muiden tehtävien sekaan ja ne ei ole numeroitu – voisiko pelkkä nimi + linkkaaminen olla ratkaisu?), vaan transistori on piilotettu servon sisään.

Servon ohjelmoiminen graafisesti on todella yksinkertaista, mutta tekstipohjainen ohjelmoiminen hieman haastavampaa.

Tee kytkennät ja sen jälkeen ohjelmointi-osuus! Aloita katsomalla aiheesta video.

Osat

TULEEKO NÄIHIN AINA JOKU SELVENTÄVÄ TEKSTI JA KUVA VAI VAIN TOINEN? AINAKIN KUVA ON PAKOLLINEN

Servomoottori

Servomoottori on moottori, joka ei pyöri akselinsa ympäri kuten tavallinen sähkömoottori, vaan sillä voidaan liikkua edes-takas 180-astetta. Lisäksi on olemassa 360-asteen servomoottoreita, mutta tässä tehtävässä tutustutaan 180 asteen servomoottoriin.

Arduino

Arduino on avoin kehitysalusta, jota käytetään erilaisten ohjelmoitavien elektroniikkaprojektien rakentamiseen.

Arduino koostuu Arduino-levystä (mikrokontrolleri) sekä sen ohjelmoimiseen käytettävästä ohjelmointiympäristöstä (Arduino IDE – Integrated Development Environment) joka kykenee muuntamaan kirjoitettavan ohjelmointikielen konekieleksi. 

Arduino kykenee lukemaan ja tuottamaan eri arvoisia sähkövirtoja liitinpinnien kautta. Digitaalipinnit (yleisimmin käytettävät) ovat numeroitu järjestysluvuin 0-13. Lisäksi Arduino pystyy lukemaan ja tuottamaan analogisignaaleja pinnien A0-A5 kautta. Lisäksi mukana on 5V käyttöjännitepinni sekä maa-pinnit (GND).

Arduino-levyjä on useita malleja ja lisäksi niitä valmistaa useampi valmistaja (ne ovat avoimen koodin laitteita, joten kuka vain voi valmistaa oman versionsa tuotteesta), mutta yleisin malli on Arduino UNO, jota tässäkin yhteydessä käytetään. Yleensä Arduino-levyt ovat hyvin pitkälle toistensa kaltaisia ja kun oppii yhden levyn toiminnan, ymmärtää helposti muutkin levyt.

Hyppylankoja

 

USB A to B-kaapeli

Kytkennät

Kytke servomoottori Arduinoon hyppylangoilla siten, että keltainen/oranssi johto servosta liitetään Arduinon pinniin 9.

Punainen johto liitetään 5V-pinniin.

Musta johto liitetään GND-pinniin.

Ohjelmoiminen

Graafinen ohjelmoiminen

  1.     Avaa Arduino IDE.
  2.     Kytke Arduino UNO koneeseen USB kaapelilla.
  3.     Avaa Arduino IDE ja lataa Arduinoon Firmata-koodi. Kuvasta näkyy, mistä koodi löytyy (Klikkaa kuva suuremmaksi.) MIKÄ KUVA? – PITÄÄKÖ OTTAA?
  4.     Avaa Snap4Arduino ohjelmointiympäristö ja aktivoi arduino ohjelmointiympäristöön painamalla ”connect arduino”.
  5.     Rakenna koodi esimerkin mukaan.

Koodin rakentaminen Snap4Arduino ohjelmointiympäristössä

  1. Valitse Control-välilehdestä ”when [space] key pressed” ja raahaa se ohjelmointikenttään. Vaihda space-painikkeen tilalle haluamasi näppäin, jolla servomoottori käännetään vasemmalle. Esimerkiksi nuoli vasemmalle -näppäin.
  2. Valitse Arduino-välilehdestä ”set servo ( ) to [clockwise]”-komento. Vaihda servon numeroksi alasvetovalikosta se pinnin numero johon servo on kiinnitetty (esimerkin mukaan pinni 9. Vaihda clockwise määritteen tilalle kulma (angle) ja anna arvoksi 0.
  3. Kokeile kääntää servo vasempaan painamalla nuolta vasemmalle.

    Tekstipohjainen ohjelmoiminen

    1.     Avaa Arduino IDE ohjelmointiympäristö
    2.     Kytke Arduino kiinni koneeseen USB A to B kaapelilla.
    3.     Kopioi seuraava koodi ohjelmointiympäristöösi.
      #includeServo myservo;int pos = 0;void setup() {
      myservo.attach(9);
      }void loop() {
      for (pos = 0; pos <= 180; pos += 1) {
      myservo.write(pos);
      delay(15);
      }
      for (pos = 180; pos >= 0; pos -= 1) {
      myservo.write(pos);
      delay(15);
      }
      }
    4. Lataa koodi Arduino-levylle painamalla ohjelmointiympäristöstä Upload-painiketta (suom. Lataa).Käydään seuraavaksi läpi mistä koodi rakentuu.
    5. Arduino-ohjelmointiympäristössä on paljon sisäänrakennettuja komentoja joita kutsutaan kirjastoiksi (libraries). Toisinaan kirjastot tulee aktivoida itse, kuten servomoottoreita käytettäessa. Aktivoiminen tapahtuu seuraavalla komennolla:#include
    6. Seuraavaksi käytettävä objekti Servo tulee nimetä nimellä johon viitata myöhemmin koodissa. Nimetään se nimellä ”myservo” seraavalla tavalla:Servo myservo;
    7. Sitten määritellään muuttuja, jolle annetaan lähtöarvo 0. Tätä muuttujaa tarvitaan koodissa myöhemmin määritettäessä liikkeen kestoa:int pos = 0;
    8. Servo liitetään pinniin numero 9:void setup() {
      myservo.attach(9);
      }
    9. Koodi joka alkaa liikuttamaan servoa alkaa ehtolauseella ”for”. Tämä komento rakentuu kolmesta osasta jotka ovat sulkujen sisällä (pos = 0; pos <= 180; pos += 1). Ensin annetaan servon asennolle (pos) muutujan lähtöarvo (alussa määriteltu 0). Sen jälkeen määritellään, että seuraavaksi määriteltävää tapahtumaa toistetaan alusta loppuun luuppina niin kauan, että muuttuja saa arvon 180. Viimeinen määre määrittää, paljonko muuttujan arvoa muutetaan joka kierroksen jälkeen (+=1, eli sitä kasvatetaan aina yhdellä).Jokaisen edellä määritellyn kierroksen aikana tapahtuu muutos objektissa ”myservo” siten, että sille lähetetään visti muutoksesta ”write” joka on muuttujan ”pos” saama arvon muutos. Näin rakentuu melko tiivis koodi, jossa yhtä muuttujaa käytetään samanaikaisesti kahdessa paikassa siten, että kohteet joihin muuttujalla viitataan viittaavatkin samaan objektin saaden sen liikkumaan eri hallitusti 0-180 asteen välillä.for (pos = 0; pos <= 180; pos += 1) {
      myservo.write(pos);
      delay(15);
      }
    10. Sitten edellinen komento käännetäänkin tapahtumaan negatiivisesti, jolloin servo palaa takaisin alkupisteeseen.for (pos = 180; pos >= 0; pos -= 1) {
      myservo.write(pos);
      delay(15);
      }

Mitä seuraavaksi?

MITÄ TULEE TÄHÄN?