Bu eğitim şunun parçasıdır: Servo Motorlar
Servo motorlarla ilgili tüm videolar burada listelenmiştir. Diğer videolara ait bağlantılar bu makalenin altında yer almaktadır.
Potansiyometre Kullanarak Arduino Servo Motor Kontrolü
Bu eğitimde, bir potansiyometre kullanarak bir servo motoru nasıl kontrol edeceğimizi keşfedeceğiz. Amaç, servo motorun konumunun potansiyometrenin döndürülmesine bağlı olarak ayarlandığı basit bir devre oluşturmaktır. Bu projenin sonunda, potansiyometreyi döndürdüğünüzde servo açısını 0'dan 180 dereceye kadar pürüzsüz bir şekilde değiştiren çalışan bir modeliniz olacak. Bu, Arduino'da analog girdi ve servo kontrolünün temellerini anlamanın harika bir yoludur.
Bunu başarmak için bir Arduino kartı, bir servo motor ve bir potansiyometre kullanacağız. Potansiyometre, Arduino'ya analog bir giriş sağlayarak değişken bir direnç gibi davranır ve bu da servo motorun konumunu belirlemesine yardımcı olur. Bu proje sadece eğlenceli değil, aynı zamanda elektronik ve programlama konularında temel kavramları gösterdiği için eğitici de. Daha derin bir açıklama için videoyu kontrol etmeyi unutmayın (videoda 00:00).
Donanım Açıklandı
Bu projede ana bileşenler Arduino kartı, servo motor ve potansiyometredir. Arduino, işlemin beyni olup, girişleri işleyip çıkışları kontrol eder. Servo motor, Arduino'dan aldığı komutlara göre fiziksel olarak hareket edecek olan bileşendir. Potansiyometre, 1k ohm ile 1M ohm arasında değişen değerlerle kullanıcıların servo hareketine dönüşen değişken bir giriş sağlamasına olanak tanır.
Servo motor, istenen pozisyonu belirten bir PWM (Darbe Genişliği Modülasyonu) sinyali alarak çalışır. Potansiyometre döndürüldüğünde, direncini değiştirir ve bu direnç Arduino tarafından analog bir voltaj olarak okunur. Servo motor 5V ile çalışır. 3.3V ile çalışmaz. Bu voltaj daha sonra servo motorun hareket aralığına haritalanır ve 0 dereceden 180 dereceye kadar pürüzsüz hareket sağlar.
SG90 Servo Motor için Veri Sayfası Detayları
| Üretici | Paralaks |
|---|---|
| Parça numarası | SG90 |
| Mantık/Giriş-Çıkış voltajı | 5 V |
| Besleme voltajı | 4.8-6 V |
| Çıkış akımı (kanal başına) | ~500 mA |
| Zirve akımı (kanal başına) | 1 A |
| PWM frekansı rehberi | 50 Hz |
| Giriş mantığı eşikleri | 0.5 V (düşük), 2.5 V (yüksek) |
| Gerilim düşüşü / RDS(on)saturasyon | 0.5 V, 500 mA'de |
| Termal sınırlar | 0°C ile 60°C |
| Paket | Standart 9g Servo |
| Notlar / varyantlar | RC uygulamalarında yaygın olarak kullanılır. |
- Servo'nun maksimum akım değerini aşmadığından emin olun.
- Servo yüksek yüklerde sürekli çalışıyorsa bir ısı emici kullanın.
- Potansiyometreyi doğru okumalar için bir analog pine bağlayın.
- Servo kontrolü için PWM sinyal zamanlamasına dikkat edin.
- Servo'nun hareket alanını kontrol edin, fiziksel engellerden kaçınmak için.
Bağlantı Talimatları


Bu kurulum için bileşenleri aşağıdaki gibi bağlamanız gerekecek:
Potansiyometrenin orta pinini (silecek) Arduino'nun analog pinine bağlayın.A0Potansiyometrenin diğer iki pini bağlanmalıdır.5VveGNDArduino'da. Servo motor için, kırmızı kabloyu bağlayın5V, siyah tel ileGNDve sarı veya beyaz tel dijital pine9Arduino'da. Bu düzenleme, potansiyometrenin Arduino'ya analog bir giriş sağlamasına olanak tanır; bu da servo motorun konumunu bu girişe göre kontrol edecektir.
Tüm bağlantıları doğruladığınızdan ve servonun hareket alanında engellenmediğinden emin olun. Farklı bir Arduino modeli kullanıyorsanız, analog giriş ve servo çıkışı için pin atamalarının uyumlu olduğunu doğrulayın.
Kod Örnekleri ve Geçiş Rehberi
Aşağıda servoyu başlatan ve potansiyometre değerini okuyan kodun bir bölümü bulunmaktadır:
#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
}
Bu kodda, Servo kütüphanesini dahil ediyoruz ve "servo" adında bir servo nesnesi oluşturuyoruz.myservoServo, pine bağlıdır.9, bu pini kullanarak onu kontrol etmemizi sağlar.
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
}
Döngü fonksiyonunda, potansiyometre değerini pin'den okuyoruz.A0ve aralığını (0-1023) servo aralığına (0-180 derece) eşleştir. Bumyservo.write(pos)komut daha sonra potansiyometrenin döngüsüne dayalı olarak servoyu istenen konuma taşır.
Gösterim / Ne Beklemeli
Bu programı çalıştırdığınızda, potansiyometreyi döndürdükçe servo motorun 0'dan 180 dereceye kadar düzgün bir şekilde hareket ettiğini görmelisiniz. Eğer servo beklenildiği gibi hareket etmiyorsa, kabloları kontrol edin ve potansiyometrenin doğru çalıştığından emin olun. Ayrıca, Arduino'nun düzgün bir şekilde güç aldığından ve kodun hatasız bir şekilde yüklendiğinden emin olun. Servo motorun potansiyometrenin konumunu gerçek zamanlı olarak yansıttığını göreceksiniz (videoda 02:00'de).
Video Zaman Damgaları
- 00:00- Projeye Giriş
- 01:30- Donanım kurulumu açıklaması
- 03:45- Kablolama talimatları
- 05:00- Kod incelemesi
- 07:30- Tamamlanmış projenin gösterimi
Bu eğitim şunun parçasıdır: Servo Motorlar
- Arduino ile Push Butonlar Kullanarak Servo Kontrolü
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Potansiyometre ile Arduino Kullanarak Servo Kontrolü
- Potansiyometre ve LCD1602 ile Arduino Kullanarak Servo Kontrolü
- Kızılötesi Uzaktan Kumanda ile Arduino Kullanarak Servo Motorları Kontrol Etme
- Arduino ile El Hareketleriyle Servo Pozisyonunu Kontrol Etme
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Sürekli 360° Servo Arduino ile Nasıl Kullanılır
- Arduino Kodu ve PCA9685 16 Kanallı 12 Bit Servo Kontrolcü V1 için Video
- Bir Arduino Servo Geçiş Anahtarı Bir Buton ile Oluşturun
/**
*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
}
}
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Veri Sayfası (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB