Arduino Servo Motorlar

Servo motorlar, belirli bir konuma dönebilen harika cihazlardır.

Genellikle 180 derece dönebilen bir servo kolu vardır. Arduino'yu kullanarak, bir servoya belirli bir konuma gitmesini söyleyebiliriz ve oraya gider. Kadar basit!

Servo motorlar ilk olarak Uzaktan Kumanda (RC) dünyasında, genellikle RC otomobillerinin veya bir RC düzlemindeki kanatların kontrolünü kontrol etmek için kullanıldı. Zamanla robotik, otomasyon ve elbette Arduino dünyasında kullanımlarını buldular.

Burada bir servo motorun nasıl bağlanacağını ve daha sonra farklı pozisyonlara nasıl dönüştürüleceğini göreceğiz.

Yedi yıl önce bir Arduino'ya bağladığım ilk motor bir Servo motoruydu. Nostaljik an bitti, işe geri dönün!

Aşağıdaki şeylere ihtiyacımız olacak:

  1. Bilgisayara USB ile bağlı bir Arduino kartı
  2. Bir servo motor
  3. Atlama telleri

Servo motor dünyasında birkaç büyük isim var. Hitec ve Futaba önde gelen RC servo üreticisidir. Onları satın almak için iyi yerler Servocity, Sparkfun ve Hobbyking.

Bu eğitici ve daha pek çok şeyi burada bulunan Arduino Geliştirme Yemek Tarifleri kitabımda bulabilirsiniz. : D

Adım 1: Bunları Bağlama

Bir servo motorda her şey bulunur: bir motor, bir geri bildirim devresi ve en önemlisi bir motor sürücüsü. Sadece bir güç hattı, bir toprak ve bir kontrol pimine ihtiyaç duyar.

Arduino'ya bir servo motor bağlama adımları şunlardır:

  1. Servo motorun üç pimli bir dişi konektörü vardır. En koyu ve hatta siyah olan genellikle zemindir. Bunu Arduino GND'ye bağlayın.
  2. Tüm standartlarda kırmızı olması gereken güç kablosunu Arduino'da 5V'a bağlayın.
  3. Servo konektöründeki kalan hattı Arduino'daki dijital bir pime bağlayın.

Arduino'ya bağlı servoyu görmek için görüntüyü kontrol edin.

2. Adım: Kod

Aşağıdaki kod bir servo motoru 0 dereceye çevirecek, 1 saniye bekleyecek, sonra 90'a çevirecek, bir saniye daha bekleyecek, 180'e çevirecek ve geri dönecektir.

 // Servo kütüphanesini dahil et 
#include // Servo pinini bildir int int servoPin = 3; // Bir servo nesnesi oluşturma Servo Servo1; void setup () {// Servoyu kullanılan Servo1.attach (servoPin) pin numarasına eklememiz gerekir; } void loop () {// Servo 0 dereceye gitmeli Servo1.write (0); Gecikme (1000); // Servoyu 90 dereceye getirin Servo1.write (90); Gecikme (1000); // Servo 180 dereceye gitmeli Servo1.write (180); Gecikme (1000); }
Servo motor başka bir dijital pime bağlıysa, servoPin değerini kullanılan dijital pimin değerine değiştirin.

Ekler

  • Servo_motor.ino İndir

3. Adım: Nasıl Çalışır?

Servolar akıllı cihazlardır. Sadece bir giriş pini kullanarak Arduino'dan pozisyon alırlar ve oraya giderler. Dahili olarak, bir motor sürücüsü ve servo kolunun istenen konuma ulaşmasını sağlayan bir geri besleme devresi vardır. Ancak giriş piminde ne tür sinyaller alıyorlar?

PWM'ye benzer bir kare dalgadır. Sinyaldeki her döngü 20 milisaniye sürer ve çoğu zaman değer DÜŞÜK olur. Her döngünün başlangıcında, sinyal 1 ila 2 milisaniye arasındaki bir süre için YÜKSEK olur. 1 milisaniyede 0 dereceyi ve 2 milisaniyede 180 dereceyi temsil eder. Arada, 0–180 arasındaki değeri temsil eder. Bu çok iyi ve güvenilir bir yöntemdir. Grafik, anlaşılmasını biraz daha kolaylaştırıyor.

Servo kütüphanesini kullanmanın, Arduino UNO ve benzeri kartlardaki PWM pin 9 ve 10'daki PWM işlevselliğini otomatik olarak devre dışı bıraktığını unutmayın.

Kod dökümü

Kod, yalnızca servo nesnesini bildirir ve sonra servo.attach () işlevini kullanarak servoyu başlatır. Servo kütüphanesini dahil etmeyi unutmamalıyız. Döngüde (), servoyu 0 dereceye ayarladık, bekleyin, sonra 90'a ve daha sonra 180 dereceye ayarlayın.

Adım 4: Servolar Hakkında Daha Fazla Şey

Servoları kontrol etmek kolaydır ve işte kullanabileceğimiz birkaç püf noktası daha vardır:

Kesin darbe süresinin kontrol edilmesi

Arduino, servoların kontrolünü basitleştiren yerleşik bir servo.write (derece) işlevine sahiptir . Ancak, tüm servolar tüm pozisyonlar için aynı zamanlamalara uymaz. Genellikle 1 milisaniye 0 derece, 1.5 milisaniye 90 derece anlamına gelir ve elbette 2 milisaniye 180 derece anlamına gelir. Bazı servolar daha küçük veya daha büyük aralıklara sahiptir.

Daha iyi kontrol için, tam mikrosaniye sayısını parametre olarak alan servo.writeMicroseconds (us) işlevini kullanabiliriz. Unutmayın, 1 milisaniye 1.000 mikrosaniyeye eşittir.

Daha fazla servo

Birden fazla servo kullanmak için birden fazla servo nesnesi bildirmemiz, her birine farklı pinler eklememiz ve her servoyu ayrı ayrı ele almamız gerekir. İlk olarak, ihtiyacımız olduğu kadar servo nesnelerini bildirmemiz gerekiyor:

 // Servo nesneleri oluşturma Servo Servo1, Servo2, Servo3; 

O zaman her nesneyi bir servo motora bağlamalıyız. Unutmayın, her servo motor ayrı bir pim kullanır:

 Servo1.attach (servoPin1); Servo2.attach (servoPin2); Servo3.attach (servoPin3); 

Sonunda, her bir servo nesnesini ayrı ayrı ele almamız gerekiyor:

 Servo1.write (0); // Servo 1'i 0 dereceye ayarlayın Servo2.write (90); // Servo 2'yi 90 dereceye ayarlayın 

Bağlantı açısından, servo toprakları Arduino'da GND'ye, servo gücü 5V veya VIN'ye (güç girişine bağlı olarak) gider ve sonunda her sinyal hattı farklı bir dijital pime bağlanmalıdır. Popüler inanışın aksine, servoların PWM pinleri tarafından kontrol edilmesine gerek yoktur - herhangi bir dijital pin çalışacaktır.

Sürekli dönüş servoları

Sürekli rotasyon servosu olarak etiketlenmiş özel bir servo cinsi vardır. Normal bir servo giriş sinyaline bağlı olarak belirli bir konuma giderken, sürekli bir dönüş servosu sinyale orantılı bir hızda saat yönünde veya saat yönünün tersine döner. Örneğin, Servo1.write (0) işlevi, servo motorun tam hızda saat yönünün tersine dönmesini sağlar. Servo1.write (90) işlevi motoru durdurur ve Servo1.write (180) motoru tam hızda saat yönünde döndürür.

Bu tür servolar için birden fazla kullanım vardır; ancak, bunlar gerçekten yavaştır. Bir mikrodalga fırın yapıyorsanız ve yiyecekleri döndürmek için bir motora ihtiyacınız varsa, bu sizin seçiminizdir. Ancak dikkatli olun, mikrodalgalar tehlikelidir!

5. Adım: Daha Fazla Bilgi Alın

Fırçasız, transistör sürücüleri veya motor hız kontrolü gibi motorlarla ilgili daha fazla konuyu burada bulunan Arduino Development Cookbook'umda bulabilirsiniz. : D

İlgi̇li̇ Makaleler