Yleistä

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,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. Tarvitset tehtävään tietokoneen.

Voit tehdä kytkennän alla mainituilla osilla tai hyödyntää valmista permaproto-kytkentää, jonka löydät Meta-boxi tarvikkeista. Permaproto-kytkennän kanssa tarvitset Arduino-mikrokontrollerin, tietokoneen ja USB-johdon.

Osat

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

 

Hyppylankoja

Hyppylankojen värillä ei ole väliä.

USB A-B

Kytkennät

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

Tämän lisäksi punainen johto liitetään 5V-pinniin ja musta (tai ruskea) johto liitetään GND-pinniin.

Tee alla oleva kytkentä ennen siirtymistä ohjelmointi osioon. Voit tehdä kytkennän joko edellä mainituista irto-osista tai kokeilla ensin valmiilla perma-proto kytkennällä. Tällöin riittää että kytket hyppylangat kuvan mukaisesti oikeisiin kohtiin Arduinossa.

Ohjelmoiminen

Graafinen ohjelmoiminen

  1.     Avaa Arduino IDE.
  2.     Kytke Arduino UNO koneeseen USB kaapelilla.
  3.     Avaa Arduino IDE ja lataa Arduinoon Firmata-koodi. 
  4.     Avaa Snap4Arduino ohjelmointiympäristö ja aktivoi Arduino ohjelmointiympäristöön painamalla Arduino-valikosta ”Connect Arduino”.
  5.     Rakenna koodi esimerkin mukaan.

Koodin rakentaminen Snap4Arduino ohjelmointiympäristössä

  1. Valitse Ohjaus-välilehdestä ”kun painetaan [välilyönti] ja raahaa se ohjelmointikenttään. Vaihda välilyönti-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 siis 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ä Lataa-painiketta. 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?

Milaisen kojeen voisit rakentaa servosta? Rakenna teos jossa hyödynnät servo-moottoria. Mitä servo voisi liikuttaa?

Voit myös siirtyä seuraavaan tehtävään tutustumaan valovastukseen.