Алгоритм ПІД-регулювання в даний час є одним з найбільш широко використовуваних алгоритмів керування. ПІД-регулювання пропонує такі переваги, як регульовані параметри, широкий спектр застосувань і висока точність регулювання. У практичній інженерії алгоритм PID може бути застосований до різних галузей, включаючи електромеханічне керування, промислову автоматизацію, робототехніку та мікропроцесорне керування.
Три параметри алгоритму PID: пропорційне посилення Kp, інтегральна постійна часу Ti та похідна постійна часу Td. Різні системи вимагають різних параметрів ПІД, і оптимальні параметри зазвичай отримують шляхом експериментування та налагодження. Пропорційна константа Kp регулює пропорційне посилення, контролюючи відношення виходу системи до похибки зворотного зв'язку під час роботи; інтегральна постійна часу Ti регулює інтегральний посилення, контролюючи накопичення помилок під час роботи системи; а похідна постійна часу Td регулює похідну посилення, контролюючи швидкість зміни помилок у системі керування.
Який підхід до реалізації алгоритму ПІД на мікроконтролері?
Щоб реалізувати алгоритм ПІД-регулювання на мікроконтролері, загальний підхід такий:
1. **Визначити параметри PID**:
- Виберіть відповідне пропорційне посилення (Kp), інтегральний час (Ti) і похідний час (Td) на основі характеристик і вимог фактичного контрольованого об’єкта.
2. **Збір даних датчика**:
- Використовуйте відповідні датчики (такі як датчики температури, датчики положення тощо), щоб отримати-дані зворотного зв’язку від контрольованого об’єкта в реальному часі.
3. **Порівняння заданих значень і значень зворотного зв’язку**:
- Порівняйте задане значення (бажане значення) зі значенням зворотного зв’язку, щоб обчислити похибку (Error).
4. **Розрахунок PID**:
- Обчисліть керуючу змінну (вихід) за допомогою формули PID-алгоритму: PID=Kp * Помилка + Ki * ∫ Помилка dt + Kd * d(Помилка)/dt.
- Kp, Ki та Kd – параметри PID; Error – значення помилки; ∫ Помилка dt представляє інтегральний член; і d(Error)/dt представляє похідний член.
5. **Обмеження** (необов’язково):
- Для певних програм може знадобитися обмежити діапазон вихідного значення, щоб запобігти його виходу за прийнятний діапазон контрольованого об’єкта.
6. **Вихідний контрольний сигнал**:
- Розрахована керуюча змінна використовується як керуючий сигнал і надсилається до виконавчого механізму (наприклад, двигуна або клапана) для регулювання та керування керованим об’єктом.
7. **Установіть контрольну частоту**:
- Установіть відповідну частоту керування-цикл виконання алгоритму керування-на основі конкретних вимог програми.
8. **Повторіть алгоритм PID**:
- У циклі-часу реального часу кілька разів виконуйте наведені вище дії, щоб постійно відстежувати значення зворотного зв’язку, обчислювати змінну керування та виводити сигнал керування для досягнення стабільного керування системою.
У реальному програмуванні мікроконтролерів ви можете вибрати відповідні засоби розробки та мови програмування (наприклад, C або мова асемблера) на основі конкретної моделі мікроконтролера та платформи розробки. Слід зазначити, що в практичних застосуваннях існує багато методів оптимізації та вдосконалення алгоритму PID, таких як інтегральне розділення та адаптивний PID, які можна додатково дослідити та реалізувати відповідно до конкретних вимог.
Принципи та робота ПІД-регуляторів
ПІД-регулятор складається з трьох компонентів: пропорційного (P), інтегрального (I) і похідного (D). Він генерує контрольний вихід шляхом обробки системної помилки, відхилення та швидкості зміни. Його робота включає в себе наступні кроки:
- Отримайте задане значення та значення зворотного зв’язку
- Обчисліть похибку
- Обчисліть контрольний вихід на основі пропорційного посилення, інтегрального члена та похідного
- Оновіть параметри контролера
- Вивести керуючий сигнал
Реалізація коду STM32
Нижче наведено зразок коду для проектування та реалізації ПІД-регулятора з використанням мікроконтролера STM32:
```c
#include "stm32f4xx.h"
// Визначення параметрів ПІД-регулятора
float Kp=0.5; // Пропорційне посилення
float Ki=0.2; // Інтегральне посилення
float Kd=0.1; // Похідний приріст
// Визначення змінних зберігання
float уставка=50.0; // Уставка
float feedback=0.0; // Значення зворотного зв'язку
помилка float=0.0; // Помилка
float last_error=0.0; // Попередня помилка
float інтеграл=0.0; // Інтегральний термін
// Функція обчислення виходу ПІД-регулятора
float pidController(float dt)
{
// Обчислити помилку
помилка=задане значення - відгук;
// Обчислити інтегральний член
інтегральна += помилка * dt;
// Обчислити похідний член
float похідна=(помилка - last_error) / dt;
// Розрахувати контрольний вихід
float вихід=Kp * помилка + Ki * інтеграл + Kd * похідна;
// Оновити попередню помилку
last_error=помилка;
зворотний вихід;
}
int main(void)
{
поки (1)
{
// Отримати значення зворотного зв'язку
// Встановити інтервал часу
// Розрахувати вихід PID
float dt=0.01; // У цьому прикладі інтервал часу становить 0,01 с
float control_output=pidController(dt);
// Виведення керуючого сигналу
// Відкласти на якийсь час
for (int i=0; i < 10000; i++);
}
повернути 0;
}




