掌上单片机实验室 — 检验自整定效果(12)

Arduino PID-Auto Tune库函数指南 与Arduino PID库同出于一位作者:Brett Beauregard 下面将解释一下本库之中的函数使用方法。与上篇PID库的指南一样,笔者在此不会详细地阐述PID的内部实现方法和原理。建议看过PID算法Brett Beauregard的博客地址,配合此文档阅读本文效果更佳。 阅读详情

一、背景

        上一步完成的 PID 自整定库的使用,效果不错,虽说有点曲折,但最终搞定。总体而言,在分享的PID-AutoTune 库基础上,可以实现 PID 参数自整定,关键是通过这个过程初步理解的自整定的概念和实现方式,对后续应用 PID 调节时,整定参数有了比较大的信心,这次是针对小车直流电机调速,下次想换一个不同场景,看看这种方式是否可行,如果可以,那就说明这套自整定的逻辑是成立的!

        这一步检验一下小车的调速效果,看看自整定是否能给出较好的PID参数。

二、目的

        基于前一步实现的自整定方式,用于整定小车的电机PID调速参数,实现小车电机定速转动,从而为后续小车可控运行打下基础。

三、测试方式、过程

3.1 硬件准备

        前一篇已说过:由于所用的 7 号镍氢充电电池放置了快 10 年,现在几乎无法正常放电,经过激活后,短路电流从约0.5A升到大约1.5A,勉强能用。

        小车的供电电路如下:

         原来设计时是考虑到电机启动和堵转瞬间会有较大电流,故使用电池直接给电机驱动H桥供电(电路中标号BAT),但所用的电池由于久置内阻太大,带负载后电压极剧跌落,导致电机无法正常工作。

        正好手头有DC-DC升压模块:

        在BAT输出上串入此模块,期望能稳住输出。增加后略有改善,但电机转动后,还是会从5V跌落到3V左右。前面尝试自整定功能时,就要基于此状态。

        由于想尝试用锂电池供电,所以不太想买新的镍氢电池。目前锂电池逐渐成为主流,原设计选择镍氢电池是考虑比锂电池安全,现在锂电池已经比较安全。

        用于电机驱动需要使用动力电池,即可以大电流放电的。选择的是用于模型飞机的聚合物锂电池,号称可以 10C 放电:

        电池尺寸正好可以放置在原来小车的电池仓中,但原来的充电电路是针对镍氢电池设计的,改为锂电后,需要改变为4.2V恒压充电。分析上述供电电路,做了以下修改:

        1、将R11、R12、R13拆除,脱开原来的充电回路。

        2、R13短路,将充电输入直接接入D2。

        3、将D2换为 1N4007,充电电压改为标准5V,使用手机充电器,经过二极管 1N4007降压后,正好接近4.2V。

        4、充电电源改用标准的手机充电器。

        经过这样简单修改,原来的供电电路即可使用。BAT输出增加的DC-DC升压模块保留,正好弥补锂电池输出电压偏低的问题,输出调节到5V。

        完成后,测试了一下,效果很好。开始基于此重头开始完成自整定过程。

3.2 PID 参数自整定

        前面一篇已经搞清楚使用 PID 自整定库的操作顺序:

        1)使用PWM输出确定速度范围和判断线,以及产生速度震荡的PWM摆幅。

        2)按所得到的上述数据设定自整定工作参数,启动自整定,两侧电机分别执行。

        由于两侧电机特性、结构差异,故考虑两侧的PID参数分开整定。

        在执行整定前还发现 MCU 程序的一个 bug:PID调速忽略了负值,因为我设计时将负值定义为反转,但 PID 算法必须是速度绝对值!此篇所附程序已修改。

        单侧运转整定,小车原地打转,可以放置在桌上:

自整定参数过程

        左侧自整定过程:

        右侧自整定过程:

 

 

 

 

        得到两组PID参数,将其放入程序,观察效果如何?

3.3 检验效果

        直接将上述整定得到的参数作为程序的默认PID 参数:

 

 

        先看一下记录的速度及对应PWM波形:

        1、左侧速度 200mm/s:

        2、左侧速度400mm/s:

        3、右侧速度 200mm/s:

         4、右侧速度 400mm/s:

        图中红色直线为设定速度,红色曲线为实际速度,绿色曲线为PWM值。

        从上述图中可以清晰看出:速度很快就围绕设定值以一个固定的偏差波动了,波动幅度应该是小车的驱动特性所致,一是码盘分辨率偏低,虽说20ms刷新一次速度,但测得的速度实际是较长时间的平均值。此外转动机构的阻力变化较大,处于波动状态,这个从前面固定PWM输出时的速度变化就可以看出。

        低速时的过冲是由于我在程序中设置了固定的启动PWM (60%),同时为了避免开始速度变化过大,倍频算法有误,延时了10个脉冲后才启动测速和 PID;这个在波形中可以清晰地看到,如果想获得更好的效果,可以根据设定速度选择启动PWM。

        上述的速度波动是否会影响调速的效果呢?

        用走直线的方式可以大致验证一下,如果两侧速度都能较好的运行在设定速度下,那小车应该走的是直线,将左右侧速度均设置为300mm/s,运行1000mm:

PID 自整定参数验证

        从视频中可以看出:开始时由于两侧是固定PWM驱动,小车跑偏了一点,之后PID投入,小车基本走的是直线,到结束时,由于两侧是脉冲计数控制的,故没有走完的一侧继续,小车又回正了。

        通过这个视频可以看出:

        1、PID调速后的实际运行效果不错,速度波动影响不大。

        2、程序所设置的定距离控制精度还行。

四、结语

        通过这步验证,我对 PID 的运用十分有信心了,后面想尝试一下走轨迹的PID控制效果,即:将小车走的轨迹作为PID的设定值,通过改变左、右两侧的速度差,实现轨迹跟踪。

        这个场景和调速略有区别,看看自整定方式是否可行。

————————————

文中程序下载:

链接:https://pan.baidu.com/s/16-V7hRcgnQXPdn1mZvCVDg

提取码:eg9q

自动整定PID参数 ②强行震荡:再暂时禁用PID调节,使控制器将一个矩形波状的控制作用力作用于系统,当被调量低于设定值时,控制输出产生一个正的阶跃信号,迫使被调量向高处转变,当被调量高于设定值时,控制输出产生一个负的阶跃信号,迫使被调量向低处转变,由此强行使系统产生震荡。完成波形分析后,仅需将得到的峰峰值和周期带到PID前辈们推导出的公式中,计算得到相应的PID参数,再将PID参数更新投入使用,PID自整定便大功告成!③分析波形:分析以上过程产生的波形的特征,根据需要计算出相应的PID参数。 阅读详情

相关推荐

PID autoTune PID 自整定算法C代码

PID autoTune PID 自整定算法C代码,开源的andonid

掌上单片机实验室 – 实现PID自整定(11)

上一篇实现了小车运动控制,在程序框架下,基于FreeRTOS编写了驱动任务,包含电机控制、测速、PID调速、行走距离控制等和运动相关的功能。但 PID 调速只是完成了算法,并未真正实现调速,因为 PID 调速的核心是PID 参数的确定,即整定!而整定是 PID 最富挑战的内容,调速效果的好坏完全取决于参数。 本篇目的是尝试使用 Arduino 分享的自整定库实现 PID 参数自整定。

embedream的专栏 6807

用python实现PID控制器 (PyCharm)

用python实现PID控制器 (PyCharm)

PID参数自整定

说明:根据B站上的视频学习的,以下内容仅作为笔记,方便自己查看。 simulink模型 方法: 1、设定输入信号; 2、设定输出信号; 3、控制系统的调整; 4、 5、添加输入输出信号; 6、 7、依旧添加输入输出,以及设置时间常数0.5、没有过冲0。 8、 9、 10、 11、双击PID模块查看参数; 12、点击运行——得到理想图。 ...

m0_62299908的博客 8100

pid_controller:PID控制器的python实现以及随附的自动调整实用程序

-------->不稳定的进行中 这在Python中实现了基本的PID控制器( )。 也可以使用自动调谐操作模式(PID_ATune.py)。

PID-Autotuner:PID控制器

PID自动调谐器 基于Arduino Mega和Raspberry Pi的独立于系统的Autotuner PID控制器。 要使用,请在Arduino Mega上构建Arduino代码。 然后只需在通过USB连接到Arduino Mega的Raspberry Pi设备上运行main.py。 引文 如果您使用此代码,请引用: @INPROCEEDINGS{8751768, author={A. E. {Taşören} and H. {Örenbaş} and S. {Şahin}}, booktitle={2018 6th International Conference on Control Engineering Information Technology (CEIT)}, title={Analyze and Comparison of Different PID Tuning M

掌上单片机实验室 – 检验自整定适应性(12A)

在另一个不同的小车底盘上,验证 PID 参数自整定的适应性,从而确定 PID 自整定库是否实用。 检验的结果应该说相当满意!至少对于直流电机调速而言是可用的。

embedream的专栏 491

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6597

掌上单片机实验室 – 构想(1)

一、背景 突如其来的疫情,打乱了大学生的正常学习氛围,传统的校园学习模式无法实施,虽说网上教学做了相应的弥补,但对于多数工科课程,只靠线上教学很难完成,单片机课程就是其中之一。 单片机这类工科课程有较强的实践需求,纸上谈兵很难达到预期的效果,所以开设这门课程的学校均建立有相应实验室。 而经典的实验室设备很难让学生个人拥有,在家独立完成实验,因为实验设备的设计及实验内容的编制均未考虑到这样的场景。 能否设计一款适合学生单独拥有,且可以自己完成实验的单片机学习实验装置呢? 本文尝试用我设计的第四.

embedream的专栏 395

Xiaojie雷达之路---使用CCS创建一个毫米波雷达的工程(AWR1843)

前些天,在工具箱中下载了一个基于毫米波雷达(AWR1843)自动停车的案例,并成果导入CCS中,可以完美运行,但是如何新建一个新的工程呢?这篇文章就会对其进行讲述。

XiaoJie的博客 4550

TouchGFX在STM32上的移植全过程:超详细版指南

深入讲解将TouchGFX集成到STM32开发环境的每一步,涵盖配置、驱动适配与UI调试。无论是初学者还是进阶开发者,都能快速掌握TouchGFX在嵌入式平台的应用技巧。

weixin_42443533的博客 600

【课程设计】springboot人体健康检测微信小程序 毕业设计 012142

前台注册用户的功能如下: 注册登录:用户填写个人信息,并验证手机号码进行账户注册,注册成功后方可登录系统。 健康科普推荐:用户可以在线进行健康科普信息搜索,对健康科普知识内容进行查看等。 美食教程:用户可以查看各类美食教程视频信息等。 健康数据编辑:用户可以在线进行个人的健康数据信息录入,然后提交系统。 健康讨论:用户可以在线发布健康话题进行讨论交流操作。 高级体检:高级用户可以提交个人的体检信息资料等。 3.2.2后台管理员功能 管理员功能如下: 修改密码:管理员可以随时修改自己进入系统的登录密码,以保证

WeiXin_DZbishe的博客 2130

金砖大赛-第二届网络安全防护治理实战技能大赛全国总决赛WP

格式进行md4加密,然后将小写的md4密文进行作为flag信息进行提交,提交格式为flag{MD4小写},例如调用频率异常高的user_id是user_xxx,使用的非公开模型名称是model-name,具体调用次数为10,那么按照格式,对user_xxx:model-name:10进行md4加密后,提交范例为:flag{dd00cb9e393f4a9ac639294b3cfe4d6a}挖矿木马是通过远程脚本进行部署的,请登录到失陷的服务器上,找到并分析挖矿木马是从那个远程IP下载的。

Laffrey的专栏 240

(附源码)Springboot人体健康检测微信小程序-毕业设计 课程设计 012142

前台注册用户的功能如下: 注册登录:用户填写个人信息,并验证手机号码进行账户注册,注册成功后方可登录系统。 健康科普推荐:用户可以在线进行健康科普信息搜索,对健康科普知识内容进行查看等。 美食教程:用户可以查看各类美食教程视频信息等。 健康数据编辑:用户可以在线进行个人的健康数据信息录入,然后提交系统。 健康讨论:用户可以在线发布健康话题进行讨论交流操作。 高级体检:高级用户可以提交个人的体检信息

Q_3461074420的博客 3591

微信小程序 - 实现大文件上传分片/切片+本地选择文件上传超大文件,小程序大文件切片上传+断点续传+上传进度条+失败自动重传完整运行示例源码,支持图片、视频、文档各种文件(支持上传单个文件或批量上传)

微信小程序实现大文件上传,实现分片大文件上传,微信小程序 分片 断点续传 大文件上传,微信小程序实现大文件上传 分片上传 进度条,小程序文件分片上传,微信小程序如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,微信小程序实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,微信小程序wx.uploadFile,小程序上传视频,小程序上传文档,实现大文件上传(切片上传)实现大文件上传到服务器教程,支持批量多

🏆 前端领域优质创作者 1万+

解决TexStudio编写LaTeX论文引用文献问题:正文引用处出现[?],参考文献也不显现

当我们利用LaTeX编写论文时,可能会出现引用参考文献时正文引用处出现?号,肯能的原因及解决方案如下: 问题一 忘记在\end{document}前面放\bibliographystyle{样式}和\bibliography{参考文献bib文件名}: \bibliographystyle{plain} \bibliography{sample} 其中, LaTeX 标准选项及其样式共有以下8种: plain,按字母的顺序排列,比较次序为作者、年度和标题. unsrt,样式同plain,只是按照引用的先后

左手の明天的博客 9529

有关于PID Autotune库的一些认识

在自动调谐的过程中,该库的使用方法是著名的临界比例法,就是使得系统的output维持在一定的输出范围内,可以输出设定在setpoint附近的矩形波,通过设置其步长D,经过一段时间后可以得到系统的反馈input,是一条在一定范围内波动的曲线,通过得到这段曲线的波峰之间的距离Pu,由于会存在实际信号存在一定的噪声,需要设计一个噪声带对触发线进行代替。得到曲线之后按照下面公式进行计算即可。 ...

wyf9668的博客 1419

Cesium 实战 26 - 自定义纹理材质 - 箭头流动线(图片纹理)

Cesium 实战 - 自定义纹理材质 - 箭头流动线(图片纹理)。

非科班Java出身GISer的博客 1401

Arduino PID Autotuner 使用教程

Arduino PID Autotuner 使用教程 项目介绍 Arduino PID Autotuner 是一个用于自动调整 PID 控制参数的开源项目。该项目基于 Ziegler-Nichols/relay 方法,旨在为 Arduino 及兼容板提供自动 PID 调谐功能。尽管项目最初是为 Arduino 设计的,但它并不依赖于 Arduino 标准库。项目的主要目的是简化 PID 控制参数的...

gitblog_00502的博客 909

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【嵌入式必读】一文彻底理解PID自整定及PID自整定代码设计

PID继电器自整定

兽神 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PID-Library 使用教程

PID-Library 使用教程 1. 项目的目录结构及介绍 PID-Library/ ├── examples/ │ ├── Basic_PID/ │ ├── PID_Relay/ │ ├── PID_Position/ │ ├── PID_Windup/ │ ├── PID_Adaptive/ │ └── PID_AutoTune/ ├── src/ │ ├── P...

gitblog_00477的博客 610

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

用纯C语言分别实现增量式与位置式的PID自整定算法

用纯C语言分别实现增量式与位置式的PID自整定算法

Koma的主页 7717

掌上单片机实验室 – RT-Thread 下实现PID自整定(20)

将基于 Arduino+FreeRTOS 实现的 PID 自整定功能移植到 RT-Thread 下,看看是否可行。实施结果:OK!基于 RT-Thread 完美实现了 PID 调速。顺带验证了基于 Serial V1 版本的发送阻塞验证,发送数据时并未阻塞,暂时可以不升级到 Serial V2.

embedream的专栏 1366

28BYJ48 步进电机驱动记

被 28BYJ48 的低价所惑,启动了替换舵机之旅,结果差点翻车,好在最后找到了出路。感觉 28BYJ48 步进电机市场上很多,估计会有不少人选用,故分享我的入坑经历,供同行者参考。

embedream的专栏 2372
上一篇: 掌上单片机实验室 - 编程环境(续)(6)
下一篇: 掌上单片机实验室 – 检验自整定适应性(12A)
嵌入之梦
博客等级 码龄21年 134粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值