本文主要是介绍PID控制电机转速简单测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
傅里叶变换与不确定性 卓晴
速度采样频率 卓晴
在线拟合工具
新概念:积分限幅。在物理量达到期望值之前防止误差积分越来越大使得没有稳定的反而作用相反了。而有了积分限幅之后在积分误差达到幅值的时候将会保持不变,其目的是让PID控制函数不会输出一个很大的值,这样就能让物理量稳定下来。
从机
uint8_t start_flag = 0;
uint8_t finish_flag = 0;
uint8_t cnt = 0;
uint8_t data_to_receive[2];
void UART4_IRQHandler(void)
{//接收数据帧if(start_flag == 1 && finish_flag == 0) {if (cnt < 2)data_to_receive[cnt++] = USART_ReceiveData(UART4);if (cnt == 2)finish_flag = 1;}//检测是否为帧头if (start_flag == 0) {uint8_t start_byte = USART_ReceiveData(UART4);if (start_byte == 0xAA)start_flag = 1;}//检测帧尾if (finish_flag == 1) {uint8_t finish_byte = USART_ReceiveData(UART4);if (finish_byte == 0x11 && cnt == 2) {finish_flag = 0;start_flag = 0;cnt = 0;int16_t data = *((int16_t *)data_to_receive);int pwm = (int)((data + 36.705882) / 2.111569);MotorRun(data, data);}}}
主机
- 增加了速度方向的显示。
- 检测标志位来判断方向不稳定,会有毛刺出现。
通过一个现实不可能达到的阈值来检测方向,效果不错。
开环测试PWM占空比与转速的关系
初始图像
提取的数据
x(非占空量) | y(rps * 100) |
---|---|
100 | 168 |
125 | 225 |
150 | 273 |
175 | 331 |
200 | 388 |
225 | 437 |
250 | 495 |
275 | 552 |
300 | 600 |
325 | 658 |
350 | 706 |
375 | 760 |
400 | 811 |
425 | 860 |
450 | 911 |
475 | 965 |
500 | 1005 |
进行线性拟合
函数方程表达式为: F ( x ) = 2.11156862745098 ∗ x − 36.70588235294107 F(x) = 2.11156862745098*x-36.70588235294107 F(x)=2.11156862745098∗x−36.70588235294107
拟合误差: 0.9995420363644586 0.9995420363644586 0.9995420363644586
PID调节(速度采样和控制间隔均为20ms)
kp = 0.80, ki = 2.50, kd = 0.00, SetSpeed = 6.0
这篇关于PID控制电机转速简单测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!