一、背景

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

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

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

二、目的

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

三、测试方式、过程

3.1 硬件准备

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

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

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

https://blog.csdn.net/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

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

  1. 掌上单片机实验室 - 实现运动功能(10)

    一.背景 前面已完成了硬件激活.编程环境选择.软件框架构建,并且基于软件框架尝试了基于 RTOS 编程,为在此软硬件环境下学习单片机编程做了充分的准备. 从本篇开始,开始以其为载体,一步步完善其功能. ...

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

    一.背景 突如其来的疫情,打乱了大学生的正常学习氛围,传统的校园学习模式无法实施,虽说网上教学做了相应的弥补,但对于多数工科课程,只靠线上教学很难完成,单片机课程就是其中之一. 单片机这类工科课程有较 ...

  3. 掌上单片机实验室 — 编程环境(3)

    一.背景 因为单片机学习是软硬结合的,离开软件,单片机无法工作.所以需要准备合适的编程环境. 二.需求 作为学习用的编程环境,我觉得应该满足: 上手容易:不需要花很多时间学习后才能正确使用. 环境参数 ...

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

    一.背景 上一篇实现了小车运动控制,在程序框架下,基于FreeRTOS编写了驱动任务,包含电机控制.测速.PID调速.行走距离控制等和运动相关的功能.但 PID 调速只是完成了算法,并未真正实现调速, ...

  5. 掌上单片机实验室 - 编程环境(续)(6)

    最近在帮朋友做个项目时,再次使用 STM32Duino,发现ST公司对STM32Duino做了较大的改进,前文我所抱怨的没有详细技术文档之事如今也增加了,为此,赶紧续文一篇,将此好消息与大家分享. 第 ...

  6. 掌上实验室V8系列教程(八)ADC模数转换

    目录 1 项目功能 2 ADC工作原理 3 电路原理图 4 AT32 ADC应用 4.1 ADC基础操作流程 4.2 ADC触发 4.3 ADC采样和转换时间 4.4 读取ADC转换结果 5 示例程序 ...

  7. 掌上实验室V8系列教程(七)I2C应用 HP203B

    目录 1 项目功能 2 电路原理图 3 传感器HP203B 3.1 HP203B功能 3.2 HP203B技术指标 3.3 HP203B I2C总线接口命令 4 示例代码 1 项目功能 通过HB203 ...

  8. 掌上实验室V8系列教程(九)光电编码器转速测量

    1 项目功能 通过光电编码器进行转速测量 2 光电编码器工作原理 光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器.这是应用最多的传感器,光电编码器是由光源.光码盘和 ...

  9. stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...

    这是我第一次在这个论坛上发表东西,其实本人进入芯片的世界的时间并不长,从接触51单片机到现在还不到一年,所以可以算是小白啦~想了很久,总算拿出在论坛大牛前献丑的无比勇气,写起该帖:dizzy::diz ...

最新文章

  1. CVPR2021最新接收论文合集!22个方向100+篇论文汇总
  2. 工控系统的指纹识别技术
  3. boost::format模块演示添加到 printf 语法的功能
  4. 关于0xFFFFFFFF和alpha,温故而知新
  5. 设计模式之单一职责原则
  6. c语言程序设计实验实训教程公众号,C语言程序设计基础知道答案公众号
  7. 【NGS接龙】薛宇:漫谈生物信息圈儿的那些年、那些事!
  8. 高级代码编辑器:sublime text 4 for Mac
  9. vi显示行数命令和跳转到指定行
  10. 3.9 使用标尺工具拉直倾斜的图片 [Ps教程]
  11. Qt QTableView样式设置
  12. 基于jsp+mysql+Spring的SSM在线蛋糕商城销售网站项目设计和实现
  13. 远程访问ESXi网页控制台
  14. C#反编译工具:.NET Reflector导出代码
  15. 基于微信公众号的答题投票系统——项目开发心得体会记录
  16. 索尼Alpha系列相机通过照片读取快门次数的在线工具
  17. 20. GD32F103C8T6入门教程-adc使用外部中断IT11触发启动adc规则通道,使用外中断IT15触发注入组
  18. [自考总结]考的全没背,背的全没考是一种什么体验
  19. sql连接显示未能连接服务器,SQL Server 2008无法连接到服务器的操作教程
  20. krpano 文字热点动态实时变化

热门文章

  1. ARM单片机上的C语言库<setjmp.h>的使用
  2. Julia并行计算笔记(二)
  3. ARM标准汇编与GNU汇编
  4. 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)
  5. 北斗——1、北斗时空智能主机
  6. 基于Vue的高德离线地图开发--省市县
  7. apt-get 安装源数字签名错误解决方法
  8. Linux NFS文件系统挂载
  9. Android 黑马Topline《企业级项目实战教程》2022
  10. 2021宁波效实中学高考成绩查询入口,2017宁波各高中高考成绩通报汇总