Algorytm sterowania PID jest szeroko stosowanym algorytmem sterowania, sterowanie PID ma zalety regulowanych parametrów, szerokiego zakresu zastosowań, wysokiej dokładności sterowania. W praktycznej inżynierii algorytm PID można zastosować do sterowania elektromechanicznego, automatyki przemysłowej, sterowania robotami, sterowania mikroprocesorowego i wielu innych dziedzin.
Regulowane są trzy parametry algorytmu PID: stała proporcjonalności Kp, stała czasowa całkowania Ti, stała czasowa różniczkowania Td. Różne systemy wymagają ustawienia różnych parametrów PID i generalnie konieczne jest uzyskanie optymalnych parametrów poprzez eksperymenty i debugowanie. Stała proporcjonalności Kp reguluje proporcję, regulując stosunek błędu wyjściowego i błędu sprzężenia zwrotnego w układzie sterowania; stała czasowa całkowania Ti reguluje całkę, regulując akumulację błędów w układzie sterowania; stała czasowa różniczkowania Td reguluje różnicę, regulując szybkość zmiany błędu w układzie sterowania.
Jaki jest pomysł realizacji algorytmu pid za pomocą mikrokontrolera
Aby zrealizować algorytm regulacji PID na mikrokontrolerze, ogólna koncepcja realizacji jest następująca:
1. **Określ parametry PID**:
- W zależności od charakterystyki i potrzeb rzeczywistego obiektu regulacji dobierz odpowiedni współczynnik proporcjonalności (Kp), czas całkowania (Ti) i czas różniczkowania (Td).
2. **Pozyskiwanie danych z czujnika**:
- Używaj odpowiednich czujników (np. czujników temperatury, czujników położenia itp.), aby zbierać dane zwrotne z obiektu sterującego w czasie rzeczywistym.
3. **Porównanie wartości zadanej i wartości sprzężenia zwrotnego**:
- Porównaj ustawioną wartość (wartość żądaną) z wartością sprzężenia zwrotnego i oblicz wartość błędu (Błąd).
4. **Obliczenie PID**:
- Wielkość kontrolna (wyjście) obliczana jest według wzoru algorytmu PID: PID=Kp * Błąd + Ki * ∫ Błąd dt + Kd * d(Błąd)/dt.
- Kp, Ki i Kd to parametry PID, Error to wartość błędu, ∫ Error dt oznacza składnik całkujący, a d(Error)/dt oznacza składnik różniczkowy.
5. **Obsługa limitów** (opcjonalnie):
- W niektórych zastosowaniach może być konieczne ograniczenie zakresu wartości wyjściowej, aby uniknąć przekroczenia dopuszczalnego zakresu obiektu sterującego.
6. **Wyjściowy sygnał sterujący**:
- Obliczona wielkość sterująca jest wysyłana jako sygnał sterujący do siłownika (np. silnika, zaworu itp.) w celu realizacji regulacji i sterowania obiektem regulacyjnym.
7. **Ustaw częstotliwość sterującą**:
- W zależności od potrzeb konkretnych aplikacji należy ustawić odpowiednią częstotliwość sterowania, aby kontrolować cykl wykonania algorytmu.
8. **Cykl wykonania algorytmu PID**:
- W-cyklu czasu rzeczywistego powyższe kroki są wykonywane wielokrotnie w celu ciągłego monitorowania wartości sprzężenia zwrotnego, obliczania wielkości sterującej i wysyłania sygnału sterującego w celu zapewnienia stabilnej kontroli obiektu.
W rzeczywistym programowaniu mikrokontrolera można wybrać odpowiednie narzędzia programistyczne i język programowania (taki jak C lub język asemblera) zgodnie z konkretnym modelem mikrokontrolera i platformą programistyczną. Należy zauważyć, że w zastosowaniach praktycznych będzie dostępnych wiele technik optymalizacji i udoskonalania algorytmu PID, takich jak separacja całkowa, adaptacyjny PID itp., które można dalej badać i wdrażać zgodnie z konkretnymi potrzebami.
Zasada i przebieg regulatora PID
Sterownik PID składa się z trzech części: proporcjonalnej (P), całkowej (I) i różnicowej (D) i generuje wyjście sterujące poprzez przetwarzanie błędu, odchylenia i szybkości zmian systemu. Jego przepływ pracy obejmuje następujące kroki:
- Uzyskiwanie wartości docelowych i zwrotnych
- Oblicz błąd
- Oblicz moc wyjściową sterowania na podstawie współczynnika proporcjonalności, składnika całkującego i składnika różniczkowego.
- Aktualizacja parametrów kontrolera
- Wysyłanie sygnałów sterujących
Implementacja kodu STM32
Poniżej znajduje się przykładowy kod do projektowania i implementacji regulatora PID wykorzystującego mikrokontroler STM32:
```c
#include „stm32f4xx.h”
// Zdefiniuj parametry regulatora PID
pływak Kp=0.5; // współczynnik skali
unosić się Ki=0.2; // Współczynnik całkowy
pływak Kd=0.1; // Współczynnik różnicowy
// Zdefiniuj zmienne pamięci
wartość zadana pływaka=50.0; //wartość docelowa
informacja zwrotna typu float=0.0; //wartość informacji zwrotnej
błąd pływaka=0.0; // błąd
float last_error=0.0; //ostatni błąd
całka zmiennoprzecinkowa=0.0; // Termin całkowy
// Funkcja obliczania wyjścia regulatora PID
float pidController (float dt)
float pidController(float dt) {
// Oblicz błąd
błąd=wartość zadana - informacja zwrotna; // Oblicz składnik całkowy.
// Oblicz składnik całkowy
całka += błąd * dt; // oblicz składnik różniczkowy
// Oblicz różnicę
pochodna zmiennoprzecinkowa=(błąd - last_error) / dt; // oblicz wyjście sterujące.
// Oblicz wyjście sterujące
wyjście pływakowe=Kp * błąd + Ki * całka + Kd * pochodna; // Oblicz wyjście sterujące.
// Aktualizuj ostatni błąd
last_error=błąd; // aktualizacja ostatniego błędu.
last_error=błąd; wyjście zwrotne; // Oblicz wyjście sterujące.
}
int main(void)
{
podczas gdy(1)
{
// Uzyskaj wartość zwrotną
// Uzyskaj przedział czasu
// Oblicz wyjście PID
float dt=0.01; // W przykładzie przedział czasu wynosi 0,01 s
float control_output=pidController(dt); //wyprowadź sygnał sterujący.
// Wyprowadź sygnał sterujący
// Opóźnij sygnał sterujący o określony czas
for (int i=0; i 《 10000;i++).
}
zwróć 0; }
}




