MODUL 14. Servo Motors Created by Si mon Monk Last updated on 2013-06-11 08:16:06 PM EDT
Dec 08, 2015
MODUL 14. Servo Motors Created by Simon Monk
Last updated on 2013-06-11 08:16:06 PM EDT
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 2 of 14
Daftar Isi
Daftar isi 2
Gambaran Umum 3
Parts 4
Part 4
Qty 4
Gambar Breadboard untuk 'Sweep' 6
Jika Servo Berubah 7
Arduino kode untuk 'Sweep' 8
Gambar Breadboard untuk 'Knob' 10
Arduino kode untuk 'Knob' 11
Servo Motors 12
Inside a Servo 13
Other Things to Do 14
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 3 of 14
Overview
Dalam pelajaran ini, Anda akan belajar bagaimana mengontrol motor servo
menggunakan Arduino.
Pertama, Anda akan menggunakan servo sweep bolak-balik secara otomatis dan
kemudian Anda akan menambahkan pot untuk mengontrol posisi servo.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 4 of 14
Parts
Untuk membuat proyek yang dijelaskan dalam pelajaran ini, Anda akan
memerlukan peralatan berikut.
Part
Qty
Servo Motor
1
10 kΩ variable resistor (pot)
1
Half- size Breadboard
1
Arduino Uno R3
1
Jumper wire pack
1
100 µF capacitor
Optional
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 5 of 14
The Breadboard Layout for 'Sweep'
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 66 of 14
Untuk percobaan ini, satu-satunya hal yang terhubung ke Arduino adalah motor
servo.
Servo motor memiliki tiga warna kaki. Warna kaki bervariasi antara motor servo,
tapi ujung merah selalu 5V dan GND berwarna hitam atau coklat. Warna lainnya adalah
kontrol dan ini biasanya berwarna oranye atau kuning. Kaki kontrol ini terhubung ke pin
digital 9.
Servo yang nyaman dihentikan dalam soket di mana kita dapat menggunakan kabel
jumper, untuk menghubungkannya dengan papan breadboard dan kemudian ke Arduino.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 77 of 14
The Breadboard Layout for 'Knob'
Servo Anda mungkin bergerak tak menentu, dan Anda mungkin menemukan bahwa
ini hanya terjadi ketika Arduino dicolokkan ke port USB tertentu. Hal ini terjadi karena
servo menarik cukup banyak power, terutama ketika motor bekerja, dan permintaan yang
tinggi ini bisa cukup untuk membuat drop tegangan pada papan Arduino, sehingga me-
reset sendiri.
Jika ini terjadi, maka Anda biasanya dapat diperbaiki dengan menambahkan sebuah
kapasitor bernilai tinggi (470uF atau lebih) antara GND dan 5V pada papan breadboard.
Kapasitor bertindak sebagai reservoir listrik untuk motor untuk digunakan, sehingga
ketika mulai, dibutuhkan biaya dari kapasitor serta pasokan Arduino.
Semakin panjang kaki kapasitor adalah kaki positif dan ini harus terhubung ke 5V.
Kaki negatif juga sering ditandai dengan symbol '-'.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 88 of 14
The Breadboard Layout for 'Knob'
Masukkan kode program berikut ke Arduino Anda. Anda harus mengetahui bahwa
servo mulai mengubah arah pertama dalam satu arah dan kemudian kembali ke arah yang
lain..
Kode ini didasarkan pada standar 'sweep' kode yang dapat Anda temukan dalam
contoh-contoh Arduino di bawah folder 'servo'. Jika anda lebih suka anda dapat
mengunakan kode itu.
/*
Adafruit Arduino - Lesson 14. Sweep
*/
#inc lude <Servo.h>
int servoPin = 9;
Servo servo;
int angle = 0; // servo position in degrees
void setup()
{
servo.attac h(servoPin);
}
void loop()
{
// sc an from 0 to 180 degrees
for(angle = 0; angle < 180; angle++)
{
servo.write(angle);
delay(15);
}
// now sc an bac k from 180 to 0 degrees
for(angle = 180; angle > 0; angle--)
{
servo.write(angle);
delay(15);
}
}
Motor servo dikendalikan oleh serangkaian pulsa dan membuatnya mudah untuk
menggunakannya, library Arduino telah dibuat sehingga Anda hanya dapat menginstruksi
Servo untuk beralih ke sudut tertentu.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 99 of 14
The Breadboard Layout for 'Knob'
Perintah untuk menggunakan servo seperti built-in perintah Arduino, tetapi karena
Anda tidak selalu akan menggunakan servo dalam proyek Anda, mereka disimpan dalam
sesuatu yang disebut library. Jika Anda akan menggunakan perintah di library servo, Anda
perlu memberitahu IDE Arduino yang Anda gunakan library dengan perintah ini:
#inc lude <Servo.h>
Seperti biasa, kita kemudian menggunakan 'servoPin' variabel untuk menentukan
pin yang mengontrol servo..
Baris ini:
Servo servo;
Mendefinisikan variabel 'servo' baru tipe 'Servo'. Library telah memberikan kita
dengan jenis baru, seperti 'int' atau 'float' yang mewakili servo. Anda benar-benar dapat
membuat hingga delapan servos dengan cara ini, jadi jika kita memiliki dua servos, maka
kita bisa menulis sesuatu seperti ini:
Servo servo1;
Servo servo2;
Dalam 'setup' fungsi kita perlu menghubungkan 'servo' variabel ke pin yang akan
mengontrol servo menggunakan perintah ini:
servo.attac h(servoPin);
Variabel 'angle' digunakan untuk menampung sudut saat ini servo dalam derajat.
Dalam fungsi 'loop', kita menggunakan dua 'for' loop untuk pertama meningkatkan sudut
dalam satu arah dan kemudian kembali yang lain ketika sampai 180 derajat.
The command:
servo.write(angle);
Memberitahu servo untuk memperbarui posisinya ke sudut disediakan sebagai parameter.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 1010 of 14
The Breadboard Layout for 'Knob'
Langkah selanjutnya kami adalah untuk menambahkan pot sehingga kita dapat
mengontrol posisi servo dengan memutar tombol.
Anda hanya perlu menambahkan pot dan kaki dari slider untuk A0 pada Arduino.
© Adafruit Industries http://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors Page 1111 of 14
Arduino Code for 'Knob'
Kode untuk membuat servo mengikuti posisi knob sederhana daripada untuk
membuatnya sweep .
/*
Adafruit Arduino - Lesson 14. Knob
*/
#inc lude <Servo.h>
int potPin = 0;
int servoPin = 9;
Servo servo;
void setup()
{
servo.attac h(servoPin);
}
void loop()
{
int reading = analogRead(potPin); // 0 to 1023
int angle = reading / 6; // 0 to 180-ish
servo.write(angle);
}
Sekarang ada variabel kedua disebut 'potPin'.
Untuk mengatur posisi servo, kita mengambil pembacaan analog dari A0. Ini
memberi kita nilai antara 0 dan 1023. Sejak servo hanya bisa memutar melalui 180
derajat, kita perlu skala ini turun. Membaginya dengan enam akan memberi kita
sudut antara 0 dan 170, yang akan baik-baik saja.
Other Things to Do
© Adafruit Industries Last Updated: 2013-06-11 08:16:07 PM EDT Page 14 of 14
Posisi motor servo diatur oleh panjang pulsa. Servo mengharapkan untuk menerima
pulsa kira-kira setiap 20 milidetik. Jika denyut nadi yang tinggi untuk 1 milidetik, maka
sudut servo akan menjadi nol, jika 1,5 milidetik, maka akan di posisi tengah dan jika 2
milidetik itu akan berada di 180 derajat.
Poin akhir servo dapat bervariasi dan banyak servos hanya mengaktifkan melalui
sekitar 170 derajat. Anda juga dapat membeli servos 'terus menerus' yang dapat memutar
melalui penuh 360 derajat. Berikut video singkat menunjukkan apa yang terjadi di dalam servo.
Hati-hati meskipun, jika Anda membongkar servo Anda seperti ini, ada kesempatan baik
bahwa itu tidak akan kembali bersama-sama benar.
Buka 'sweep’ sketsa dan mencoba mengurangi penundaan dari 15 milidetik untuk
mengatakan 5 milidetik. Perhatikan bagaimana jauh lebih cepat servo berubah.
Cobalah memodifikasi 'knob' sketsa sehingga alih-alih mengambil sudut servo dari posisi
knob, dibutuhkan dari Monitor Serial, sehingga Anda dapat mengontrol servo dari
komputerAnda.
Other Things to Do
© Adafruit Industries Last Updated: 2013-06-11 08:16:07 PM EDT Page 14 of 14
Petunjuk: untuk membuat sketsa Anda membaca jumlah derajat dari Monitor Serial,
Anda dapat menggunakan fungsi Serial.parseInt (). Ini membaca nomor dari Monitor
Serial.
Tentang Penulis
Simon Monk adalah penulis sejumlah buku yang berhubungan dengan Open Source
Hardware.
The following books written by Simon are available from Adafruit: Programming
Arduino (http://adafru.it/1019), 30 Arduino Projects for the Evil Genius (http://adafru.it/868) and
Programming the Raspberry Pi (http://adafru.it/aM5).