Skocz do zawartości

Regulacja temperatury w terrarium dla mrówek z wykorzystaniem regulatora PID


Pomocna odpowiedź

Napisano

Wstęp

Utrzymanie odpowiedniej temperatury w terrarium dla mrówek ciepłolubnych Lasius ma kluczowe znaczenie dla ich zdrowia, aktywności oraz prawidłowego rozwoju kolonii. Zbyt niska temperatura spowalnia metabolizm, a zbyt wysoka może prowadzić do stresu lub śmierci owadów.

Celem tego artykułu jest w prosty i zrozumiały sposób pokazanie:

  • jak można opisać zachowanie cieplne terrarium,

  • skąd biorą się użyte wzory,

  • jak działa regulator PID,

  • oraz jak całość zasymulować w programie MATLAB.


Założenia projektu terrarium

Rozpatrujemy terrarium przeznaczone do hodowli mrówek ciepłolubnych.

Podstawowe założenia:

  • zakres wymaganej temperatury: 22–28 °C,

  • temperatura otoczenia (pokój): 20 °C,

  • temperatura zadana w terrarium: 26 °C,

  • ogrzewanie realizowane za pomocą maty grzewczej,

  • sterowanie temperaturą odbywa się automatycznie przy użyciu regulatora PID.


Wymiary terrarium

Przyjęto praktyczne wymiary terrarium:

  • szerokość: 300 mm = 0,30 m,

  • wysokość: 200 mm = 0,20 m,

  • głębokość: 250 mm = 0,25 m.

Na podstawie tych wymiarów oraz materiałów konstrukcyjnych można oszacować, jak szybko terrarium się nagrzewa i jak szybko oddaje ciepło do otoczenia.


Uproszczony model cieplny terrarium

Aby opisać zmiany temperatury w czasie, wykorzystujemy model RC, analogiczny do obwodu elektrycznego:

  • pojemność cieplna C – mówi, ile energii potrzeba, aby podnieść temperaturę terrarium o 1 °C,

  • opór cieplny R – określa, jak łatwo ciepło ucieka do otoczenia.

4.1. Równanie modelu

Zmiana temperatury w czasie opisana jest równaniem:

dT/dt = [ Q − (T − Tₒₜ) / R ] / C

Gdzie:

  • T – aktualna temperatura terrarium [°C],

  • Tₒₜ – temperatura otoczenia [°C],

  • Q – moc grzania [W],

  • R – opór cieplny [°C/W],

  • C – pojemność cieplna [J/°C].

W praktyce oznacza to:

  • grzałka podnosi temperaturę,

  • jednocześnie część ciepła ucieka do chłodniejszego otoczenia.


Regulator PID – idea działania

Regulator PID automatycznie dobiera moc grzania tak, aby temperatura była jak najbliżej wartości zadanej.

Składa się on z trzech części:

  1. P – człon proporcjonalny
    Reaguje na aktualny błąd temperatury (różnicę między temperaturą zadaną a rzeczywistą).

  2. I – człon całkujący
    Eliminuje długotrwały błąd, np. gdy temperatura stale jest trochę za niska.

  3. D – człon różniczkujący
    Reaguje na szybkość zmian temperatury i zapobiega przegrzewaniu.

Wzór regulatora PID:

Q = Kp·e + Ki·∫e dt + Kd·de/dt

Gdzie e to uchyb temperatury.


Parametry użyte w symulacji

Parametry cieplne:

  • pojemność cieplna: C = 2394 J/°C,

  • opór cieplny: R = 1,62 °C/W.

Temperatury:

  • temperatura otoczenia: 20 °C,

  • temperatura początkowa: 20 °C,

  • temperatura zadana: 26 °C.

Grzałka:

  • maksymalna moc: 15 W.

Regulator PID (dobrany ręcznie):

  • Kp = 4,

  • Ki = 0,002,

  • Kd = 25.


Program w MATLAB-ie

Poniżej znajduje się kompletny program symulacyjny. Oblicza on zmiany temperatury w czasie oraz pokazuje działanie regulatora PID.

 

C = 2394; % pojemność cieplna [JC]
R = 1.62; % opór cieplny C/W]


T_ot = 20; % temperatura otoczenia C]
T_zad = 26; % temperatura zadana C]
T0 = 20; % temperatura początkowa C]


Q_max = 15; % maksymalna moc grzania [W]


Kp = 4;
Ki = 0.002;
Kd = 25;


dt = 1; % krok czasowy [s]
t_end = 3*3600; % czas symulacji
t = 0:dt:t_end;


T = zeros(size(t));
Q = zeros(size(t));
e = zeros(size(t));


T(1) = T0;
integral_e = 0;
prev_e = 0;


for i = 2:length(t)


e(i) = T_zad - T(i-1);


integral_e = integral_e + e(i)*dt;
derivative_e = (e(i) - prev_e)/dt;


Q(i) = Kp*e(i) + Ki*integral_e + Kd*derivative_e;


if Q(i) > Q_max
Q(i) = Q_max;
elseif Q(i) < 0
Q(i) = 0;
end


dTdt = (Q(i) - (T(i-1) - T_ot)/R) / C;
T(i) = T(i-1) + dTdt*dt;


prev_e = e(i);
end


figure;
plot(t/60, T, 'LineWidth', 2);
grid on;
xlabel('Czas [min]');
ylabel('Temperatura [°C]');
title('Zmiana temperatury w terrarium');
yline(T_zad, '--r');


figure;
plot(t/60, Q, 'LineWidth', 2);
grid on;
xlabel('Czas [min]');
ylabel('Moc grzania [W]');
title('Moc grzania');

 

  • Lubię! 2

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...