Daha önce tartışıldığı gibi, Arduino Due, elektronik mühendisleri ve hobileri için tasarlanmış bir ARM denetleyici tabanlı karttır. Bu DUE panosu CNC makineleri, 3D yazıcılar, robotik kollar vb. Yapmak için kullanılabilir. Tüm bu projelerin ortak bir özelliği Konum Kontrolüdür. Bu projelerden herhangi birinin konumlarına doğru doğruluğa ihtiyacı vardır. Bu makinelerde doğru pozisyonlar Servo Motorlar ile elde edilebilir. Bu oturumda Arduino Due ile bir Servo Motorun konumunu kontrol edeceğiz. Arduino Uno ile Servo Motor Arayüzünü ve 8051 Mikrodenetleyicili Servo Motor Arayüzünü zaten ele aldık.
Servo motorlar:
Servo Motorlar, doğru şaft hareketleri veya konumları ile bilinir. Bunlar yüksek hızlı uygulamalar için önerilmemektedir. Bunlar düşük hız, orta tork ve doğru konum uygulaması için önerilmiştir. Bu motorlar robotik kollu makinelerde, uçuş kontrollerinde ve kontrol sistemlerinde kullanılmaktadır. Servo motorlar ayrıca bazı yazıcı ve faks makinelerinde de kullanılmaktadır.
Servo motorlar farklı şekil ve boyutlarda mevcuttur. Biz kullanıyor olacak SG90 Servo Motor Bu eğitimde. SG90, 180 derecelik bir servo motordur. Yani bu servo ile ekseni 0 ile 180 derece arasında konumlandırabiliriz.
Bir Servo Motorun temelde üç kablosu vardır, biri pozitif voltaj, diğeri toprak içindir ve sonuncusu konum ayarı içindir. KIRMIZI kablo güce bağlı, Kahverengi kablo toprağa bağlı ve SARI kablo (veya BEYAZ) sinyale bağlı.
Bir Servo Motor, DC motor, konum kontrol sistemi ve dişlilerin bir kombinasyonudur. Servoda, PWM sinyalini sinyal pininden alan bir kontrol sistemimiz bulunmaktadır. Sinyalin kodunu çözer ve ondan görev oranını alır. Bundan sonra oranı önceden tanımlanmış konum değerleriyle karşılaştırır. Değerlerde farklılık varsa servonun konumunu buna göre ayarlar. Dolayısıyla, servo motorun eksen konumu, PWM sinyalinin SIGNAL pinine olan görev oranına bağlıdır.
PWM (Darbe Genişliği Modülasyonlu) sinyalinin frekansı, servo motor tipine göre değişebilir. Burada önemli olan PWM sinyalinin GÖREV ORANI. Bunu Arduino Due ile PWM için kontrol edin. Ancak bu durumda Görev Oranı seçimi konusunda endişelenmemize bile gerek yok. Arduino'da özel bir fonksiyonumuz var; çağırdıktan sonra, sadece açıyı belirterek servo konumunu ayarlayabiliriz. Aşağıdaki Çalışma Bölümünde bundan bahsedeceğiz.
Servo Motoru Arduino Due ile Arayüzleştirmeden önce , servo'nuzu bu Servo Motor Test Devresi yardımıyla test edebilirsiniz. Ayrıca Flex Sensör veya Kuvvet Sensörü ile Servo Kontrolü için bu projeleri kontrol edin.
Bileşenler:
Donanım: Arduino Due, güç kaynağı (5v), Servo motor.
Yazılım: Arduino her gece, aşağıdaki bağlantıdan indirin (https://www.arduino.cc/en/Main/Software)
Bu yazılımın nasıl indirilip kurulacağına ilişkin ayrıntılar için Arduino Due ile Başlarken ilk eğitimini ziyaret edin.
Devre Şeması ve Çalışma Açıklaması:
ARDUINO'da daha önce belirtildiği gibi, başlık dosyası çağrıldığında veya dahil edildiğinde frekansları ve görev oranlarını buna göre ayarlayacak önceden tanımlanmış kitaplıklarımız var. ARDUINO'da ihtiyaç duyulan servo pozisyonunu belirtmemiz yeterlidir ve DUE servo için uygun PWM sinyali üretir. Servo pozisyonunu doğru bir şekilde elde etmek için yapmamız gerekenler,
#Dahil etmek
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (gerekli_konum_ açısı);
"#İnclude" başlık dosyası
İkinci olarak “Servo myservo” kullanılarak servo için bir isim seçilecek, burada myservo seçilen isimdir, bu yüzden pozisyon için yazarken bu adı kullanacağız, bu özellik kontrol etmemiz gereken çok sayıda servo olduğunda kullanışlı oluyor, Bununla 12 servoyu kontrol edebiliriz.
12 PWM kanalına sahip Arduino Due ile, DUE'ye servonun sinyal pininin nereye bağlı olduğunu veya PWM sinyalini nerede üretmesi gerektiğini söylememiz gerekir. Bunu yapmak için "myservo.attach (2)" sahibiz; , burada DUE'ye servonun sinyal pinini PIN2'ye bağladığımızı söylüyoruz.
Geriye kalan tek şey konumu ayarlamak, " myservo.write (45) " kullanarak servo konumunu ayarlayacağız ; bu komutla servo kolu 45 derece hareket eder. '45'i' 175 'olarak değiştirirsek, servo ekseni 175 dereceye kadar açı yapar ve orada kalır. Bundan sonra, ne zaman servonun konumunu değiştirmemiz gerekirse, " myservo.write (required_position_angle) " komutunu çağırmamız yeterlidir; .
Programda ilmekler kullanarak açıları artırıp azaltacağız. Böylece servo, 0'dan 180'e, sonra 180'den 0'a vb. Tarar. Arduino Due tarafından sunulan Servo Motor Kontrolü, aşağıda C kodu adım adım açıklanmaktadır.