Siteye Abone Olmak İçin İzle Butonuna Tıklayın

Translate

İletişim

Yükselen Işık Evreni İletişim

11/01/25

Arduino ile Dengede Duran Robot Yapımı: Adım Adım Rehber

 Arduino ile Dengede Duran Robot Yapımı: Adım Adım Rehber


Teknoloji ve robotik dünyası, her geçen gün daha fazla ilgi çekiyor. Özellikle Arduino platformu, hobi robotik projeleri yapmak isteyenler için mükemmel bir araç. Bugün sizlere, Arduino kullanarak denge sağlayabilen bir robot yapımını anlatacağız. Bu tür robotlar, "İki Tekerlekli Dengeleyen Robot" olarak da bilinir ve temel olarak, robotun üzerine yerleştirilen sensörler ve motorlar sayesinde, robotun dik durmasını sağlar. Bu proje, özellikle sensör teknolojisi, motor kontrolü ve dengeleme algoritmaları hakkında önemli bir öğrenme fırsatı sunar.

1. Dengeleyen Robot Nedir?

Dengeleyen robot, hareket halindeyken kendi dengesini koruyan ve dik durabilen bir robottur. Bu tür robotlar, genellikle gyroskop ve ivmeölçer gibi sensörlerle donatılmıştır ve bu sensörler sayesinde robot, eğim açısını algılar. Arduino, bu sensörlerin verilerini işleyerek robotu dengede tutar. Çoğu dengede duran robot, PID kontrol algoritması kullanarak stabil bir denge sağlar.

2. Gerekli Malzemeler

Arduino ile dengeleyen robot yapmak için şu bileşenlere ihtiyacınız olacak:

  • Arduino UNO: Robotun beyin görevini görecek ana kontrol kartı.
  • Motorlar ve Motor Sürücüler: Robotun hareket etmesini sağlayacak DC motorlar ve motor sürücü kartı (örneğin, L298N).
  • Gyroskop ve İvmeölçer (MPU6050): Robotun eğim açısını ölçmek için kullanılacak sensör. Bu sensör, robotun hareketlerini takip eder.
  • Tekerlekler (2 adet): Robotun hareket etmesini sağlayacak tekerlekler.
  • Şasi (Chassis): Tüm bileşenlerin montajını yapacağımız platform.
  • Batarya ve Güç Kaynağı: Arduino ve motorları besleyecek güç kaynağı.
  • Jumper Kabloları: Bağlantıları yapmak için.
  • Dirençler ve Diğer Elektronik Elemanlar: Gereken devre elemanları.

3. Bağlantı Diyagramı

Bağlantıları kurarken, aşağıdaki ana bileşenlerin birbirine nasıl bağlanacağını bilmek önemlidir:

  1. Motor Sürücü (L298N): Motorları kontrol etmek için, motor sürücü modülünü Arduino'nun dijital pinlerine bağlayın. Motorları, L298N modülüne bağlayın.

  2. MPU6050 (Gyroskop ve İvmeölçer): Bu sensör, I2C protokolü ile Arduino'ya bağlanacaktır. SCL ve SDA pinlerini Arduino'nun ilgili pinlerine bağlamayı unutmayın.

  3. Motorlar ve Tekerlekler: Motorları, motor sürücüye bağladıktan sonra, robotun şasisine yerleştirin.

4. Arduino Kodu

Robotun dengesini sağlayabilmesi için, Arduino’ya uygun bir yazılım yazmamız gerekecek. Bu yazılım, MPU6050 sensöründen gelen verileri okuyarak robotun eğim açısını hesaplar ve motorlara komutlar göndererek robotu dengelemeye çalışır. İşte örnek bir Arduino kodu:

#include <Wire.h>
#include <MPU6050.h>

MPU6050 mpu;

int motorPin1 = 5;
int motorPin2 = 6;
int motorPin3 = 9;
int motorPin4 = 10;

double Kp = 25;    // Proportional gain
double Ki = 0;     // Integral gain
double Kd = 10;    // Derivative gain

double setpoint = 0;   // Desired angle (0 degrees - straight up)
double input, output;
double lastInput;
unsigned long lastTime;
double ITerm;

void setup() {
  Wire.begin();
  mpu.initialize();

  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);

  Serial.begin(9600);
}

void loop() {
  int16_t ax, ay, az;
  int16_t gx, gy, gz;
  
  // MPU6050 verilerini al
  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  // Eğim açısını hesapla
  double angle = atan2(ay, az) * 180.0 / PI;

  // PID hesaplaması
  unsigned long now = millis();
  double timeChange = (double)(now - lastTime);
  
  input = angle;
  ITerm += (Ki * input);
  if (ITerm > 255) ITerm = 255;
  if (ITerm < -255) ITerm = -255;

  double dInput = input - lastInput;

  output = Kp * input + ITerm - Kd * dInput;

  if (output > 255) output = 255;
  if (output < -255) output = -255;

  // Motorları kontrol et
  if (output > 0) {
    analogWrite(motorPin1, output);
    analogWrite(motorPin2, 0);
    analogWrite(motorPin3, 0);
    analogWrite(motorPin4, output);
  } else {
    analogWrite(motorPin1, 0);
    analogWrite(motorPin2, -output);
    analogWrite(motorPin3, -output);
    analogWrite(motorPin4, 0);
  }

  lastInput = input;
  lastTime = now;

  delay(10);
}

5. Kodu Açıklama

Bu kodda, temel olarak PID kontrol algoritması kullanarak robotun dengesini sağlamaya çalışıyoruz. Kod şu adımları takip eder:

  1. Veri Toplama: MPU6050 sensöründen ivme ve gyro verileri alınır.
  2. Açı Hesaplama: İvme verileri kullanılarak robotun eğim açısı hesaplanır.
  3. PID Algoritması: Bu açıyı sıfıra (dikey pozisyon) getirebilmek için PID kontrolü kullanılır. PID, robotun eğim açısındaki değişiklikleri dikkate alarak motorlara komutlar gönderir.
  4. Motor Kontrolü: PID algoritmasından gelen çıkışa göre motorlara hız komutları verilir ve robotun dengesini sağlamak için yönlendirilir.

6. Testler

Arduino ile dengeleyen robot yapma süreci, robotik dünyasına adım atarken oldukça eğlenceli ve öğretici bir deneyim sunar. Kod ve bağlantıları doğru bir şekilde yaparak, robotunuzu test etmeye başlayabilirsiniz. Test aşamasında karşılaşabileceğiniz bazı olası sorunlar ve çözüm önerileri:

  • Motor Yönü: Robotun hareket ettiği yön yanlış olabilir. Bu durumda motor bağlantılarını ters çevirebilirsiniz.
  • Denge Sorunları: Robot dengesiz duruyorsa, PID katsayılarını (Kp, Ki, Kd) ayarlamak gerekebilir.
  • Sensör Kalibrasyonu: MPU6050 sensörünün doğru çalışabilmesi için doğru kalibrasyona sahip olması önemlidir.

Bu projeyi daha da geliştirerek, robotunuza farklı özellikler ekleyebilirsiniz, örneğin daha fazla sensör kullanarak daha hassas dengeleme ya da robotu bir engelden kaçma gibi farklı görevlerle donatmak mümkündür.

Hiç yorum yok:

Yorum Gönder