PID kontrol algoritması yaygın olarak kullanılan bir kontrol algoritmasıdır; PID kontrolü ayarlanabilir parametreler, geniş uygulama yelpazesi, yüksek kontrol doğruluğu gibi avantajlara sahiptir. Pratik mühendislikte PID algoritması elektromekanik kontrol, endüstriyel otomasyon, robot kontrolü, mikroişlemci kontrolü ve diğer birçok alana uygulanabilir.
PID algoritmasının üç parametresi ayarlanır: orantı sabiti Kp, integral zaman sabiti Ti, diferansiyel zaman sabiti Td. Farklı sistemlerin farklı PID parametrelerini ayarlaması gerekir ve genellikle deneyler ve hata ayıklama yoluyla en uygun parametrelerin elde edilmesi gerekir. Orantı sabiti Kp, kontrol sistemindeki çıktı ve geri besleme hatası oranını ayarlayarak oranı ayarlar; integral zaman sabiti Ti, kontrol sistemindeki hata birikimini ayarlayarak integrali ayarlar; diferansiyel zaman sabiti Td, kontrol sistemindeki hatanın değişim oranını ayarlayarak diferansiyeli ayarlar.
Mikrodenetleyici ile pid algoritmasını gerçekleştirme fikri nedir?
Bir mikrodenetleyici üzerinde PID kontrol algoritmasını gerçekleştirmek için genel gerçekleştirme fikri aşağıdaki gibidir:
1. **PID parametrelerini belirleyin**:
- Gerçek kontrol nesnesinin özelliklerine ve ihtiyaçlarına göre uygun orantı katsayısını (Kp), entegrasyon süresini (Ti) ve farklılaşma süresini (Td) seçin.
2. **Sensör veri toplama**:
- Kontrol nesnesinden gerçek zamanlı olarak geri bildirim verileri toplamak için uygun sensörleri (örneğin sıcaklık sensörleri, konum sensörleri vb.) kullanın.
3. **Ayar değeri ve geri besleme değeri karşılaştırması**:
- Ayarlanan değeri (istenen değer) geri bildirim değeriyle karşılaştırın ve hata değerini (Hata) hesaplayın.
4. **PID hesaplaması**:
- Kontrol miktarı (çıkış), PID algoritması formülüne göre hesaplanır: PID=Kp * Hata + Ki * ∫ Hata dt + Kd * d(Hata)/dt.
- Kp, Ki ve Kd PID parametrelerini, Hata hata değerini, ∫ Hata dt integral terimini ve d(Hata)/dt diferansiyel terimini göstermektedir.
5. **Sınır İşleme** (isteğe bağlı):
- Bazı uygulamalarda, kontrol nesnesinin kabul edilebilir aralığının aşılmasını önlemek amacıyla çıkış değeri aralığının sınırlandırılması gerekli olabilir.
6. **Çıkış kontrol sinyali**:
- Hesaplanan kontrol miktarı, kontrol nesnesinin düzenlemesini ve kontrolünü gerçekleştirmek için aktüatöre (örn. motor, vana vb.) bir kontrol sinyali olarak gönderilir.
7. **Kontrol frekansını ayarlayın**:
- Belirli uygulamaların ihtiyaçlarına göre, algoritmanın yürütme döngüsünü kontrol etmek için uygun kontrol frekansını ayarlayın.
8. **PID algoritmasının döngüsel yürütülmesi**:
- Gerçek-zaman döngüsünde, nesnenin kararlı kontrolünü gerçekleştirmek için geri bildirim değerini sürekli olarak izlemek, kontrol miktarını hesaplamak ve kontrol sinyalini çıkarmak için yukarıdaki adımlar tekrar tekrar yürütülür.
Gerçek mikrodenetleyici programlamasında, belirli mikrodenetleyici modeline ve geliştirme platformuna göre uygun geliştirme araçlarını ve programlama dilini (C veya montaj dili gibi) seçebilirsiniz. Pratik uygulamalarda, özel ihtiyaçlara göre daha fazla araştırılıp uygulanabilecek integral ayırma, uyarlamalı PID vb. gibi PID algoritmasını optimize etmek ve geliştirmek için birçok tekniğin bulunacağı unutulmamalıdır.
PID denetleyici prensibi ve iş akışı
PID denetleyicisi oransal (P), integral (I) ve diferansiyel (D) olmak üzere üç bölümden oluşur ve sistemin hatasını, sapmasını ve değişim hızını işleyerek kontrol çıktısını üretir. İş akışı aşağıdaki adımları içerir:
- Hedef ve geri bildirim değerlerinin elde edilmesi
- Hatayı hesapla
- Orantı katsayısı, integral terimi ve diferansiyel terime göre kontrol çıkışını hesaplayın.
- Denetleyici parametreleri güncelleniyor
- Kontrol sinyallerinin çıkışı
STM32 kod uygulaması
Aşağıda, STM32 mikro denetleyicisini kullanarak bir PID denetleyicisinin tasarlanması ve uygulanmasına yönelik örnek kod verilmiştir:
```c
#include "stm32f4xx.h"
// PID kontrol cihazı parametrelerini tanımlayın
kayan Kp=0.5; // ölçek faktörü
kayan nokta Ki=0.2; // İntegral katsayısı
kayan nokta Kd=0.1; // Diferansiyel katsayı
// Depolama değişkenlerini tanımlayın
değişken ayar noktası=50.0; // hedef değer
kayan geri bildirim=0.0; // geri bildirim değeri
kayan nokta hatası=0.0; // hata
float son_hata=0.0; // son hata
kayan nokta integrali=0.0; // İntegral terimi
// PID kontrol cihazı çıkış hesaplama fonksiyonu
float pidController(float dt)
float pidController(float dt) {
// hatayı hesapla
hata=ayar noktası - geri bildirimi; // İntegral terimini hesaplayın.
// İntegral terimini hesaplayın
integral += hatası * dt; // diferansiyel terimi hesapla
// Farkı hesapla
kayan nokta türevi=(hata - son_hata) / dt; //kontrol çıkışını hesaplıyoruz.
// Kontrol çıkışını hesapla
float çıktısı=Kp * hata + Ki * integral + Kd * türev; //Kontrol çıkışını hesaplayalım.
// Son hatayı güncelle
son_hata=hatası; // son hatayı güncelle.
son_hata=hatası; çıkış çıktısı; //Kontrol çıkışını hesaplayalım.
}
int ana(geçersiz)
{
süre(1)
{
// Geri bildirim değerini alın
//Zaman aralığını al
// PID çıkışını hesapla
kayan nokta dt=0.01; // Örnekte zaman aralığı olarak 0,01s
float control_output=pidController(dt); // kontrol sinyalinin çıktısını alıyoruz.
// Kontrol sinyalinin çıktısı
// Kontrol sinyalini belirli bir süre erteleyin
for (int i=0; i 《 10000;i++).
}
0 değerini döndür; }
}




