Algorytm regulacji PID jest obecnie jednym z najpowszechniej stosowanych algorytmów regulacji. Sterowanie PID oferuje takie korzyści, jak regulowane parametry, szeroki zakres zastosowań i wysoka dokładność regulacji. W praktycznej inżynierii algorytm PID można zastosować w różnych dziedzinach, w tym w sterowaniu elektromechanicznym, automatyce przemysłowej, robotyce i sterowaniu mikroprocesorowym.
Trzy parametry algorytmu PID to: wzmocnienie proporcjonalne Kp, stała czasowa całkowania Ti i stała czasowa różniczkowania Td. Różne systemy wymagają różnych parametrów PID, a optymalne parametry zwykle uzyskuje się w drodze eksperymentów i debugowania. Stała proporcjonalna Kp reguluje wzmocnienie proporcjonalne, kontrolując stosunek mocy wyjściowej systemu do błędu sprzężenia zwrotnego podczas pracy; stała czasowa całkowania Ti reguluje wzmocnienie całkujące, kontrolując akumulację błędów podczas pracy systemu; a stała czasowa różniczkowania Td reguluje wzmocnienie różniczkowania, kontrolując szybkość zmian błędów w układzie sterowania.
Jakie jest podejście do implementacji algorytmu PID na mikrokontrolerze?
Aby zaimplementować algorytm regulacji PID w mikrokontrolerze, ogólne podejście jest następujące:
1. **Określ parametry PID**:
- Wybierz odpowiednie wzmocnienie proporcjonalne (Kp), czas całkowania (Ti) i czas różniczkowania (Td) w oparciu o charakterystykę i wymagania aktualnie kontrolowanego obiektu.
2. **Pozyskiwanie danych z czujnika**:
- Użyj odpowiednich czujników (takich jak czujniki temperatury, czujniki położenia itp.), aby uzyskać-dane zwrotne z kontrolowanego obiektu w czasie rzeczywistym.
3. **Porównanie wartości zadanej i wartości sprzężenia zwrotnego**:
- Porównaj wartość zadaną (wartość żądaną) z wartością sprzężenia zwrotnego, aby obliczyć błąd (błąd).
4. **Obliczenie PID**:
- Oblicz zmienną sterującą (wyjście) korzystając ze wzoru algorytmu PID: PID=Kp * Błąd + Ki * ∫ Błąd dt + Kd * d(Błąd)/dt.
- Kp, Ki i Kd to parametry PID; Błąd to wartość błędu; ∫ Błąd dt oznacza składnik całkujący; a d(Błąd)/dt oznacza człon pochodny.
5. **Ograniczenie** (opcjonalnie):
- W niektórych zastosowaniach może być konieczne ograniczenie zakresu wartości wyjściowej, aby zapobiec przekroczeniu dopuszczalnego zakresu kontrolowanego obiektu.
6. **Wyjściowy sygnał sterujący**:
- Obliczona zmienna sterująca jest wykorzystywana jako sygnał sterujący i wysyłana do siłownika (takiego jak silnik lub zawór) w celu regulacji i sterowania kontrolowanym obiektem.
7. **Ustaw częstotliwość sterowania**:
- Ustaw odpowiednią częstotliwość sterowania-cykl wykonywania algorytmu sterowania-w oparciu o wymagania konkretnej aplikacji.
8. **Iteruj algorytm PID**:
- W pętli czasu rzeczywistego-wykonuj wielokrotnie powyższe kroki, aby stale monitorować wartość sprzężenia zwrotnego, obliczać zmienną sterującą i wysyłać sygnał sterujący, aby uzyskać stabilną kontrolę systemu.
W rzeczywistym programowaniu mikrokontrolerów można wybrać odpowiednie narzędzia programistyczne i języki programowania (takie jak język C lub asembler) w oparciu o konkretny model mikrokontrolera i platformę programistyczną. Należy zauważyć, że w zastosowaniach praktycznych istnieje wiele technik optymalizacji i udoskonalania algorytmu PID, takich jak separacja całkowa i adaptacyjny PID, które można dalej badać i wdrażać zgodnie z konkretnymi wymaganiami.
Zasada i działanie regulatorów PID
Sterownik PID składa się z trzech elementów: proporcjonalnego (P), całkowego (I) i różniczkującego (D). Generuje wyjście sterujące poprzez przetwarzanie błędu systemu, odchylenia i szybkości zmian. Jego działanie obejmuje następujące kroki:
- Uzyskaj wartość zadaną i wartości zwrotne
- Oblicz błąd
- Oblicz moc wyjściową sterowania na podstawie wzmocnienia proporcjonalnego, składnika całkującego i składnika różniczkującego
- Zaktualizuj parametry kontrolera
- Wyprowadź sygnał sterujący
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; // Wzmocnienie proporcjonalne
unosić się Ki=0.2; // Wzmocnienie całkowe
pływak Kd=0.1; // Zysk pochodny
// Zdefiniuj zmienne pamięci
wartość zadana pływaka=50.0; // Wartość zadana
informacja zwrotna typu float=0.0; // Wartość opinii
błąd pływaka=0.0; // Błąd
float last_error=0.0; //Poprzedni błąd
całka zmiennoprzecinkowa=0.0; // Termin całkowy
// Funkcja obliczania wyjścia regulatora PID
float pidController (float dt)
{
// Oblicz błąd
błąd=wartość zadana - informacja zwrotna;
// Oblicz składnik całkowy
całka += błąd * dt;
// Oblicz termin pochodny
pochodna zmiennoprzecinkowa=(błąd - last_error) / dt;
// Oblicz wyjście sterujące
wyjście pływakowe=Kp * błąd + Ki * całka + Kd * pochodna;
// Zaktualizuj poprzedni błąd
last_error=błąd;
wyjście zwrotne;
}
int main(void)
{
podczas gdy (1)
{
// Pobierz wartość opinii
// Ustaw odstęp czasu
// Oblicz wyjście PID
float dt=0.01; // W tym przykładzie przedział czasu wynosi 0,01 s
float control_output=pidController(dt);
// Wyprowadź sygnał sterujący
// Opóźnienie o pewien okres czasu
for (int i=0; i < 10000; i++);
}
zwróć 0;
}




