生成一份stm2的模糊pid代码
时间: 2023-08-29 12:12:46 浏览: 49
好的,以下是生成一份stm32的模糊pid代码的示例:
```c
#define KP 0.8 // 模糊PID控制器的参数Kp
#define KI 0.1 // 模糊PID控制器的参数Ki
#define KD 0.3 // 模糊PID控制器的参数Kd
#define ERR_CNT_MAX 5 // 最大误差计数器
#define ERR_IDX_MAX 4 // 最大误差数组索引
#define ERR_IDX_MIN 0 // 最小误差数组索引
float err[ERR_CNT_MAX]; // 误差数组
int err_idx = ERR_IDX_MIN; // 当前误差数组索引
float fuzzy_PID(float current_value, float target_value)
{
float err_now = current_value - target_value; // 当前误差
float err_sum = 0; // 误差积分
float err_dlt = 0; // 误差差分
err[err_idx++] = err_now; // 存入误差数组
if (err_idx >= ERR_CNT_MAX) {
err_idx = ERR_IDX_MIN; // 超出索引范围则重置为最小索引
}
for (int i = ERR_IDX_MIN; i < ERR_IDX_MAX; i++) {
err_sum += err[i];
err_dlt += err[i] - err[i+1];
}
float fuzzy_p = err_now * KP;
float fuzzy_i = err_sum * KI;
float fuzzy_d = err_dlt * KD;
float output = fuzzy_p + fuzzy_i + fuzzy_d;
return output;
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)