#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)
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
Arduino Kullanarak Basit Kendiliğinden Dengeleme Sistemi
Kamera gimbals / stabilizatörlerin icadı sayesinde, videoları sorunsuz ve kolay bir şekilde yakalayabiliyoruz . Piyasada, çok sayıda yerleşik özelliği olan çok çeşitli kamera gimballeri bulacaksınız, ancak bugün yapacağımız şey de kendi içinde benzersiz.
Telefonunuzu sabit tutmanın yanı sıra, kendiliğinden dengeleme platformumuz, en sevdiğiniz içeceklerin dökülmesini önlemek için veya stabilize bir platformun gerekli olduğu herhangi bir yerde bir araba bardak tutucusu olarak kullanılabilir.
Stabilizatörün bir prototipini oluşturmak için, önce aşağıdaki bileşenleri toplamamız gerekir.
Gerekli Bileşenler
Servo Motor
Arduino Uno
telleri
Mpu6050
Kodlama
Kodlamaya başlamak için önce Arduino IDE’de ‘mpu6050’ kütüphanesini kuracağız. Sonra mppu6050 kütüphanesini ve servo kütüphanesini kodumuza ekleyeceğiz. Ardından, sensörlerimizin değerlerini saklamak için bazı değişkenler oluşturacağız. Kurulum fonksiyonunda servo motor pimlerini ayarladıktan sonra, mpu6050 kütüphanesini Şekil 1’deki gibi başlatacağız.
Şekil 1. Arduino Kodu
Şimdi bir sonraki kodlama seviyesine geçeceğiz. Bu bölümde, Mpu6050 sensörünün tüm verilerini toplamak için bir döngü fonksiyonu oluşturulacaktır. Döngü fonksiyonunda Mpu6050 X ekseni ivmeölçer sensörünü servo motor dönüşüyle eşleştireceğiz. Bu, kodumuzun ana parçasıdır. Stablizasyonda nasıl çalıştığını anlayalım.
Mpu6050 ivmeölçer sensörünü hareket ettirdiğimizde, hareketiyle ilgili veriler servo hareket açısı ile eşlenir. Bu nedenle, servo motor ivmeölçerin hareket ağının derecesine göre hareket edecektir.
Şimdi, platformumuzu stabilize etmek için servoyu ivmeölçer sensörü hareketinin tersine hareket ettirmeliyiz. Bu, platformumuzu bir yönde hareket ettirmeye çalıştığımızda, servo şaftın diğer yönde hareket edeceği anlamına gelir. Bu şekilde, ivmeölçer sensörünün hareket ettiği yönden bağımsız olarak kamera veya platformumuz orijinal konumunda kalır.
Not: – Servo aynı hareket yönünde hareket ederse servo’nun harita değerini ters çevirin.
Şekil 2. Servo için Arduino kodu
Bağ
Şimdi bileşenleri aşağıda gösterildiği gibi bağlayın