Arduino Ders 17: Potansiyometre İle Servo Motor Kontrolü

Arduino Uygulaması

Potansiyometre ile Servo Motor Kontrolü

Arduino ile potansiyometreden okunan değeri servo motora aktararak servo açısını kontrol edeceğiz.

Arduino potansiyometre ile servo motor kontrolü

Bu yazımızda arduino ile potansiyometre kullanarak servo motor kontrolü için gerekli bağlantı şemasını ve arduino kodlarını inceleyeceğiz.

Arduino ile potansiyometreden okunan değeri servo motora aktararak potansiyometre ile servo motor kontrolü için gerekli arduino kodlarını hazırlayacağız.

Arduino’ya bağlanacak nesne sayısı arttıkça arduino’nun 5V ve GND pinleri yetersiz gelmeye başlayacaktır. Bu durumda devreleri daha sade ve kolay hale getirmek için breadboard kullanmamız gerekiyor. Breadboard, birer kanaldan verilen + ve – kutupları sayesinde istediğimiz kadar cihazı arduino ile bağlama avantajını sağlar.

Yukarıdaki şemada arduinodan aldığımız 5V ve GND pinlerini breadboard’un + ve – kanalına bağladık. Sonrasında potansiyometre ve servo motor için gerekli olan 5V ve GND bağlantılarını breadboard üzerinden yaptık. Potansiyometrenin data kablosunu Arduino A1 pinine, servo motorun turuncu sinyal kablosunu ise Arduino 3 numaralı pine bağladık.

Arduino potansiyometre servo motor bağlantı şeması

Servo motorun kırmızı kablosu 5V, kahverengi veya siyah kablosu GND, turuncu veya sarı kablosu sinyal kablosudur. Küçük SG90 servo motor basit denemelerde Arduino 5V pininden çalışabilir; daha güçlü servo veya yük altında kullanımda harici 5V güç kaynağı tercih edilmelidir. Harici güç kullanılırsa GND ortak bağlanmalıdır.

Kodlamada potansiyometreden okunan 0 ile 1023 arasındaki analog değerler map() komutu ile 0-180 derece arasına indirgenir. Sonrasında oluşan değer motor.write(yeni_deger) komutu ile servo motora gönderilir.

Kodları Arduino’ya yükledikten sonra potansiyometreyi sağa veya sola çevirerek servo motoru ileri, geri hareket ettirebilirsiniz.

Aşağıdaki kodda Potansiyometreden okunan değer 0-180 derece aralığına çevrilir ve servo motora gönderilir.

#include <Servo.h>

Servo motor;

const byte potansiyometre_pin = A1;
int pot_deger;

void setup() {
  motor.attach(3);
  Serial.begin(9600);
}

void loop() {
  pot_deger = analogRead(potansiyometre_pin);
  int yeni_deger = map(pot_deger, 0, 1023, 0, 180);

  Serial.print("Potansiyometre Degeri= ");
  Serial.println(yeni_deger);

  motor.write(yeni_deger);
}

Bu sürümde pin adları daha okunabilir hale getirildi. Seri Port Ekranı’na hem potansiyometrenin ham değeri hem de servo açısı yazdırılır.

#include <Servo.h>

Servo motor;

const byte potansiyometrePin = A1;
const byte servoPin = 3;

void setup() {
  motor.attach(servoPin);
  Serial.begin(9600);
}

void loop() {
  int potDeger = analogRead(potansiyometrePin);
  int aci = map(potDeger, 0, 1023, 0, 180);

  Serial.print("Potansiyometre Degeri = ");
  Serial.print(potDeger);
  Serial.print(" | Servo Acisi = ");
  Serial.println(aci);

  motor.write(aci);
  delay(15);
}

delay(15) servo motorun konuma daha kararlı şekilde gitmesine yardımcı olur.

Yorum Gönder

Daha yeni Daha eski