stm32cubepid控制
时间: 2023-11-13 17:52:27 浏览: 15
stm32cubepid控制是通过使用STM32CubeMX和HAL库来实现PID控制的方法。在配置和编写代码后,您可以了解PID的主要作用。在PID控制中,您可以调整PID参数以达到预期效果。下面是一个PID控制位置的示例代码:
#include "pid.h"
#include "stdio.h"
pid_p pid; //pid位置式
void PID_init() {
printf("PID_init begin \n");
pid.SetVoltage = 0.0; // 设定的预期电压值
pid.ActualVoltage = 0.0; // adc实际电压值
pid.err = 0.0; // 当前次实际与理想的偏差
pid.err_last = 0.0; // 上一次的偏差
pid.voltage = 0.0; // 控制电压值
pid.integral = 0.0; // 积分值
pid.Kp = 0.2; // 比例系数
pid.Ki = 0.15; // 积分系数
pid.Kd = 0.2; // 微分系数
printf("PID_init end \n");
}
float PID_realize(float v, float v_r) {
pid.SetVoltage = v; // 固定电压值传入
pid.ActualVoltage = v_r; // 实际电压传入 = ADC_Value * 3.3f/ 4096
pid.err = pid.SetVoltage - pid.ActualVoltage; //计算偏差
pid.integral = pid.err; //积分求和
pid.result = pid.Kp * pid.err + pid.Ki * pid.integral + pid.Kd * (pid.err - pid.err_last); //位置式公式
pid.err_last = pid.err; //留住上一次误差
return pid.result;
}