PID Kontrollü DC Motor Hız Kontrolü

 Kontrol sistemleri, mühendislik uygulamalarının temel taşlarından biridir. Elektrik motorlarının hız kontrolünden robotik kolların hareket kontrolüne kadar geniş bir kullanım alanına sahiptir. Bir kontrol sistemi projesi yaparken temel prensipler, matematiksel modelleme ve gerçek zamanlı kontrol mekanizmalarına odaklanmak önemlidir. İşte basit ve etkili bir kontrol sistemi projesi:


---


Proje Fikri: PID Kontrollü DC Motor Hız Kontrolü

Bu projede bir PID kontrolcüsü kullanarak bir DC motorun hızını kontrol edeceğiz. Motorun hızını belirli bir hedef değere (referans) ayarlamak için geri besleme kullanacağız.


---


1. Gerekli Malzemeler


Elektronik Malzemeler:

1. Mikrodenetleyici: Arduino Uno veya benzeri


2. DC Motor (ve enkoderli bir motor daha iyi olur)


3. Motor Sürücü: L298N veya L293D


4. Sensör: Hall etkisi sensörü veya enkoder (hız geri beslemesi için)


5. Potansiyometre: Referans hız değeri ayarlamak için


6. Breadboard, jumper kablolar, dirençler


---

2. Projenin Çalışma Prensibi

1. Giriş: Kullanıcı bir potansiyometre ile motorun hedef hızını ayarlar.


2. Sensör: Motorun gerçek hızını ölçmek için bir sensör (ör. enkoder) kullanılır.


3. PID Kontrol: Arduino, sensör geri beslemesine göre bir PID algoritması çalıştırır.


4. Çıkış: PID algoritmasının çıktısına göre motor sürücüsü, motor hızını ayarlamak için PWM sinyali üretir.


---

3. Devre Şeması


Bağlantılar:


Motor Sürücü:


ENA/ENB: Arduino'dan gelen PWM sinyali


IN1 ve IN2: Motorun yön kontrolü için Arduino dijital pinlerine


VCC ve GND: Güç kaynağına


OUT1 ve OUT2: Motora



Potansiyometre:


Orta bacağı Arduino'nun A0 pinine


Diğer iki bacak 5V ve GND'ye



Enkoder: Arduino'nun dijital pinlerine bağlanır.


---


4. Kodu Yaz ve Yükle


Bu örnek, bir PID kontrolcüsü ile motor hızını kontrol eden temel bir koddur:


#include <PID_v1.h>


// PID Parametreleri

double setpoint, input, output;

double Kp = 2.0, Ki = 5.0, Kd = 1.0; // PID kazançları


// PID Nesnesi

PID myPID(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);


// Motor ve Enkoder

int motorPWM = 3;    // PWM sinyali için pin

int motorDir1 = 4;   // Motor yönü için pin

int motorDir2 = 5;   // Motor yönü için pin

volatile int encoderCount = 0; // Enkoder darbesi sayısı

int encoderPin = 2;  // Enkoder sinyali pini


void setup() {

  pinMode(motorPWM, OUTPUT);

  pinMode(motorDir1, OUTPUT);

  pinMode(motorDir2, OUTPUT);

  pinMode(encoderPin, INPUT_PULLUP);


  attachInterrupt(digitalPinToInterrupt(encoderPin), countEncoder, RISING);

  

  setpoint = 100; // Hedef hız (örneğin 100 rpm)

  myPID.SetMode(AUTOMATIC); // PID modunu başlat

  myPID.SetOutputLimits(0, 255); // PWM sinyal aralığı

}


void loop() {

  input = getMotorSpeed(); // Motor hızını ölç

  myPID.Compute(); // PID hesaplama

  

  // Motoru kontrol et

  analogWrite(motorPWM, output);

  digitalWrite(motorDir1, HIGH);

  digitalWrite(motorDir2, LOW);

  

  delay(100); // Stabilite için kısa bir gecikme

}


void countEncoder() {

  encoderCount++;

}


double getMotorSpeed() {

  static unsigned long lastTime = 0;

  unsigned long now = millis();

  double speed = (encoderCount * 60.0) / (20.0 * (now - lastTime)); // RPM hesaplama

  lastTime = now;

  encoderCount = 0;

  return speed;

}


---

5. Projenin Çalışma Aşamaları


1. Potansiyometre: Kullanıcı, motorun hedef hızını belirler (setpoint).


2. Sensör: Enkoder, motorun gerçek hızını ölçer ve Arduino’ya geri besleme sağlar.


3. PID Kontrol: PID algoritması, gerçek hız ile hedef hız arasındaki farkı (hata) hesaplar ve buna göre bir PWM sinyali üretir.


4. Motor Kontrol: PWM sinyali, motorun hızını ayarlamak için motor sürücüsüne gönderilir.


---


6. Test Et ve Sorun Gider

PID Ayarı: Kp, Ki ve Kd parametrelerini deneyerek en iyi sonucu bul.


PWM Aralığı: Motor hızını tam kontrol edemiyorsan, PWM sinyallerini kontrol et.


Sensör: Enkoderin düzgün çalıştığından emin ol. Yanlış hız değerleri için bağlantıları kontrol et.


---

7. Geliştirme Fikirleri


1. Grafiksel Arayüz: Hız verilerini bir seri port ekranında grafik olarak görüntüle.


2. Bluetooth ile Kontrol: Motor hızını bir telefon uygulamasıyla ayarla.


3. Pozisyon Kontrolü: PID kontrolünü hız yerine motorun pozisyonunu ayarlamak için kullan.


4. Modelleme: MATLAB/Simulink kullanarak sistemi simüle et ve PID parametrelerini optimize et.



---

Yorumlar

Popüler Yayınlar