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
Yorum Gönder