İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Özel Ders Başvuru Ücretsiz ön görüşme Ana Sayfa

Tinkercad’de Arduino ile Servo Motor Nasıl Döndürülür?

tinkercadde-arduino-ile-servo-motor-nasil-dondurulur
Bu yazıda neler var?
  1. Tinkercad’de servo devresi nasıl hazırlanır?
  2. Servo ve potansiyometre bağlantıları nasıl yapılır?
  3. Servo kütüphanesiyle açı ve süpürme hareketi nasıl yapılır?
  4. Potansiyometreyle servo açısı nasıl kontrol edilir?
  5. Servo çalışmıyorsa bağlantı nasıl teşhis edilir?
  6. Sık Sorulan Sorular

Tinkercad’de Arduino ile servo motor döndürmek için servo motorun üç kablosunu 5V, GND ve bir dijital pine bağlayıp hedef açıyı Servo kütüphanesindeki write() fonksiyonuyla vermen gerekir. Arduino Uno üzerinde sinyal kablosu için D9 pinini kullanabilir, devreyi Tinkercad Circuits içinde kurarak fiziksel donanım olmadan simüle edebilirsin.

Servo kütüphanesi, Arduino’nun servo motorla haberleşmesi için gereken komutları sağlar. Dijital pin, Arduino’nun açıp kapatabildiği bağlantı noktasıdır. PWM ise bir dijital sinyalin çok hızlı açılıp kapanma oranını kullanarak kontrol yapılmasını ifade eder; servo motorun zamanlama ayrıntılarını bu örnekte Servo kütüphanesi yönetir.

Tinkercad’de servo devresi nasıl hazırlanır?

Tinkercad’de servo devresi hazırlamak için yeni bir Circuits çalışması oluştur, çalışma alanına Arduino Uno ile bir mikro servo modeli ekle, bileşenleri kablolarla bağla ve kod düzenleyiciden Arduino kodunu aç. Ardından simülasyonu başlatarak servo motorun verilen açıya hareket edip etmediğini gözlemleyebilirsin. Tinkercad Circuits, sanal elektronik bileşenleri yerleştirmeye, Arduino kodu yazmaya ve devreyi simüle etmeye olanak sağlar; Arduino projelerinde kütüphane tabanlı kod kullanımı da desteklenir.

  1. Tinkercad hesabına giriş yaptıktan sonra Circuits çalışma alanını aç.
  2. Yeni bir devre çalışması oluştur ve boş devre alanını görüntüle.
  3. Bileşenler arasından Arduino Uno modelini çalışma alanına sürükle.
  4. Bir mikro servo bileşeni ekle ve Arduino’nun yakınına yerleştir.
  5. Servo motorun sinyal, besleme ve toprak bağlantılarını uygun pinlere bağla.
  6. Kod düzenleyiciyi açarak metin tabanlı Arduino kodu yazma görünümüne geç.
  7. Kodu yükledikten sonra devre simülasyonunu başlat ve servo kolunun hareketini izle.

İlk denemede yalnızca servo motoru kullanmak, bağlantıların ve temel kodun doğru çalışıp çalışmadığını anlamayı kolaylaştırır. Daha sonra potansiyometre ekleyerek servo açısını elle kontrol edebilirsin. Bu yazıda temel servo bağlantısı için D9 sinyal pini, 5V besleme ve GND toprak bağlantısı kullanılacaktır.

Servo ve potansiyometre bağlantıları nasıl yapılır?

Servo ve potansiyometre bağlantıları nasıl yapılır?

Servo bağlantısında kırmızı kablo genellikle 5V, kahverengi veya siyah kablo GND, turuncu veya sarı kablo ise sinyal bağlantısı olarak kullanılır. Ancak kablo renkleri servo modeline göre değişebilir. Bu nedenle renkleri tek başına yeterli kabul etme ve bileşen üzerindeki işaretleri kontrol et. Temel devrede sinyal kablosu D9’a, besleme kablosu 5V’a, toprak kablosu ise GND’ye bağlanır.

Bileşen Kablo veya bacak Arduino bağlantısı İşlev
Servo motor Kırmızı kablo 5V Servo motorun beslemesini sağlar.
Servo motor Kahverengi veya siyah kablo GND Devrenin toprak bağlantısını oluşturur.
Servo motor Turuncu veya sarı kablo D9 Servo motorun açı komutlarını almasını sağlar.
Potansiyometre Bir dış bacak 5V Değişken giriş için yüksek gerilim tarafını oluşturur.
Potansiyometre Diğer dış bacak GND Değişken giriş için toprak tarafını oluşturur.
Potansiyometre Orta bacak A0 Ayarlanan gerilimi analog değer olarak Arduino’ya gönderir.

Potansiyometrenin iki dış bacağından hangisini 5V’a, hangisini GND’ye bağladığın devrenin çalışmasını engellemez. Fakat bu iki bağlantının yerini değiştirirsen düğmeyi çevirme yönü ile servo açısının artış yönü tersine dönebilir. Orta bacak A0’a bağlı kaldığı sürece Arduino, düğmenin konumunu analog giriş üzerinden okuyabilir.

Servo kütüphanesiyle açı ve süpürme hareketi nasıl yapılır?

Servo kütüphanesiyle açı ve süpürme hareketi nasıl yapılır?

Arduino’da servo motoru kontrol etmek için önce Servo kütüphanesi eklenir. Tinkercad Circuits içinde de Arduino kodu bu yapı kullanılarak simüle edilebilir. Kütüphane, servo sinyalinin zamanlamasını hazırlayarak açı kontrolünü kolaylaştırır.

attach(9) komutu servo motorun sinyal kablosunun Arduino’daki D9 pinine bağlı olduğunu belirtir. Bu nedenle gerçek devrede sinyal kablosu da D9’a bağlanmalıdır. write() ise servoya hedef açıyı gönderir. Servo açısı genellikle 0 ile 180 arasında verilir. PWM, bu kontrolün sinyalin yüksek ve düşük kaldığı sürelerin zamanlamasıyla yapılmasını ifade eder; kütüphane bu ayrıntıyı senin yerine yönetir.

#include <Servo.h>

Servo servoMotor;

void setup() {
  servoMotor.attach(9);   // Servo sinyali D9 pinine bağlı

  servoMotor.write(0);     // Servo 0 dereceye gider
  delay(1000);

  servoMotor.write(90);    // Servo 90 dereceye gider
  delay(1000);

  servoMotor.write(180);   // Servo 180 dereceye gider
  delay(1000);
}

void loop() {
  // Hareketler setup() içinde bir kez yapılır
}

Simülasyonu başlattığında servo önce 0 dereceye, sonra 90 dereceye ve son olarak 180 dereceye ilerler. Her write() çağrısından sonra verilen bekleme süresi, konum değişikliklerini gözlemlemeyi kolaylaştırır. Servo hareket etmiyorsa kodda kullanılan D9 ile devredeki sinyal bağlantısının aynı pini gösterdiğini kontrol et.

Servo motoru iki açı arasında sürekli hareket ettirmek için for döngüsü kullanabilirsin. Aşağıdaki program servoyu 0 dereceden 180 dereceye çıkarır, ardından tekrar 0 dereceye indirir.

#include <Servo.h>

Servo servoMotor;

void setup() {
  servoMotor.attach(9);  // Servo sinyali D9 pininde
}

void loop() {
  // 0 dereceden 180 dereceye ilerle
  for (int aci = 0; aci <= 180; aci++) {
    servoMotor.write(aci);
    delay(15);            // Hareket hızını yavaşlatır
  }

  // 180 dereceden 0 dereceye geri dön
  for (int aci = 180; aci >= 0; aci--) {
    servoMotor.write(aci);
    delay(15);
  }
}

Bu program çalışırken servo bir tarama hareketi yapar. Bir döngüde açı değeri artar, diğer döngüde azalır. delay(15) değeri küçültülürse hareket hızlanabilir, büyütülürse servo daha yavaş ilerler.

Potansiyometreyle servo açısı nasıl kontrol edilir?

Potansiyometrenin orta bacağından okunan analog değer, map() fonksiyonuyla servo açısına dönüştürülür. Arduino’nun analog girişinden gelen değer doğrudan servo açısı olarak kullanılmadığı için önce 0-180 aralığına ölçekleme yapılır.

#include <Servo.h>

Servo servoMotor;

const int potPin = A0;  // Potansiyometrenin orta bacağı
int potDegeri;
int aci;

void setup() {
  servoMotor.attach(9); // Servo sinyali D9 pininde
}

void loop() {
  potDegeri = analogRead(potPin);

  // Analog değeri servo açısına dönüştür
  aci = map(potDegeri, 0, 1023, 0, 180);

  servoMotor.write(aci);
  delay(15);             // Simülasyondaki hareketi görünür kılar
}

map() bir aralıktaki sayıyı başka bir aralığa dönüştürür. Potansiyometreyi çevirdikçe servo açısı da değişir. Dış bacaklar ters bağlanırsa potansiyometrenin çevrilme yönü ile servonun hareket yönü tersine döner; bu durumda bağlantıyı değiştirebilir veya açı hesabını ters çevirebilirsin.

Servo çalışmıyorsa bağlantı nasıl teşhis edilir?

Servo motor hareket etmiyorsa en hızlı teşhis yöntemi, fiziksel bağlantıları kodda kullanılan pinlerle karşılaştırmaktır. Sinyal kablosu, kod içindeki attach() fonksiyonunda belirtilen dijital pine bağlanmalıdır. Örneğin kodda attach(9) yazıyorsa servo sinyal kablosu Arduino üzerindeki D9 pininde bulunmalıdır. Bu eşleşme doğru olduğunda write() ile verilen açı komutu servo motora ulaşır.

Bağlantıyı kontrol ettikten sonra kodun çalışıp çalışmadığını görmek için seri çıktı yerine servo kolunun hareketini gözlemleyebilirsin. Üç açı örneğinde servo, başlangıçta verilen açıya, ardından diğer açılara geçmelidir. Servo bir konuma ulaşmadan hemen yeni bir komut alıyorsa hareketler fark edilmeyebilir. Bu nedenle her write() komutunun ardından uygun bir delay() bırakmak, servo motorun hedef konuma ulaşması için zaman tanır.

Bağlantı ve kod kontrol listesi

  • Sinyal kablosu: Servo sinyal kablosunun, attach() içinde kullanılan dijital pine bağlandığını kontrol et. attach(9) için bağlantı D9 olmalıdır. Doğru bağlantıda üç açı kodu çalıştırıldığında servo farklı açılara yönelir.
  • Besleme kabloları: Servo üzerindeki 5V kablosu Arduino’nun 5V pinine, GND kablosu ise GND pinine bağlanmalıdır. 5V ve GND kablolarının yer değiştirmesi servo devresinin doğru çalışmasını engeller.
  • Potansiyometrenin orta bacağı: Potansiyometrenin orta bacağı A0 pinine, dış bacakları ise 5V ve GND pinlerine bağlanmalıdır. Orta bacak dış bacaklardan birine bağlanırsa analogRead() değeri düğmeyi çevirirken beklenen şekilde değişmez.
  • map() dönüşümü: Potansiyometreden okunan değer doğrudan servo açısı olarak kullanıldığında servo için uygun 0-180 aralığı oluşmayabilir. map(deger, 0, 1023, 0, 180) dönüşümü, analog değeri servo açısına çevirir. Bu dönüşüm unutulursa hareket sınırlı kalabilir veya servo beklenmeyen bir aralıkta davranabilir.
  • Bekleme süresi: write() komutları arasına delay() ekle. Böylece servo bir açıya yönelirken yeni komutla hemen kesilmez.
  • Simülasyon: Tinkercad devresinde çalıştırma düğmesine basıldığını kontrol et. Simülasyon başlamadıysa bağlantılar doğru olsa bile servo hareket göstermez.

Gerçek devrede birden çok servo kullanırken Arduino veya USB hattı yerine, kullanılan servo düzenine uygun harici bir besleme gerekebilir. Bu durumda Arduino ile harici beslemenin GND bağlantılarının ortak olması da önemlidir.

Sık Sorulan Sorular

Servo motorun sinyal kablosu Arduino’da hangi pine bağlanmalıdır?

Servo motorun sinyal kablosu, kodda attach() fonksiyonuna verilen dijital pine bağlanmalıdır. Örneğin attach(9) kullanılıyorsa sinyal kablosu Arduino’nun D9 pinine takılmalıdır.

attach() içinde yazan pin ile servo bağlantısı farklı olursa ne olur?

attach() içinde yazan pin ile fiziksel sinyal bağlantısı farklı olursa Arduino komutu servo sinyal kablosunun bulunduğu pine göndermez ve servo hareket etmeyebilir. Koddaki pin numarası ile devredeki dijital pin aynı olmalıdır.

write() fonksiyonundan sonra neden delay() kullanılır?

write() fonksiyonundan sonra delay() kullanılır çünkü servo motorun hedef açıya yönelmesi için zamana ihtiyacı vardır. Yeni açı komutu çok erken gönderilirse hareketler kesilebilir veya gözle ayırt edilmesi zorlaşabilir.

Potansiyometre değerini servo açısına çevirmek için map() nasıl kullanılır?

Potansiyometreden alınan analog değer map(deger, 0, 1023, 0, 180) biçiminde dönüştürülerek servo için 0-180 derece aralığına çevrilebilir. Daha sonra elde edilen açı değeri servo.write(aci) içinde kullanılır.

Servo devresinde sorun yaşadığında önce sinyal, besleme ve toprak bağlantılarını kodla karşılaştırıp ardından potansiyometre dönüşümünü, bekleme sürelerini ve simülasyonun başlatıldığını kontrol et.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara