pid速度环stm32循迹小车
时间: 2025-01-02 09:38:59 浏览: 8
### STM32循迹小车上的PID速度控制实现
#### 连接硬件组件
为了构建一个能够执行PID速度控制的STM32循迹小车,首先需要正确配置各个硬件模块之间的连接。五路循迹传感器通过特定引脚与STM32相连:VCC接到5V电源端子上;GND接地线;而五个输出信号分别对应于PA4至PB0 GPIO接口[^1]。
#### 初始化项目设置
使用STM32CubeMX工具初始化MCU参数并生成启动代码框架。在此过程中可以定义定时器用于测量时间间隔以及PWM通道用来调整电机的速度。此外还需要开启ADC功能以便读取来自红外反射型光电开关的数据作为反馈输入给控制系统。
#### 编写软件逻辑
核心部分涉及编写程序来处理数据采集、计算偏差值及应用PID算法调整马达行为:
```c
// 定义全局变量存储上次误差和积分项累加结果
float last_error = 0;
float integral_sum = 0;
void calculate_PID(float *left_speed, float *right_speed){
static const float Kp = 1.2f; // 比例系数
static const float Ki = 0.01f;// 积分系数
static const float Kd = 0.5f ;// 微分系数
int sensor_values[5]; // 存储当前时刻各传感器状态
read_sensors(sensor_values);
// 计算目标路径中心位置相对于实际检测到的位置偏移量(即误差)
float error = compute_track_offset(sensor_values);
// 更新积分累积项
integral_sum += error*Ki;
// 应用PD公式得出新的速度指令
float delta_output = (error-last_error)*Kd + error*Kp +integral_sum ;
// 将增量应用于左右轮速度设定值中
*left_speed -= delta_output ;
*right_speed += delta_output ;
// 更新前一周期误差记录
last_error = error;
}
```
此函数接收两个指针类型的参数指向左/右两侧驱动轮的目标转速,并依据实时获取自循迹感应装置的信息调整个体差异以保持车辆沿预定轨迹行驶[^2]。
阅读全文