Mikrodenetleyici ile pid kontrolü nasıl gerçekleştirilir

Jun 25, 2025 Mesaj bırakın

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; }

}

Soruşturma göndermek

whatsapp

Telefon

E-posta

Sorgulama