# 编码器电机PID位置式 **Repository Path**: zlm678/motor_with_encoder ## Basic Information - **Project Name**: 编码器电机PID位置式 - **Description**: 专注于编码器电机的PID位置控制算法实现,提供高效稳定的运动控制方案,适用于各种精密驱动需求。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-03-25 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编码器电机PID位置式 #### 介绍 专注于编码器电机的PID位置控制算法实现,提供高效稳定的运动控制方案,适用于各种精密驱动需求。 #### 软件架构 软件架构说明 说明 参考教程:[https://blog.csdn.net/m0_74800695/article/details/134586614](https://blog.csdn.net/m0_74800695/article/details/134586614)![](https://cdn.nlark.com/yuque/0/2025/png/40376197/1742804310832-d77fbce3-277b-408c-9471-f2ba8c4ae0ee.png) 配置编码器 ![](https://cdn.nlark.com/yuque/0/2025/png/40376197/1742806209872-4b8c31e8-db30-4576-9c64-d53127d091b5.png) PWM 输出 1KHZ 更新中断定时器 10ms 中断一次 速度获取 速度更新频率设置为 100hz,即 10ms 更新一次数据 代码如下: void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { static int i = 0; if (htim == (&htim3)) { i++; if(i>9) { MotorSpeed = (short)__HAL_TIM_GET_COUNTER(&htim1); __HAL_TIM_SET_COUNTER(&htim1,0); int temp = moving_average(&filter,MotorSpeed); //set_computer_value(SEND_FACT_CMD, CURVES_CH1, &temp, 1); motor_pid_control(temp); i=0; } } } L298N 驱动 控制逻辑如图: PID 调节 > **PID参数调节方法:** > > 1. **先调比例(P):** > - 从小到大逐渐增加比例系数,直到系统对输入信号产生足够的响应,但不要让系统出现振荡或不稳定。 > - P的主要作用是减少系统的误差,但过大的比例可能会导致系统振荡。 > 2. **再调积分(I):** > - 在比例参数确定后,尝试增加积分系数,以消除系统的稳态误差(即系统最终是否会达到目标值)。 > - 积分的作用是消除余差,但过大的积分会导致系统响应变慢或出现振荡。 > 3. **最后调微分(D):** > - 在比例和积分参数确定后,加入微分系数来提高系统的动态性能。 > - 微分的作用是根据误差的变化率提前调节,抑制系统的超调和振荡。 > - 通常从较小的D值开始,逐步增加,直到系统对扰动的响应更加平稳。 **注意事项:** > + 在调节过程中,需要观察系统的动态响应曲线,判断是否出现振荡、超调或响应过慢等问题。 > + 每次调整一个参数,不要同时调整多个参数,以免难以判断效果。 > + PID参数的调节需要多尝试、多观察,耐心调整才能找到最佳参数组合。 > 速度响应曲线 ![](https://cdn.nlark.com/yuque/0/2025/png/40376197/1742875683571-f2bab4a5-405d-46fc-b770-78d8c5085672.png) 动态响应曲线 ![](https://cdn.nlark.com/yuque/0/2025/png/40376197/1742875608877-77cd5d0e-9c78-4824-9737-70e55ed419a0.png) 突变响应曲线 ![](https://cdn.nlark.com/yuque/0/2025/png/40376197/1742879924185-33bc3682-0ee2-435f-b56a-43c04ea088ca.png)