Arduino ile servo motoru bir potansiyometre ile kontrol

Arduino Başlangıç ​​Seti: Proje 5

Proje adı:  MOOD CUE video

https://youtu.be/bD1tHurWvUM

Keşfedin:  haritalama değerleri, servo motorlar, yerleşik kütüphaneleri kullanarak

https://youtu.be/bD1tHurWvUM

Kod:


#include <Servo.h>//include library code Servo myServo; //servo object const int potPin = A0; //potentiometer attached to analog pin 0 const int servoPin = 9;//servo attached to digital pin 9 int potVal;//declare variable int angle; //declare variable //************************************ void setup() { myServo.attach(servoPin); // servo attahed to servo object Serial.begin(9600);//initialise serial communication on 9600 bps } void loop() { potVal = analogRead(potPin); // value from potentiometer pin Serial.print("potVal: ");//print value of potentiometer in serial monitor Serial.print(potVal); angle = map(potVal, 0, 1023, 0, 179);// change values from 0-1023 to 0-179 Serial.print(", angle: ");//print angle of potentiometer in serial monitor Serial.println(angle); myServo.write(angle);//turn servo arm to angle set by potentiometer delay(15); // delay set for 15 microseconds }

kütüphaneler

Bu projede, şu parçalara ihtiyacınız vardı:

1.Aruduino Uno R3 (Arduino’nun diğer sürümünü de kullanabilirsiniz)

2. atlama kabloları

3. Potansiyometre 1 adet 

4. Breadboard yarım boy 

5. Arduino IDE (siz indirebilirsiniz burada  )

6. Kondansatörler 100 FF 2 adet

7. SG90 mikro servo motor kolu ile

8. Erkek başlık pimleri (3 pim)

GENEL

Servo motorları, daire şeklinde dönmeyen, ancak belirli bir pozisyona hareket eden ve tekrar hareket etmelerini söyleyene kadar orada kalan özel bir motor türüdür. Servolar genellikle sadece 180 derece döner (dairenin yarısı). Renkli Karıştırma Lambası Projesinde PWM a a LED’lere nazaran bakliyat yöntemine benzer şekilde, servo motorlar hangi açıya hareket edeceklerini söyleyen birkaç pals bekliyor. Darbeler daima aynı zaman aralıklarında gelir, ancak genişlik 1000 ile 2000 mikrosaniye arasında değişir. Bu darbeleri oluşturmak için kod yazmak mümkün olsa da, Arduino yazılımı motoru kolayca kontrol etmenizi sağlayan bir kitaplıkla birlikte gelir. Servo yalnızca 180 derece döndüğü ve analog girişiniz 0 ila 1023 arasında olduğundan, map () işlevini kullanmanız gerekir.potansiyometreden gelen değerlerin ölçeğini değiştirmek için. Arduino ile çok çeşitli sensörler ve aktüatörler ve diğer cihazlar için kütüphaneler var. Bir Arduino yazılım kütüphanesi, bir programlama ortamının işlevselliğini arttırır. Arduino yazılımı, donanım ya da verilerle çalışmak için faydalı bir dizi kütüphaneyle birlikte gelir. Dahil edilen kütüphanelerden biri servo motorlarla kullanılmak üzere tasarlanmıştır. Kodunuzda, kütüphaneyi içe aktarırsınız ve tüm işlevselliği sizin kullanımınıza açık olacaktır.

DEVRE

Arduino’dan 5V’yi takın ve breadboard’unuzun bir tarafına topraklayın. Breadboard’a bir potansiyometre yerleştirin ve bir tarafı 5V’ye, diğerini toprağa bağlayın. Potansiyometre bir tür voltaj bölücüsüdür. Düğmeyi çevirirken, orta pim ile güç arasındaki voltaj oranını değiştirirsiniz. Bu değişikliği analog giriş üzerinde okuyabilirsiniz. Orta pimi analog pim 0’a bağlayın. Bu, servo motorunuzun konumunu kontrol eder. Servoda çıkan üç tel var. Biri güç (kırmızı), biri toprak (siyah veya kahverengi), üçüncüsü (beyaz veya turuncu veya sarı) Arduino’dan bilgi alacak kontrol hattıdır. Servo tellerin dişi uçlarına üç erkek başlık takın.

Başlıkları breadboard’unuza bağlayın, böylece her pimin farklı bir sıraya girmesi sağlanır. 5V’ı kırmızı kabloya, siyah kabloya ve beyaz kabloyu pim 9’a bağlayın. Bir servo motor hareket etmeye başladığında, hareket halindeyken olduğundan daha fazla akım çeker. Bu, kartınızdaki voltajın düşmesine neden olur. Erkek başlıkların hemen yanına güç ve topraklama 100 uf kapasitör yerleştirerek, oluşabilecek voltaj değişikliklerini düzeltebilirsiniz. Ayrıca potansiyometreye giren güç ve toprağa bir kapasitör yerleştirebilirsiniz. Bunlara ayrıştırma kapasitörleri denir, çünkü bileşenlerin devrenin geri kalanından kaynaklanan değişiklikleri azaltır veya ayrıştırırlar. Katodu toprağa bağladığınızdan (bu kısımda siyah bir şerit bulunan taraf) ve anotun güçlendiğinden emin olmak için çok dikkatli olun. Kondansatörleri arkaya koyarsanız, patlayabilirler. Servo motorunuz dişi konnektörlerle birlikte gelir, bu nedenle breadboard’a bağlamak için başlık pimleri eklemeniz gerekir.

İlk önce servo kütüphanesini içe aktarmanız gerekir. Bu, kütüphanedeki ilaveleri çiziminize uygun hale getirir. Servoya atıfta bulunmak için, değişkende servo kütüphanesinin adlandırılmış bir örneğini oluşturmanız gerekir. Buna nesne denir. Bunu yaptığınızda, servo kütüphanesinin sunduğu tüm fonksiyon ve yeteneklere sahip benzersiz bir isim yapıyorsunuz. Programdaki bu noktadan sonra, myServo’ya her başvurduğunuzda servo nesnesiyle konuşursunuz. Potansiyometrenin bağlı olduğu pin için adlandırılmış bir sabit ve servonun hareket etmesini istediğiniz analog giriş değerini ve açısını tutacak değişkenleri ayarlayın. In kurulum ()Arduino’ya servonuzun hangi ucuna bağlı olduğunu söylemeniz gerekir. Potansiyometreden değerleri kontrol edebilmeniz ve servo motordaki açılarla nasıl eşleştiğini görebilmeniz için bir seri bağlantı ekleyin. Gelen döngü () , analog giriş okumak ve seri monitöre değeri çıktı. Analog girişinizden servo motor için kullanılabilir bir değer oluşturmak için, map () işlevini kullanmak en kolay yoldur . Bu kullanışlı fonksiyon sayıları sizin için ölçeklendirir. Bu durumda 0 – 1023 arasındaki değerleri 0 – 179 arasındaki değerlere değiştirir. Beş argüman alır: ölçeklenecek sayı ( potVal), girişin (0) minimum değeri, girişin (1023) maksimum değeri, çıkışın (0) minimum değeri ve çıkışın (179) maksimum değeridir. Bu yeni değeri açı değişkeninde saklayın. Ardından, eşlenen değeri seri monitöre yazdırın. Sonunda, servoyu hareket ettirebiliriz. Servo.write () komutu motoru belirlediğiniz açıya getirir. Döngünün sonuna () bir gecikme koyun, böylece servo yeni konumuna geçme zamanı bulur.BAŞLANGIÇ

Arduino’nuz programlandıktan ve çalıştırıldıktan sonra, seri monitörü açın. Buna benzer bir değer akışı görmelisiniz: potVal: 1017, angle: 171 . Potansiyometreyi çevirdiğinizde, sayıların değiştiğini görmelisiniz. Servo motorunuzun da yeni bir konuma geçtiğini görmelisiniz. PotVal değeri arasındaki ilişkiye dikkat edinve seri monitördeki açı ile servo pozisyonu. Tencereyi çevirirken tutarlı sonuçlar görmelisiniz. Potansiyometrelerin analog giriş olarak kullanılmasıyla ilgili güzel bir şey, size 0 ile 1023 arasında tam bir değer aralığı vermeleridir. Bu, analog giriş kullanan projeleri test etmede yardımcı olur. Servo motorları, içinde çok sayıda dişli ve bazı devrelere sahip normal motorlardır. İçerideki mekanik, devreye geri bildirim sağlar, bu nedenle daima konumunun farkındadır. Bu sınırlı bir hareket aralığı gibi görünse de, bazı ek mekaniklerle çok çeşitli farklı hareketler yapmasını sağlamak mümkündür.ÖZETServo motorlar, programlama ortamını genişleten bir kod koleksiyonu olan bir kütüphane kullanarak Arduino tarafından kolayca kontrol edilebilir. Bazen değerleri bir ölçekden diğerine eşleyerek yeniden hedeflemek gerekir.

Bu konuda Youtube’daki filmlerden birini izleyin – buraya tıklayın

Posted in Makaleler.