Како реализовати пид контролу помоћу микроконтролера

Jun 25, 2025 Остави поруку

ПИД контролни алгоритам је широко коришћен контролни алгоритам, ПИД контрола има предности подесивих параметара, широк спектар примена, високу тачност контроле. У практичном инжењерингу, ПИД алгоритам се може применити на електромеханичку контролу, индустријску аутоматизацију, контролу робота, микропроцесорску контролу и многе друге области.


Три параметра ПИД алгоритма се подешавају: константа пропорционалности Кп, интегрална временска константа Ти, диференцијална временска константа Тд. Различити системи треба да подесе различите ПИД параметре, и генерално је неопходно да се добију оптимални параметри кроз експерименте и отклањање грешака. Константа пропорционалности Кп подешава пропорцију, подешавајући однос излазне и повратне грешке у систему управљања; интегрална временска константа Ти подешава интеграл, прилагођавајући акумулацију грешке у систему управљања; диференцијална временска константа Тд подешава диференцијал, прилагођавајући стопу промене грешке у систему управљања.


Која је идеја реализације пид алгоритма са микроконтролером


Да би се реализовао ПИД контролни алгоритам на микроконтролеру, следећа је општа идеја реализације:


1. **Одредите ПИД параметре**:


- У складу са карактеристикама и потребама стварног контролног објекта, изаберите одговарајући коефицијент пропорционалности (Кп), време интеграције (Ти) и време диференцијације (Тд).


2. **Прикупљање података сензора**:


- Користите одговарајуће сензоре (нпр. сензоре температуре, сензоре положаја итд.) за прикупљање повратних података од контролног објекта у реалном времену.


3. **Поређење подешене вредности и повратне вредности**:


- Упоредите подешену вредност (жељена вредност) са вредношћу повратне информације и израчунајте вредност грешке (Грешка).


4. **ПИД прорачун**:


- Контролна количина (излаз) се израчунава према формули ПИД алгоритма: ПИД=Кп * Грешка + Ки * ∫ Грешка дт + Кд * д(Грешка)/дт.


- Кп, Ки и Кд су ПИД параметри, Еррор је вредност грешке, ∫ Еррор дт означава интегрални члан, а д(Еррор)/дт означава диференцијални члан.


5. **Управљање ограничењем** (опционо):


- За неке апликације, можда ће бити потребно ограничити опсег излазне вредности да бисте избегли прекорачење прихватљивог опсега контролног објекта.


6. **Излазни контролни сигнал**:


- Израчуната контролна величина се емитује као контролни сигнал актуатору (нпр. мотору, вентилу, итд.) да би се реализовала регулација и контрола контролног објекта.


7. **Подесите контролну фреквенцију**:


- У складу са потребама специфичних апликација, подесите одговарајућу контролну фреквенцију за контролу циклуса извршавања алгоритма.


8. **Извођење циклуса ПИД алгоритма**:


- У циклусу у реалном-временском периоду, горенаведени кораци се извршавају узастопно да би се континуирано пратила вредност повратне информације, израчунала контролна количина и издао контролни сигнал да би се остварила стабилна контрола објекта.


У стварном програмирању микроконтролера, можете одабрати одговарајуће развојне алате и програмски језик (као што је Ц или асемблерски језик) према специфичном моделу микроконтролера и развојној платформи. Треба напоменути да ће у практичним применама постојати многе технике за оптимизацију и побољшање ПИД алгоритма, као што су интегрално раздвајање, адаптивни ПИД, итд., које се могу даље истраживати и имплементирати према специфичним потребама.


Принцип и ток рада ПИД регулатора


ПИД регулатор се састоји од три дела: пропорционалног (П), интегралног (И) и диференцијалног (Д), и генерише контролни излаз обрадом грешке, одступања и брзине промене система. Његов ток рада укључује следеће кораке:


- Добијање циљних и повратних вредности

- Израчунајте грешку

- Израчунајте контролни излаз на основу коефицијента пропорционалности, интегралног члана и диференцијалног члана.

- Ажурирање параметара контролера

- Излаз контролних сигнала

 


Имплементација СТМ32 кода


Следи пример кода за пројектовање и имплементацију ПИД контролера помоћу СТМ32 микроконтролера:


```c

#инцлуде "стм32ф4кк.х"

// Дефинишите параметре ПИД контролера

флоат Кп=0.5; // фактор скале

флоат Ки=0.2; // Интегрални коефицијент

флоат Кд=0.1; // Диференцијални коефицијент

// Дефинисање променљивих за складиштење

флоат сетпоинт=50.0; // циљна вредност

флоат феедбацк=0.0; // вредност повратне информације

грешка флоат=0.0; // грешка

флоат ласт_еррор=0.0; // последња грешка

флоат интеграл=0.0; // Интегрални појам

// Функција прорачуна излаза ПИД контролера

флоат пидЦонтроллер(флоат дт)

флоат пидЦонтроллер(флоат дт) {

// Израчунај грешку

грешка=задата вредност - повратна информација; // Израчунај интегрални члан.

// Израчунај интегрални члан

интегрална += грешка * дт; // израчунати диференцијални члан

// Израчунај диференцијал

флоат дериват=(грешка - ласт_еррор) / дт; // израчунати контролни излаз.

// Израчунати контролни излаз

флоат оутпут=Кп * грешка + Ки * интеграл + Кд * извод; // Израчунати контролни излаз.

// Ажурирај последњу грешку

ласт_еррор=грешка; // ажурирање последње грешке.

ласт_еррор=грешка; ретурн оутпут; // Израчунати контролни излаз.

}

инт маин(воид)

{

док (1)

{

// Добијте повратну вредност

// Добити временски интервал

// Израчунај ПИД излаз

флоат дт=0.01; // 0,01с као временски интервал у примеру

флоат цонтрол_оутпут=пидЦонтроллер(дт); // излази контролни сигнал.

// Излаз управљачког сигнала

// Одложи контролни сигнал на одређено време

за (инт и=0; и 《 10000;и++).

}

ретурн 0; }

}

Pošalji upit

whatsapp

Telefon

E-pošta

Istraga