Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PID控制算法
RT-Robot机器人框架_小车_机械臂_无人机
智能小车_平衡车
狂暴战车 直流电机转速闭环,pid调试过程
发布于 2019-08-01 10:32:43 浏览:4479
订阅该版
当我们给小车设定速度时,自然是希望它能够按照预设的速度运行,但因为外界阻力,显然轮子的转速会受到影响,达不到预设值或变的不稳定。 这个时候就需要闭环控制了,来使车轮的转速在受到一定的干扰时也能稳定在预设值上下。 谈到闭环控制算法,最经典的当然是PID了,rt-robot 中提供了PID的算法,其中有增量式PID和位置式PID,对于电机的控制,增量式PID更为合适。 在PID调试过程中, 观察波形是很有必要的。 可以显示波形的工具有很多, 在这里,我使用的是 ANO_TC匿名科创地面站, 它不仅可以图形化显示数据,而且还有调参接口,支持串口、UDP等通信方式。 ANO_TC 上位机有一套自己的协议,下位机(小车)需要实现这部分,才能够使用它。 ![ano.png](https://oss-club.rt-thread.org/uploads/20230411/a12be42c31ac6a641fe3f4c4da1d17d7.png.webp) 在与上位机通信对接完成后,就可以开搞了。调参过程中,增量式与位置式略有不同, 增量式先加大 Ki. !: 所用电机不太好。同时因为IO口不够用,没能使用MCU定时器的编码器接口(硬件),只好用软件包中的提供的编码器接口(软件)。 测速稍有影响,明显的可以看到在相互干扰,所以在看以下调试过程中的波形时,不要太过苛刻啊。 ![ab.png](https://oss-club.rt-thread.org/uploads/20230411/fe91dae6fdd5359f040cf59d2b19102b.png) 以下是具体的调参过程,仅供参考 (ps:两驱小车,使用同一套PID参数) 1.0: 首先设置KP=0,KD=0,KI=0.1。观察波形,可以看到稳定过慢,值太小 ![0.1.png](https://oss-club.rt-thread.org/uploads/20230411/26015355098fd3d0edfd4e33fdaa5bd6.png) 1.1: 保持Kp、Kd不变,设置Ki为1.0。观察波形,稳定加快。 ![1.png](https://oss-club.rt-thread.org/uploads/20230411/bedffdfa7ca76dca6989af63d83d544f.png) 1.2: 保持Kp、Kd不变, 设置Ki为2.0。观察波形,有振荡的趋势 ![2.png](https://oss-club.rt-thread.org/uploads/20230411/4c02af7b14efec964c673ad5a3a3b2a8.png) 1.3: 保持Kp、Kd不变,设置`Ki=4.0`。观察波形,振荡趋势更加明显 ![4.png](https://oss-club.rt-thread.org/uploads/20230411/6f18512d27ec9e67c5add7b82cef6e52.png) 1.4: 保持Kp、Kd不变,设置`Ki=8.0`。观察波形,在有规律的振幅渐小的振荡 ![8.png](https://oss-club.rt-thread.org/uploads/20230411/5ffc21373660a21d86a4e5ce80fce5fa.png) 1.5: 保持Kp、Kd不变,设置`Ki=16.0`。观察波形,来回大幅度振荡,此时Ki已经过大了 ![16.png](https://oss-club.rt-thread.org/uploads/20230411/fd38ac31992517f724755618524c109f.png.webp) **经过 1 过程后,暂定Ki为8.0** 2.0: 设置`Kp=0.1、Ki=8.0、Kd=0.0`。观察波形,几乎没有什么影响 ![0.1-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230411/02a936e3c01bc34dee66d6d263236e68.png) 2.1: 保持Ki、Kd不变,设置`Kp=1.0`。观察波形,变化不大 ![1.0-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230411/d01863bc61a765a3c88625d046f869f5.png) 2.2: 保持Ki、Kd不变,设置`Kp=2.0`。观察波形,振荡有被消减 ![2.0-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230420/460f3c2ea7b7196c8912a14e3d8a8ccb.png) 2.3: 保持Ki、Kd不变,设置`Kp=4.0`。观察波形,变化不大 ![4.0-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230420/44313906da41de8c2192be5276315c8d.png) 2.4: 保持Ki、Kd不变,设置`Kp=8.0`。观察波形,振荡明显减弱 ![8.0-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230420/3016409def133ccd128e01d89580d034.png) 2.5: 保持Ki、Kd不变,设置`Kp=16.0`。观察波形,新的振荡出现,此时Kp已经过大了 ![16-8.0-0.0.png](https://oss-club.rt-thread.org/uploads/20230420/21f50d04f03882e90d3e80ca7fe41695.png.webp) **经过 2 过程后,暂定Kp为8.0** 3.0: 设置`Kp=8.0、Ki=8.0、Kd=0.1`。观察波形。看不出变化 ![7.6-8.0-0.1.png](https://oss-club.rt-thread.org/uploads/20230420/85a78e9f4b85c5813c418ae5e266ba0f.png) 3.1: 保持Kp、Ki不变,设置`Kd=1.0`。观察波形,超调幅度被消弱 ![7.6-8.0-1.0.png](https://oss-club.rt-thread.org/uploads/20230420/4002f5eb5dc91287b1129b9467964077.png) 3.2: 保持Kp、Ki不变,设置`Kd=2.0`。观察波形,无明显变化 ![7.6-8.0-2.0.png](https://oss-club.rt-thread.org/uploads/20230420/84f441267d0ffb145fae8f0280433ed8.png) 3.3: `Kd=6.0`。观察波形,超调幅度继续消弱 ![7.6-8.0-6.0.png](https://oss-club.rt-thread.org/uploads/20230420/27e945d76da5e45de43b0d9de81b3542.png) 3.4 `Kd=8.0`。观察波形,超调幅度无明显变化,且有要振荡的趋势 ![7.8-8.0-8.0.png](https://oss-club.rt-thread.org/uploads/20230420/d54d6c40c1840ba5fbac9df3a5831f4d.png) 3.5: `Kd=16.0`。观察波形,大幅振荡,此时Kd已经过大了 ![7.8-8.0-16.0.png](https://oss-club.rt-thread.org/uploads/20230420/5cbb8d01e5a978146fee6f2e39273a55.png.webp) 经过 3 过程后,暂定Kd为8.0。 至此,已经得到了一套PID参数,之后就是基于这套参数,反复调节,寻找更优的参数。 PID的参数并不是彼此孤立的,并不是确定了一个参数后,就一直不变,对于调一个参数时需要改动其它参数的情况是很常见的。 以上只是方便展示,希望大家看过后,不要有误解。 上述过程只是为了大致确定参数的数量级和敏感度。 n: 最后选定的参数是:`Kp=6.6、Ki=6.5、Kd=7.6`。效果如下 ![6.6-6.5-7.6.png](https://oss-club.rt-thread.org/uploads/20230420/574e206b51a5d92636a2e1f44eb2658b.png)
查看更多
4
个回答
默认排序
按发布时间排序
whj467467222
认证专家
2019-08-01
开源,分享,交流,共同进步
PID整定参数的选择之试凑法
Carry
2019-12-02
这家伙很懒,什么也没写!
博主能分享一下你的 ”ANO_TC匿名科创地面站” 软件吗? 我最近调通了这个robot框架的电机闭环,发现框架内有现成的传参函数。 你的这个版本在匿名网站上找不到了,谢谢啦。
sogw
2019-12-05
这家伙很懒,什么也没写!
>博主能分享一下你的 ”ANO_TC匿名科创地面站” 软件吗? 我最近调通了这个robot框架的电机闭环,发现框架 ... https://pan.baidu.com/s/1Zbvmzr8Mbt9Mytft31IcCw
等风来
2021-04-24
这家伙很懒,什么也没写!
博主你这个麦伦小车的控制精度怎么样 看你的代码加了IMU这个
撰写答案
登录
注册新账号
关注者
0
被浏览
4.5k
关于作者
sogw
这家伙很懒,什么也没写!
提问
17
回答
33
被采纳
0
关注TA
发私信
相关问题
1
RTT软件包做的平衡小车,请教各位大神看看
2
三轮差速智能小车 开发记录
3
[一起DIY智能战车]硬件选择
4
rt-thread智能小车软件环境搭建
5
狂暴战车 使用 rt-robots 软件包 “组装” car
6
还在为做平衡小车而烦恼吗? EV来了
7
还在为做平衡小车而烦恼吗? EV 来了
8
狂暴战车 开发环境搭建
9
汇总:狂暴战车 开发记录
10
智能战车遥控方案概览
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部