ПИД контролни алгоритам је широко коришћен контролни алгоритам, ПИД контрола има предности подесивих параметара, широк спектар примена, високу тачност контроле. У практичном инжењерингу, ПИД алгоритам се може применити на електромеханичку контролу, индустријску аутоматизацију, контролу робота, микропроцесорску контролу и многе друге области.
Три параметра ПИД алгоритма се подешавају: константа пропорционалности Кп, интегрална временска константа Ти, диференцијална временска константа Тд. Различити системи треба да подесе различите ПИД параметре, и генерално је неопходно да се добију оптимални параметри кроз експерименте и отклањање грешака. Константа пропорционалности Кп подешава пропорцију, подешавајући однос излазне и повратне грешке у систему управљања; интегрална временска константа Ти подешава интеграл, прилагођавајући акумулацију грешке у систему управљања; диференцијална временска константа Тд подешава диференцијал, прилагођавајући стопу промене грешке у систему управљања.
Која је идеја реализације пид алгоритма са микроконтролером
Да би се реализовао ПИД контролни алгоритам на микроконтролеру, следећа је општа идеја реализације:
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; }
}




