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

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

一、背景

       前面经过努力,将Arduino 的共享资源 PID AutoTune 自整定库用起来了,并进行了验证性测试,效果不错。

       但那个验证是在我琢磨自整定库的平台上(掌上实验室小车)进行的,做完后回味了一下,感觉应该换到轮式驱动单元上测试一下,看看如何?

       因为当初我尝试 PID 时,手工整定在轮式驱动单元上成功了,但到掌上实验室小车上却没有达到预期,说明两个平台物理特性还是有差别的。虽说两个小车的驱动电路完全一样,但两个轮子的物理尺寸不同,所用的电机虽然都是130电机,但减速比不同。

二、目的

       验证针对不同物理特性的对象,PID自整定的效果如何。

三、测试方式、过程

3.1 硬件准备

       因为目的就是检验一下自整定算法的适应性,为减小工作量,用两个轮式驱动单元所构成的差分驱动小车底盘作为对象,和掌上实验室小车的差别只是物理结构、尺寸不同,驱动电路完全一样:

        控制板用和掌上实验室相同的STM32F103C8核心板,为便于接线,使用我自己设计的Arduino UNO扩展板:

       详细介绍见:ROS学习笔记之六 – 创建基于STM32的Arduino环境

       https://blog.youkuaiyun.com/embedream/article/details/91823053

       轮式驱动单元内置控制和反馈电路,用杜邦线引出,对于学习而言,很方便使用,任何一块核心板都可以,只是上述扩展板上每个IO引脚都配了一对电源和地线,更方便一些:

 

       小车供电使用最常见的充电宝,只需自己做一根USB电源线即可(这是我买的DIY套件,用笔记本电脑失效的电池拆开后组装的,4节18650):

 

 3.2 程序准备

       因控制板一样、驱动电路一样,所以程序基本无需修改,只是将对应车轮尺寸的两个常数定义修改一下。

      掌上实验室小车的轮子直径 65mm,一圈60齿:

     轮式驱动单元的轮子直径是 80mm,一圈是100齿: 

          实际接线时,发现扩展板上 PC14、PC15没有焊接插针,故换到 PB14、PB15。

          此外,由于两个轮式驱动单元是对称安装,左右侧转动方向相反,故修改左侧的控制信号Ctrl2、Ctrl3定义,交换一下,以使得两个轮子的转动方向统一(实际上掌上实验室小车有同样的问题,只是那个小车上可以通过改变电机的接线方向实现)。

3.3 PID自整定过程

        完全按照“掌上单片机实验室 – 检验自整定效果”一文的测试过程,实际结果如下:

左侧自整定过程:

 

 

 右侧自整定过程:

 

 

 

3.4检验效果

    将上述整定结果作为 PID 调速的默认参数:

        用 90% 的 PWM 测试了一下,两侧轮子的最快转速大约是 380mm/s,故选择100、300mm/s两点作为调速验证,结果如下:

1、左侧速度 100mm/s:

2、左侧速度 300mm/s: 

 3、右侧速度 100mm/s:

 4、右侧速度 300mm/s:

 

 5、设置两轮速度为150mm/s,走1000mm:

PID 自整定适应性测试

       从上述结果看,基本和前面的验证一致,符合预期。

       由此可以得出,这个自整定的算法可以很方便地实现 PID 参数整定,而且效果不错!

四、结语

       用自整定方式完成 PID 参数整定,对于PID 应用而言,无疑是个福音。

       因为很多时候大家都知道需要使用 PID 控制以达到所需要的效果,但实际使用时很少得到满意的结果。

       因为对象特征千差万别,没有好的手段很难获得。而且,通常对象特性包含了很多因素,就拿我测试的小车来说,输入只是 PWM,但影响速度的因素却有很多:转动阻力、车轮惯性、供电电源、测速的真实性等。

       这个方式实际上是利用程序自动重复加入扰动激励,从而获得包含所有因素的响应,还是很有价值的!

        以后如果遇到不同的 PID 应用场景,再多尝试几次,看看其普适性如何。

        但目前为止,我认为其对于直流电机的 PID调速是完全能够胜任的!

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

文中程序下载:

链接:https://pan.baidu.com/s/1g_X8zD0fjST_PPmEx-_SGg

提取码:0vnx

【ESP32 Arduino平衡小车制作】(四) 直流电机PID控制 一、PID算法1-1 积分分离pid算法1-2 带有死区的pid算法1-3 微分先行pid算法二、程序编写三、硬件设计 一、PID算法 PID 是 结合Proportional(比例)、 Integral(积分)、Differential(微分)三种环节于一体的闭环控制算法,它是目前为止在连续控制系统中计数最为成熟的一种控制算法; PID 控制的实质是对目标值和实际值误差进行比例、积分、微分运算后的结果用来作用在输出上。 连续控制的理想 PID 控制规律 u(t)u(t)u(t) = K p&. 阅读详情

相关推荐

Arduino PID 库函数指南

虽然PID的原理并不难,但是实现起来未免会给Arduino的许多创客玩家带来些许困难。本文将不对PID的具体实现细节Arduino的PID库函数使用方法分享给大家,以供参考。

冲啊梅勒斯 4万+

Arduino PID Autotune Library

终于,我发布了一个自动调PID参数的一个库来完善Arduino PID库文件。在我发布当前版本的PID库的时候,我做了大量的博客让读者明白,这个库内部是怎么运行的。但是也不是那么深入,这个也是这篇博客的目标。我会解释这个自动调谐库能够完成什么,是怎么完成的。

xuanyuanlei1020的专栏 8073

【雕爷学编程】Arduino BLDC 之自适应PID调整

Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。无刷直流电机是一种先进的电机技术,它利用电子换向来替代传统的碳刷和换向器,从而提供更高效、更可靠和更低维护成本的电机驱动解决方案。请记住,BLDC电机的自适应PID调整涉及到更多的细节和配置,包括电机驱动器的选择和设置、传感器的使用、电机模型的建立等。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

雕爷学编程 812

Arduino PID Autotuner 使用教程

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

gitblog_00502的博客 908

【花雕学编程】Arduino FOC 之基于自适应PID控制的无刷直流电机位置控制

在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。通过高效的自适应控制和实时反馈机制,可以实现高精度的电机位置控制。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。传感器精度:高精度的传感器反馈对位置控制至关重要,需选择可靠的编码器,以确保位置测量的准确性,避免因传感器误差导致的控制问题。

雕爷学编程 1221

自动整定PID参数

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

1万+

Arduino小车PID自整定调速——菜鸟也来写PID自整定库

PID自整定

ba_wang_mao的专栏 5486

南京银行信息技术岗提前批笔试与面试

1、笔试 笔试大致可以分为三部分:性格测试、行测题目、专业知识 性格测试 性格测试一般会有较多的体量,可能一共大概有一百多道接近两百道的样子,这个是不限时的。 前面有100道是这样的题目,就是有四个选项都是各种形容词,然后分别选出最符合自己的与最不符合自己的选项。这种题你就顺着自己的潜意识填就行了,但是前后要一致,我怀疑他出这么多题,可能就是考一考你记不记得前面填了啥。比如你做到第90题的时候,可能会出现和前面第2题类似的四个形容词,更有甚者就是一模一样的,你要对自己之前选的什么有个比较清楚的记忆。

qq_40971025的博客 6921

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

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

embedream的专栏 6806

PostgreSQL 在 Windows操作系统 无管理员权限情况下的部署详解

但是因为使用默认5432端口,我们修改了端口,所以连接报错,需要修改local连接信息,右键-属性修改相应信息即可,方式同上。(也别太任意吧,个人习惯工具放在不包含中文及特殊字符的目录,另外目录名尽量简短,避免不必要的麻烦)图中我解压到了自己的tools\postgresql18。1)如果想修改默认的5432端口,找到初始化目录中的(上面的tools\postgresql18\。此处替换成你的实际目录\tools\postgresql18\pgsql\pgAdmin 4\runtime。

dong_zhi2328的博客 1116

YOLOv8剪枝实战:基于torch_pruning的模型优化与性能提升指南

本文详细介绍了如何使用torch_pruning工具对YOLOv8模型进行结构化剪枝,以实现模型轻量化与性能提升。通过实战步骤解析,包括环境搭建、依赖图分析、迭代剪枝与微调策略,帮助开发者有效减少模型参数量和计算量,提升在边缘设备上的推理速度,同时保持检测(detect)与分割(segment)任务的精度。

water的专栏 1122

推荐开源项目:arduino-pid-autotuner - 智能PID调参利器

推荐开源项目:arduino-pid-autotuner - 智能PID调参利器 在电子工程和自动化领域,PID控制器是控制系统的常见组件,其性能直接影响着系统稳定性和响应速度。然而,手动调整PID参数并非易事,尤其对初学者来说。这就是为什么我们向您推荐arduino-pid-autotuner,一个基于Ziegler-Nichols和继电器方法的自动PID调参库。 1、项目介绍 arduino-...

gitblog_00037的博客 871

随机截距交叉滞后模型RI-CLPM:原理、Mplus实现与结果解读

纵向面板数据分析中,传统交叉滞后模型(CLPM)常被用于探索变量间的时序关系,但其估计结果可能混淆了个体间稳定差异与个体内短期波动,导致交叉滞后路径出现偏差。随机截距交叉滞后模型(RI-CLPM)通过引入随机截距因子,将个体特质层面的差异与个体内动态过程分离,从而提供更纯净的个体内效应估计。该模型在组织心理学、发展心理学、成瘾行为等研究领域迅速普及,并成为顶级期刊审稿时常见的稳健性检验要求。本文从原理出发,系统讲解RI-CLPM的模型构建、识别条件、Mplus实操代码、输出解读及常见陷阱,并结合协变量处理、

weixin_33525298的博客 271

【亲测免费】 探索自动PID调优的便捷之道:arduino-pid-autotuner

探索自动PID调优的便捷之道:arduino-pid-autotuner 在追求精准控制的物联网世界里,一个高效且适配性强的PID控制器是不可或缺的工具。今天,我们来深入探讨一款专为简化PID调参过程而生的开源宝藏——arduino-pid-autotuner。 项目介绍 arduino-pid-autotuner是一个基于Ziegler-Nichols或继电器法的自动化PID参数调整库,最初设计...

gitblog_00297的博客 764

【雷达】基于matlab合成孔径雷达干涉测量(InSAR)时序分析【含Matlab源码 9037期】

合成孔径雷达干涉测量(InSAR)时序分析 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 159

LVGL misc timer 定时器(lv_timer.c)

定时器机制是LVGL中非常重要的一项功能,它承载了LVGL的延时任务执行,周期任务执行,时序任务执行等,可以说理解定时器的设计就一定程度上理解发LVGL的任务调度机制。

Bigan(安)的博客 4729

【Arduino小车实践】PID算法简介

【Arduino小车实践】PID算法简介

weixin_62403234的博客 1428

Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)

Vue-高效简洁列表拖曳排序/鼠标拖动改变顺序排列组件支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无BUG列表拖曳排序插件vuedraggable拉动拽动拖动顺序改变排序js,vue.js,nuxt.js列表如何实现鼠标拖曳改变顺序排列支持滚动条内复杂数据对象带拖动效果动画排序完毕自动排列数组位置克隆Vue.Draggable官方文档教程SortableJS与vuedraggable列表拖动排序Vue拖拽组件库vuedraggable的安装与使用用户用鼠标拖动排序功能源码最好

🏆 前端领域优质创作者 4847

# Arduino小车PID调速——整定参数初试水

通过以上实验证明了pid调速过程中,一个特定的参数仅对一定的速度区间有比较好的调节效果。若比这个速度低,则会出现比例积分作用过强,从而出现震荡;若比这个速度高,则会出现比例作用不强,系统的稳定时间变长,且出现小幅度周期性波动的情况。

Symean的博客 1015

Python 爬虫实战:爬虫代码打包为可执行文件

本文详细介绍了使用PyInstaller工具将Python爬虫打包为可执行文件的全过程。以豆瓣电影Top250爬虫为例,首先对比了主流打包工具,推荐选择跨平台的PyInstaller。通过编写完整的爬虫代码(包含异常处理和数据保存功能),演示了从环境准备、代码测试到打包配置的具体步骤。重点讲解了单文件打包、自定义图标等高级功能,并针对常见的"找不到模块"、文件体积过大等问题提供了解决方案。文章还说明了跨平台打包的注意事项,帮助开发者实现爬虫程序的无环境依赖部署,大幅提升程序的易用性和部署

2503_91057718的博客 2215

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Arduino PID整定

基本上,如果您将引脚转换为真正的模拟输出,那么 Arduino 将向输出发送一个 0 值,以便通过低通滤波器获得 0 伏电压。换句话说,10 秒后,我们的输出将增加 10%。20 秒后,我们将只有 1 次完整的重复,这意味着需要 20 秒才能达到总输出的 30%(按比例计算)。请记住,我们的目标是提供足够的输出,将温度保持在我们想要的位置。) 我们将使用启发式方法进行调整,对于大多数使用 Arduino 的人来说,这通常是最简单的方法。换句话说,这就是我们所处的位置与我们希望达到的位置之间的差值。

acktomas的博客 1395

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

CSharp/C#移植Arduino的PID库源代码

using System; using System.Collections; namespace ArduinoPid { public class PID_AutoTune { // #define AUTOMATIC 1 // #define MANUAL 0 // #define DIRECT 0 // #define REVERSE 1 // #define P_ON_M 0 // #define P_ON_E 1 /// &lt

asdakdkwfwfd 878

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

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

探索 Arduino PID 库:智能控制的利器

探索 Arduino PID 库:智能控制的利器 去发现同类优质开源项目:https://gitcode.com/ 在电子制作和自动化领域,Arduino 平台因其简单易用而广受欢迎。然而,要实现精确的温度、速度或其他参数控制,PID(比例-积分-微分)算法是必不可少的工具。这就是为什么 如此重要的原因。这个开源项目为 Arduino 开发者提供了一种便捷的方式来实现 PID 控制,让复杂的控制...

gitblog_00070的博客 1077

Arduino PID

Arduino小车PID自整定调速——菜鸟也来写PID自整定库 https://blog.youkuaiyun.com/yanggg1997/article/details/76674986   Arduino小车PID调速——整定参数初试水 https://blog.youkuaiyun.com/yanggg1997/article/details/75142360?locationNum=7&fps=...

longbinliu的专栏 4656

PID控制及整定算法

一、PID控制算法   PID是比例、积分、微分的简称,PID控制的难点不是编程,而是控制器的参数整定。参数整定的关键是正确地理解各参数的物理意义,PID 控制的原理可以用人对炉温的手动控制来理解。阅读本文不需要高深的数学知识。 注:整个控制流程是PID控制器函数与被控对象的传递函数、一个负反馈结合完成的,在保证被控对象的传递函数与负反馈结合的闭环系统能够达 到稳态的前提下(...

angengguo7895的博客 3589
上一篇: 掌上单片机实验室 — 检验自整定效果(12)
下一篇: 掌上单片机实验室 — 程序阶段性完善(13)
嵌入之梦
博客等级 码龄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、付费专栏及课程。

余额充值