Pelajaran 18/31: Menggunakan Motor Servo dengan Arduino Kit SunFounder
Motor servo adalah tulang punggung dari banyak proyek robotika dan kendali jarak jauh, memberikan kontrol sudut yang presisi untuk segala hal mulai dari mekanisme kemudi hingga lengan robotik. Panduan ini, berdasarkan Pelajaran 18 dari kursus Kit Arduino SunFounder, akan memandu Anda melalui dasar-dasar penggunaan motor servo dengan Arduino. Anda akan mempelajari cara menghubungkan perangkat keras dan mengontrol posisi motor menggunakan dua metode berbeda: gerakan sapuan sederhana dan posisi yang dikendalikan kenop. Pengetahuan yang Anda peroleh di sini sangat praktis dan dapat diterapkan pada berbagai macam proyek, termasuk:
- Membangun lengan robotik yang dapat menggenggam dan memindahkan objek dengan presisi.
- Membuat mobil atau perahu kendali jarak jauh dengan servo untuk kemudi.
- Mengembangkan pelacak surya yang mengikuti matahari untuk memaksimalkan pengumpulan energi.
- Membangun dudukan kamera pan-and-tilt untuk pengawasan atau fotografi.
- Mengotomatiskan permukaan kontrol pesawat model, seperti kemudi atau aileron.


Ikhtisar Perangkat Keras
Sebelum masuk ke kode, penting untuk memahami motor servo itu sendiri. Seperti yang ditunjukkan dalam video, motor servo tidak berputar terus menerus seperti motor DC standar. Sebaliknya, ia berputar ke posisi sudut tertentu, biasanya antara 0 dan 180 derajat. Ini membuatnya ideal untuk aplikasi yang membutuhkan gerakan presisi. Video ini menyoroti beberapa contoh, dari mengemudikan mobil RC hingga mengontrol sendi kompleks lengan robotik (dalam video pada 00:06).
Servo tersedia dalam berbagai ukuran, dengan ukuran fisik dan peringkat torsi menentukan harga dan aplikasinya. Servo mikro kecil sangat cocok untuk model ringan, sementara servo yang lebih besar dan lebih kuat diperlukan untuk tugas yang lebih berat seperti mengemudikan "mobil yang sangat kuat atau tebal" (dalam video pada 01:59).
Sebagian besar servo hobi memiliki tiga kabel yang ditempatkan dalam konektor standar. Video ini menjelaskan pilihan desain yang cerdas: kabel tengah selalu merupakan kabel daya (VCC), biasanya 5V. Ini adalah fitur keselamatan yang melindungi perangkat dari polaritas yang salah jika konektor dicolokkan terbalik (dalam video pada 03:27). Dua kabel lainnya adalah untuk ground (GND) dan sinyal kontrol.
Panduan Pengkabelan
Menghubungkan servo ke Arduino Anda sangatlah mudah. Video ini memberikan demonstrasi yang jelas tentang koneksi (dalam video pada 04:48). Tiga pin pada konektor servo dihubungkan ke Arduino sebagai berikut:
- Kabel Sinyal (seringkali oranye atau kuning): Hubungkan ini ke pin PWM digital pada Arduino. Contohnya menggunakan pin 9.
- Kabel Daya (seringkali merah): Hubungkan ini ke pin 5V pada Arduino.
- Kabel Ground (seringkali coklat atau hitam): Hubungkan ini ke salah satu pin GND pada Arduino.
Dalam video, presenter menggunakan kabel jumper DuPont jantan-ke-jantan untuk menghubungkan konektor betina pada servo ke header pin Arduino (dalam video pada 05:23).
Program 1: Mengontrol Motor Servo (Sapuan)
Program pertama ini adalah contoh "sapuan" klasik. Ini dirancang untuk menunjukkan rentang gerak penuh servo dengan menggerakkannya bolak-balik antara 0 dan 180 derajat. Ini adalah cara yang bagus untuk memverifikasi bahwa pengkabelan Anda benar dan untuk melihat servo Anda beraksi. Video ini menunjukkan pengunggahan kode ini dan menyaksikan servo menyapu bolak-balik (dalam video pada 09:21).
Untuk mengontrol servo, kode pertama-tama menyertakan pustaka bawaan Servo.h, yang menyederhanakan proses pembuatan sinyal kontrol yang diperlukan. Anda kemudian membuat objek servo dan memberinya nama, seperti myservo. Dalam fungsi setup(), Anda melampirkan objek ini ke pin tertentu menggunakan myservo.attach(9), memberi tahu Arduino bahwa kabel sinyal servo terhubung ke pin 9.
Keajaiban terjadi dalam fungsi loop(), yang menggunakan dua loop for untuk menggerakkan servo. Loop pertama menaikkan variabel posisi pos dari 0 ke 180, menggerakkan servo satu derajat pada satu waktu. Loop kedua melakukan kebalikannya, menurunkan pos dari 180 kembali ke 0. Bagian yang penting adalah delay(15) di akhir setiap iterasi loop. Jeda ini memberi servo cukup waktu untuk bergerak secara fisik ke posisi baru sebelum perintah berikutnya dikirim. Tanpa penundaan ini, servo tidak akan mampu mengikuti dan akan macet atau bergetar (dalam video pada 12:31).
Contoh ini sempurna untuk belajar, tetapi dalam aplikasi nyata, Anda mungkin ingin mengatur servo ke sudut tertentu. Seperti yang ditunjukkan dalam video, Anda dapat memodifikasi kode dengan mengganti loop for dengan perintah tunggal seperti myservo.write(90) untuk menggerakkan servo ke 90 derajat dan menahannya di sana (dalam video pada 10:09).
Program 2: Mengontrol Motor Servo (Kenop)
Program kedua ini membawa kontrol servo selangkah lebih maju dengan memperkenalkan potensiometer (kenop) untuk memberikan kontrol manual secara real-time atas posisi servo. Ini adalah cara yang fantastis untuk memahami bagaimana input analog dapat diterjemahkan menjadi gerakan fisik yang presisi.
Program ini melanjutkan program sebelumnya dengan menambahkan potensiometer. Potensiometer adalah resistor variabel yang berfungsi sebagai pembagi tegangan analog. Saat Anda memutar kenopnya, tegangan pada pin keluarannya berubah. Arduino membaca tegangan ini menggunakan konverter analog-ke-digital (ADC) pada salah satu pin analognya, mengubahnya menjadi nilai antara 0 dan 1023.
Kunci dari program ini adalah fungsi map(). Fungsi ini menskalakan angka dari satu rentang ke rentang lainnya. Dalam kasus ini, fungsi ini digunakan untuk menerjemahkan nilai mentah potensiometer (0 hingga 1023) menjadi nilai yang sesuai untuk servo (0 hingga 180 derajat). Kode membaca nilai potensiometer dengan analogRead(potpin), menskalakannya menggunakan map(val, 0, 1023, 0, 180), lalu mengirim nilai yang telah diskalakan tersebut ke servo dengan myservo.write(val). Ini menciptakan hubungan langsung di mana memutar kenop ke titik tengahnya akan memposisikan servo pada 90 derajat, dan seterusnya.
Metode kontrol ini sangat intuitif dan menjadi dasar bagi banyak antarmuka manusia-mesin, mulai dari remote control sederhana hingga pengontrol robotik yang kompleks.
Demonstrasi Proyek Langsung
Video ini memberikan demonstrasi langsung dari kedua program yang sedang berjalan. Untuk program sapuan (sweep), Anda dapat melihat lengan servo bergerak dengan mulus dari 0 hingga 180 derajat dan kembali lagi. Presenter juga menunjukkan bagaimana menyesuaikan ukuran langkah dalam loop for (misalnya, dari 1 derajat menjadi 20 derajat) dan waktu tunda mengubah perilaku servo, membuat gerakannya lebih cepat tetapi kurang halus (dalam video pada menit 11:19).
Untuk program kenop, demonstrasi menunjukkan bagaimana memutar potensiometer secara langsung mengontrol posisi servo secara real-time. Umpan balik visual ini sangat baik untuk memahami hubungan antara input analog dan output fisik.
Bab
- [00:00] Pengenalan Motor Servo
- [01:07] Aplikasi Motor Servo
- [02:57] Anatomi Motor Servo
- [04:48] Menghubungkan Servo ke Arduino
- [06:06] Menjelajahi Kode Contoh Sweep
- [09:21] Mendemonstrasikan Program Sweep
- [10:04] Mengatur Sudut Servo Kustom
- [11:19] Memodifikasi Kecepatan dan Ukuran Langkah Sweep
- [13:15] Contoh Motor Servo Lainnya
/*
Lesson 18/31: Controlling servo motor (sweep)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Servo.h>
Servo myservo; // create Servo object to control a servo
// twelve Servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the Servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
/*
Lesson 18/31: Controlling servo motor (knob)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Common Course Links
Common Course Files
Hal-hal yang mungkin Anda butuhkan
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Sumber daya & referensi
-
DokumentasiDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
EksternalPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Berkas📁
Pustaka Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB