掌上单片机实验室 — 检验自整定效果(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

单节锂电池充电管理芯片应用原理阐述及应用领域

当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。

weixin_41141180的博客 943

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

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

embedream的专栏 395

企业级Windows 10镜像封装实战:从规划到部署的完整指南

系统部署与镜像封装是企业IT运维中的核心基础技术,其原理在于通过创建预配置的系统模板,实现大规模计算机环境的快速、标准化部署。这项技术的核心价值在于将重复性手动操作转化为自动化流程,显著提升运维效率,保障环境一致性,并强化安全基线管理。在实际应用场景中,它尤其适用于新设备批量初始化、系统恢复和标准化环境构建。本文聚焦于Windows 10镜像的封装实践,深入探讨了使用Sysprep进行系统通用化处理以及通过DISM工具捕获WIM格式镜像的具体方法,为企业IT人员提供从零构建标准化系统镜像的完整路径。

weixin_33843947的博客 356

欧姆龙OMRON PLC之HostLink通讯协议(四)-FINS命令进阶应用与调试技巧

本文深入探讨欧姆龙OMRON PLC的HostLink通讯协议中FINS命令的进阶应用与调试技巧。文章聚焦实战排错,详细解析命令帧解剖、响应帧解读与网络抓包三大核心方法,并分享性能优化策略,如合并读写与异步设计。同时介绍了强制操作、多存储区访问等高级命令的应用场景,旨在帮助工程师高效解决现场通讯问题,提升系统稳定性与效率。

nept的博客 750

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

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

WeiXin_DZbishe的博客 2130

Arduino Uno 实验15——MQ-135 气体传感器模块

MQ-135 气体传感器模块简介(空气质量检测 有害气体检测)   MQ135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。MQ135气体传感器对氨气、硫化物、苯系蒸汽的灵敏度高,对烟雾和其它有害气体的监测也很理想。这种传感器可检测多种有害气体,是一款适合多种应用的低成本传感器。   主要用途:家庭和环境的有害气体检测装置   主要芯片:LM393、MQ-135气体传感器 不同气体的型号选择

weixin_42645653的博客 2万+

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

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

Q_3461074420的博客 3591

Python爬虫实战:基于异步爬虫与机器学习的数据采集——以电商平台在线评论有用性分析为例

内容涵盖爬虫原理、反爬虫策略应对、数据清洗、数据存储以及简单的数据分析预览,并为后续利用机器学习模型(如逻辑回归、随机森林)分析评论有用性打下坚实的数据基础。特别是在电子商务领域,在线评论作为UGC的一种主要形式,深刻影响着消费者的购买决策和商家的信誉体系。然而,平台上的评论质量参差不齐,充斥着大量无意义的灌水、广告甚至虚假评论。因此,如何自动识别和筛选出“有用”的评论,成为了学术界和工业界共同关注的焦点。我们选择目前Python爬虫领域最前沿、效率最高的技术组合,以确保爬虫的稳定性、速度和可扩展性。

2201_76125261的博客 107

Linux安装MinIO(图文解说详细版)

最近开个新坑,就是在linux环境中操作开发环境,带大家玩转Linux,会整理出一篇Linux的专栏,欢迎大家订阅!! 富贵同学linux环境为CentOS7.8 版本。 上期跟大家说了一下OpenJDK的安装,这次说一下minio的安装 第一步,进入/opt 目录,创建minio文件夹 cd /opt mkdir minio 第二步,wget下载安装包: wget https://dl.minio.io/server/minio/release/linux-amd64/minio 第三步,进入m

编码人生 5万+

有关于PID Autotune库的一些认识

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

wyf9668的博客 1419

27、物联网中的量子密钥分发:安全通信新范式

本文探讨了物联网(IoT)快速发展所带来的安全挑战,并提出量子密钥分发(QKD)作为应对新兴威胁的新范式。文章详细介绍了QKD的基础原理、BB84协议的实现流程以及其在物联网中的应用前景,同时强调了安全专业人员提升技能、制定标准化指南以及跨学科合作的重要性。通过利用量子力学特性,QKD能够提供更高的通信安全性,抵御量子计算等未来威胁,为物联网的安全发展提供保障。

tequila的博客 156

Arduino PID Autotuner 使用教程

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

gitblog_00502的博客 909

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

PID继电器自整定

兽神 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

用纯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、付费专栏及课程。

余额充值