Search Code

Kontrol Motor Servo Arduino Menggunakan Potensiometer

Kontrol Motor Servo Arduino Menggunakan Potensiometer

Dalam tutorial ini, kita akan menjelajahi cara mengendalikan motor servo menggunakan potensiometer dengan Arduino. Tujuannya adalah untuk membuat rangkaian sederhana di mana posisi servo disesuaikan berdasarkan putaran potensiometer. Pada akhir proyek ini, Anda akan memiliki model yang berfungsi yang secara halus mengubah sudut servo dari 0 hingga 180 derajat saat Anda memutar potensiometer. Ini adalah cara yang bagus untuk memahami dasar-dasar input analog dan kontrol servo di Arduino.

Untuk mencapai ini, kami akan menggunakan papan Arduino, motor servo, dan potensiometer. Potensiometer berfungsi sebagai resistor variabel, memberikan input analog ke Arduino, yang kemudian akan menentukan posisi motor servo sesuai. Proyek ini tidak hanya menyenangkan tetapi juga mendidik, karena menunjukkan konsep-konsep kunci dalam elektronik dan pemrograman. Untuk penjelasan yang lebih mendalam, pastikan untuk menonton video (dalam video di 00:00).

Penjelasan Perangkat Keras

Dalam proyek ini, komponen utama adalah papan Arduino, motor servo, dan potensiometer. Arduino adalah otak dari operasi, memproses input dan mengontrol output. Motor servo adalah yang akan bergerak secara fisik berdasarkan perintah yang diterimanya dari Arduino. Potensiometer dapat berkisar dari 1k ohm hingga 1M ohm yang memungkinkan pengguna memberikan input variabel yang diterjemahkan menjadi gerakan servo.

Motor servo beroperasi dengan menerima sinyal PWM (Pulse Width Modulation) yang menunjukkan posisi yang diinginkan. Potensiometer, ketika diputar, mengubah resistansinya, yang dibaca oleh Arduino sebagai tegangan analog. Motor Servo beroperasi dengan 5V. Tidak berfungsi dengan 3.3V. Tegangan ini kemudian dipetakan ke rentang gerakan motor servo, memungkinkan pergerakan yang halus dari 0 derajat hingga 180 derajat.

Detail Lembar Data untuk Motor Servo SG90

ProdusenParalaksis
Nomor bagianSG90
Tegangan Logika/IO5 V
Tegangan suplai4.8-6 V
Arus keluaran (per saluran)~500 mA
Arus puncak (per saluran)1 A
Panduan frekuensi PWM50 Hz
Ambang logika input0,5 V (rendah), 2,5 V (tinggi)
Penurunan tegangan / RDS(on)/ saturasi0,5 V pada 500 mA
Batas termal0°C hingga 60°C
PaketServo Standar 9g
Catatan / varianUmumnya digunakan dalam aplikasi RC

  • Pastikan servo tidak melebihi rating arus maksimumnya.
  • Gunakan heatsink jika servo beroperasi terus-menerus pada beban tinggi.
  • Sambungkan potensiometer ke pin analog untuk pembacaan yang akurat.
  • Hati-hati dengan waktu sinyal PWM untuk kontrol servo.
  • Periksa jangkauan gerak servo untuk menghindari hambatan fisik.

Instruksi Pemasangan Kabel

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Untuk pengaturan ini, Anda perlu menghubungkan komponen-komponen sebagai berikut:

Sambungkan pin tengah potensiometer (penghapus) ke pin analog Arduino.A0. Dua pin lainnya dari potensiometer harus dihubungkan ke5VdanGNDpada Arduino. Untuk motor servo, sambungkan kabel merah ke5V, kabel hitam keGND, dan kabel kuning atau putih ke pin digital9pada Arduino. Pengaturan ini memungkinkan potensiometer untuk memberikan input analog ke Arduino, yang akan mengontrol posisi motor servo berdasarkan input tersebut.

Pastikan untuk memverifikasi semua koneksi dan memastikan bahwa servo tidak terhalang dalam jangkauan geraknya. Jika menggunakan model Arduino yang berbeda, konfirmasikan bahwa penugasan pin untuk input analog dan output servo kompatibel.

Contoh Kode & Panduan

Berikut adalah cuplikan kode yang menginisialisasi servo dan membaca nilai potensiometer:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

Dalam kode ini, kami menyertakan pustaka Servo dan membuat objek servo yang disebutmyservoServo terpasang pada pin9, yang memungkinkan kita untuk mengendalikannya menggunakan pin ini.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

Dalam fungsi loop, kita membaca nilai potensiometer dari pinA0dan memetakan dari rentangnya (0-1023) ke rentang servo (0-180 derajat). Themyservo.write(pos)perintah kemudian memindahkan servo ke posisi yang diinginkan berdasarkan rotasi potensiometer.

Demonstrasi / Apa yang Diharapkan

Saat Anda menjalankan program ini, Anda harus melihat motor servo bergerak dengan lancar dari 0 hingga 180 derajat saat Anda memutar potensiometer. Jika servo tidak bergerak seperti yang diharapkan, periksa kabelnya dan pastikan potensiometer berfungsi dengan baik. Selain itu, pastikan Arduino mendapatkan daya dengan benar dan kode diunggah tanpa kesalahan. Anda dapat mengharapkan untuk melihat servo mencerminkan posisi potensiometer secara real-time (dalam video pada 02:00).

Stempel Waktu Video

  • 00:00- Pengenalan proyek
  • 01:30- Penjelasan pengaturan perangkat keras
  • 03:45- Instruksi pengkabelan
  • 05:00- Penjelasan kode
  • 07:30- Demonstrasi proyek yang telah selesai

Gambar

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Bahasa: C++
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/



#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 15ms 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 15ms for the servo to reach the position
  }
}

Sumber daya & referensi

Belum ada sumber daya.

Berkas📁

Lembar Data (pdf)