目录

  • 背景介绍
  • 1. 电流环/力矩环PID整定
  • 2. 速度环PID整定
  • 3. 位置环PID整定
  • 4. 其它注意事项

背景介绍

FOC作为直流无刷电机控制最常用的算法,得到广泛应用。在开源社区最常用的FOC项目有:simpleFOC,ODrive,VESC等。其中simpleFOC因其简单易用,支持多种硬件平台,很适合新手入门。我在用simpleFOC的过程中踩了不少坑,在此记录学习调试过程中的一些心得。

硬件平台:开始最好直接购买套件,熟悉后再自己搭配,我这里直接买的灯哥开源的套件
电机:2204
驱动器:L6234
磁编码器:AS5600
电流检测:INA240
主控MCU:ESP32

软件平台:Arduino,simpleFOC库,simpleFOC studio图形化调试工具

IDE工具:PlatforIO,也可以使用Arduino IDE(编译、下载速度很慢,所以我才找到了替代工具platforIO)

前面两篇总结了simpleFOC studio的基本参数含义,SimpleFOC调参1-力矩控制,SimpleFOC调参2-速度、位置控制,本篇主要总结simpleFOC中PID参数的整定攻略。

1. 电流环/力矩环PID整定

电流环PID整定整体框图如下,Torque control type: FOC current; motion control type: Torque

一般情况下current q、d的PID参数设置为相同的值,只需要调整好current q的PID参数,current d的PID参数不用再单独调试了。调试整体步骤如下:

  • I=0,D=0,调试比例增益P,做好记录表格,选择适合的P值
  • D=0, 调试积分增益I,做好记录表格,选择合适的I值
  • 一般D=0,不用调整。如果系统出现震荡,再增加一点D值,

测试条件:I=0,D=0时,设置目标值从M0—M0.5,P从5~160变化时,current q的变化量。

测试结果如下表:从P=20开始,设置M0时手放在电机上开始有震感,P=160时开始有肉眼可见的震荡。选取P=10.

P 值 5 10 20 50 75 90 100 150 160 170
current q 0.11 0.23 0.34手摸时有震感 0.42 0.45 0.46 0.46 0.47 0.48轻微震荡 0.48震荡

在P=10时,设置目标值从M0—M0.5,I从10~1000变化时,current q的从0达到0.5A需要的时间

测试结果如下表:从I=200开始,current q稳定的时间基本保持不变,选取I=300。

I值 10 50 100 200 300 500 1000
current q稳定时间 90 20 10 6 6 5 3

此外要注意low pass filter(LPF)参数的影响。当设置LPF=0.02时,current q的纹波会略微变小,但是在current q变化幅度增大时,很容易出现current q过冲,导致系统不稳定。最后测试选择LPF=0.01,此时虽然current q的纹波略大一点,但是在current q有2A直接跳变到0A时都不会有过冲现象,稳定性大大增加。

2. 速度环PID整定

电流环PID参数设置好之后,更改motion control type为velocity。
测试条件:I=0,D=0时,设置目标值从M0—M100,P从0.010~0.025变化时,velocity的变化量。在跳变点,不时会出现current q/d过冲的现象。

测试结果如下表:从P=0.01开始,设置M0—M100,P=0.04时开始出现异常震荡,最终选择P=0.02

P 值 0.01 0.015 0.020 0.025 0.030 0.040
velocity 95 97 98 98 100 震荡

当P=0.02时,设置目标值从M0—M100,I从0.1~0.9变化时,velocity达到100后的过冲量.

测试结果如下表:从I=0.1开始,设置M0—M100,I=0.9时开始出现异常震荡,最终选择I=0.1

I 值 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
velocity 过冲量 105 105 108 108 117 130 135 135 震荡

3. 位置环PID整定

位置环PID整定相对简单很多,只需要调整P值就可以了。需要注意:在长时间进行PID整定时,simpleFOC硬件内部参数可能会与studio参数不一致,此时需要把已经整定好的电流、速度PID参数通过程序写入硬件,再调试位置环
测试条件:I=0,D=0时,设置目标值从M0—M3.14,P从1~20变化时,angle从0运动到3.14需要的时间。在跳变点,不时会出现current q/d过冲的现象。

测试结果如下表:从P=1开始,设置M0—M3.14,最终选择P=10

P 值 1 2 3 5 10 20
angle时间 40 25 20 10 10 5

4. 其它注意事项

  1. motion downsample:用于设置down sample motion loop, 会直接影响motor.loopFOC()循环的速度,默认值10。在进行PID整定时,必须首先保障motion downsample的值相同,不同的值对应的PID参数会不同。
  2. output ramp:输出斜率,用于减小输入到力矩控制环的最大变化量。output_ramp越大,PID引起Uq变化的速度更快;output_ramp越小,PID引起Uq变化的速度更慢。单位: V/s。通常控制环1ms循环一次,假设output_ramp=10,则每次循环,PID控制器能引起Uq变化10[V/s] * 0.001s = 0.01V.在调试PID过程中会影响到P值、I值的作用时间,output ramp越大,响应时间越短。每次调节前需要保障output ramp 值相同,不同的值对应的PID参数会不同。

SimpleFOC调参3-PID参数整定攻略相关推荐

  1. 我的四轴专用PID参数整定方法及原理

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  2. 【控制理论】——控制系统分类PID算法简介PID参数整定PID上位机通信协议

    目录 ​ 前言 一.PID算法 1.控制系统分类&参数&信号 2.PID算法简介 二.PID参数整定 三.PID上位机通信协议 1.数据帧&协议调试 2.协议代码实现 拓展: ...

  3. 基于入门级粒子群算法的PID参数整定(MATLAB2016b-simulink)(超详细01)

    PID算法作为工业或日常生活中常用的控制算法,想必大家都不陌生,依靠误差反馈来消除误差,关于PID的原理部分相比看这篇博客的同学应该都十分清楚,有不清楚的同学可以百度或知网搜索.PID算法的应用程度很 ...

  4. 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  5. 一个实例说明PID 参数整定

    引言:PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.     1.比例控制 ...

  6. 机器人控制——PID参数整定

    (1)首先选择一个合适的并且尽量短的采样时间让系统工作: (2)首先加入比例环节,调节比例系数,直到系统的输出出现临界振荡: (3)若单独的比例环节不能满足设计要求,则此时加入积分环节,调整好的比例系 ...

  7. 针对具有纯滞后环节的一阶惯性系统PID参数整定(衰减曲线法)

    假定被控系统的传递函数为: 一.建立开环结构图,观察系统对阶跃输入信号的跟随性. 由图二可知:开环系统的的上升时间很长,并且输出到达不了给定值,下面对该系统进行PID参数整定,进行PID控制. 图1 ...

  8. 基于遗传算法的PID参数整定研究(三)

    基于遗传算法的PID参数整定研究 在获得对象模型的基础上设计PID参数时常用的原理,经典的有经验试凑法.临界比例度法.极点配置原理.零极点相消原理.幅相裕度法等:现代的则往往借助于计算机,利用最优化方 ...

  9. matlab求系统根轨迹代码_根轨迹法、PID参数整定和matlab指令计算

    收获 (1)理解根轨迹的概念及其在控制系统设计中的作用: (2)手绘根轨迹草图,以及如何使用极端及绘制根轨迹: (3)熟悉在反馈控制系统中应用广泛的关键部件:PID控制器: (4)理解根轨迹在参数设计 ...

  10. 神经网络如何调参、超参数的最优化方法、python实现

    神经网络如何调参.超参数的最优化方法.python实现 一.what is 超参数 二.超参数优化实验 一.what is 超参数 超参数是什么,其实就是,各层神经元数量.batch大小.学习率等人为 ...

最新文章

  1. LeetCode 832. 翻转图像(异或^)
  2. figtree如何编辑进化树_进化树的注释:ggtree
  3. 未能找到元数据文件_Flink 源码:Checkpoint 元数据详解
  4. 做了极度危险的事情各种奔忙
  5. python 制作抽奖箱_丽水本地抽奖箱制作公司,抽奖箱制作-优质服务!
  6. PSFTP工具传输文件的命令使用方法
  7. docker 阿里镜像加速
  8. HTTP 协议中的长连接和短连接
  9. android 动画编辑器,开机动画编辑器 BootanimationEditor
  10. 高淇python400集课堂笔记_魔力耳朵重磅推出1对1课堂“全班型”满足更多中国家庭教育需求...
  11. 实数系统的构造与发展历程
  12. C语言大作业-个人通讯录管理系统、考试座位表生成系统、学生获奖信息收集与管理系统
  13. 看看最新BTA大厂的Java程序员的招聘技术标准,Java篇
  14. 最棒的10款MySQL GUI工具
  15. vue2开发过程中el-select懒加载问题
  16. 什么是腾讯云主机安全,主要有哪些功能作用?
  17. 无法加载SQLite.Interop.dll:找不到指定模块
  18. 全球 26 个主流视频网站高清视频下载全搞定,包括 P 站!
  19. 渗透测试-----ARP攻击
  20. 微信外部浏览器支付遇到:支付场景非法、appid 未关联paysignkey、商户支付下单id非法 等问题

热门文章

  1. MTK DDR进行ETT之后的压力测试--进行压力测试
  2. NEFU 262 贪吃的九头龙(树形背包,4级)
  3. Hystrix熔断器
  4. 1162. 【NOI2002】贪吃的九头龙 (Standard IO)
  5. 东北大学计算机BAT,基于BAT-OOPN方法的污染物排放量化模型研究
  6. matlab求非线性方程的根,求非线性方程的根
  7. 什么是嵌入式系统?嵌入式系统应该如何学习?
  8. 华为交换机初始化_我想问华为 s5700交换机 1。请问怎么恢复出厂设置? 2。如果没有密码又怎么恢复出厂设置? 谢谢了...
  9. Electron修改图标
  10. 互联网协议 — 802.1q VLAN 虚拟局域网协议