智能车竞赛·通过虚拟示波器实现电机PID调参
本文主要针对智能车小白,大佬可以浅看一下,如有错误希望大家多多指正。
引入:
刚入门智能车的朋友们可能都知道备赛时要对电机进行PID调试,看了一大堆资料,了解了什么是位置式PID,什么是增量式PID,kuakua一顿乱写,写好了电机PID控制代码。写好代码之后,诶!我要怎么调试呢?怎么在电脑上看电机的转速呢?哦~!懂了!要用上位机来看。诶!上位机是什么?……
估计小白们一开始肯定会有这样的疑惑吧。下面我就开门见山,给大家展示一下我用的“上位机”。
- 这里插一句,因为百度百科对“上位机”的释义是:可以直接发出操控命令的计算机,屏幕上显示各种信号变化(液压,水位,温度等)。我用的这个软件(VisualScope)没有发出操控命令的功能,只能显示信号变化,所以下面都把它叫做示波器。
它长这个样子:(乍一看有点像MC里的方块)
刚开始电机PID调试(速度波动很大,纵轴表示速度,蓝线和紫线是目标速度,分别为左右轮):
电机PID调试完成后(速度波动小):
电机PID调参到上图所示的程度应该就差不多了,虽然每个队每辆车的调试结果可能有所差异,但也大差不差。在这篇文章里我主要讲如何让电机的转速在电脑中显示,方便车友们PID调参。
第一步 硬件准备
- 编码器。可以这么说,电机闭环的实现离不开编码器。如果你是双驱车那就要有两个编码器,四驱车(H/M)就要有四个编码器。编码器用龙邱或者逐飞的都可以。要带方向的还是正交编码视个人情况而定。
- 无线模块。本人使用的是逐飞的恩智浦智能车无线串口模块,排针端和USB端各一个,一个插在电脑接收数据,一个插在主板的串口模块发送数据。
第二步 配置无线模块和虚拟示波器
逐飞关于无线模块的资料都是免费开源的(获取链接我会放在文末)。当你向逐飞客服要资料时,你收到的资料大概会是这样:
这里给出了两种上位机,一个是逐飞科技无线转串口上位机,一个是sscom32上位机(在串口助手压缩文件里)。虽然给了这两个上位机,但看图像调PID的话这两个上位机基本用不上。
拿到资料之后,我们首先点开串口说明书,在这里我建议大家购买最新或者较新版本的无线串口模块。接着按照说明书里的内容配置好无线串口模块。我一开始没有配置,波特率之类的参数都默认好了,如果一开始你没有配置无线串口模块不能实现数据发送的话,就按照说明书配置一遍。
接下来就到了配置虚拟示波器(VisualScope)。之前没听说过虚拟示波器的可能不知道在哪里找到这个示波器的资源,但其实这个资源是可以直接和逐飞客服要的(我会放在文末),而且逐飞的代码库里有与虚拟示波器之间的通信协议(代码层面),在写代码的时候直接调用逐飞库里的函数就可以实现数据在示波器显示了。(野火调试助手之类的上位机也很好用,但是逐飞没有现成的函数实现数据在野火上位机的显示。)
获取虚拟示波器资源之后,参照使用说明配置好串口与示波器。最重要的是通信端口(我这里是COM7)和波特率(115200)。
配置好以上,我们给MCU烧录带有数据传送的代码,就可以实现数据在虚拟示波器的显示。
第三步 代码实现
//以下代码编写使用了逐飞最新的库
#include "zf_common_headfile.h"int16 data1=0, data2=0, data3=0, data4=0;
uint8 data_buffer[10]; int main(void)
{clock_init(SYSTEM_CLOCK_600M); // 初始化芯片时钟 工作频率为 600MHzdebug_init(); // 初始化默认 debug uart(这些初始化函数默认加入)wireless_uart_init (); // 无线转串口模块 初始化while(1){data1+=10;data2-=10;data3*=2;data4+=1;virtual_oscilloscope_data_conversion (data1, data2, data3, data4, data_buffer); // 将4个数据打包 wireless_uart_send_buff(data_buffer, 10); // 发送数据}
}
以上代码的data1等变量为测试参数,实际运用时换成编码器值encoder1、encoder2、encoder3、encoder4。
注意事项
- 电机PID调试方法:先调 I 值,调至实际速度曲线在速度参考线附近振荡时,再调P值,最后根据实际调试效果来调试D值。如果仅调试了PI就能很好地实现速度闭环,那么D值就不是必要的(电机PI)。
- 很重要的一点!调试效果除了受调参是PID数值的影响,还受无线串口发送数据间隔和编码器获取电机转速的时间间隔影响。你想,编码器每间隔1s获取一次转速和每间隔1ms就获取一次转速对比,肯定是后者的精确度更高。这个获取数据的时间间隔是可以在代码直接修改,或者通过 systick_delay函数间接修改。
资料获取:
无线转串口资料:https://pan.baidu.com/s/1nTQtYR_6dBcDM_vS_UEv9A
虚拟示波器:https://pan.baidu.com/s/198CMXTZsbI3HAEqNXDngBw
写在最后:如果大家对本文章有任何疑惑的都可以在评论区留言。感谢!
智能车竞赛·通过虚拟示波器实现电机PID调参相关推荐
- M2006电机PID调参记录
目录 一.对PID的理解 二.PID各参数作用及影响 三.实际过程中遇到的问题 首先放上最常见的负反馈PID系统框图,方便对PID的理解. PID公式: 一.对PID的理解 PID是工程项目中使用最多 ...
- 智能车竞赛技术报告 | 智能车视觉 - 山东大学(威海) - 山魂五队
简 介: 本文详细介绍了山东大学(威海)山魂五队在第十六届"恩智浦"杯全国大学生智能汽车竞赛智能视觉组中的系统方案,包括硬件电路设计.机械结构设计.巡线算法以及识别算法的设计等.本 ...
- 智能车竞赛技术报告 | 智能车视觉 - 太原工业学院 - 晋速-轩辕星
简 介: 本文详细介绍了太原工业学院"晋速-轩辕星"在第十六届全国大学生智能汽车竞赛智能视觉组的系统方案.本次比赛采用大赛组委会统一指定的新 C 型车模,以NXP公司生产的RT10 ...
- 智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队
简 介: 本车以恩智浦公司的 32 位单片机MI.MXRT1064DV高内核处理速度核心控制器,可提供卓越的CPU性能和最佳实时响应.以MT9V034摄像头为核心传感器,通过摄像头采集道路图像信息送入 ...
- 智能车竞赛技术报告 | 智能车视觉 - 中国计量大学 - 赛博-10
学 校:中国计量大学 队伍名称:赛博-10 参赛队员:陈 峰 洪晨辰 毛华斐 带队教师:金小萍 陈东晓 第一章 引言 ■ 1.1 概述 全国大学生智能汽车竞 ...
- 智能车竞赛技术报告 | 节能信标组 - 太原工业学院 - 晋速-天槊星
简 介: 本文结合了太原工业学院晋速天槊星队的队员们在准备第十六届智能车大赛中的研究成果.车模为自制车模,核心处理器采用TC264处理器,软件平台为ADS开发环境.本文主要介绍智能小车的机械结构,软硬 ...
- RT-Thread在16届智能车竞赛双车接力组中的应用
学 校: 山东大学(威海) 队伍名称: 海韵二队参赛 队员:任佳麟 郭凯 王守超 苗淏溟带 队教师: 王小利 简 介: 在第十六届全国大学生智能汽车竞赛中,官方为不同的赛题组指定了不同的MCU类型,包 ...
- 霍尔开关YS1382检测速度 以及对 智能车竞赛节能组的影响
简 介: 根据参加全国大学生智能车同学的反馈,研究了在智能车竞赛中节能信标比赛中出现车模偶尔无法触发信标灯的原因.通过实验测试验证了这是由于所采用的无极性霍尔开关休眠特性所引起的.最后给出了解决方案. ...
- 智能车竞赛技术报告 | 节能信标组-哈尔滨工业大学紫丁香五队
简 介: 本设计以第十六届全国大学生智能汽车竞赛节能信标组赛题要求规范为背景,结合3D打印技术.PCB制板技术等制作一辆以英飞凌单片机为核心控制单元的节能信标车模.以ADS为开发环境.利用摄像头获取赛 ...
最新文章
- 待解决--LaTex为什么其他符号可以用,插入大于等于,或者小于等于就报错?
- mysql包含哪几部分_sql语言包含哪些部分
- 手机与笔记本蓝牙配对
- 操作系统角度谈测试管理和自动化测试
- 如何学习WPF技术?
- 序列每天从0开始_序列比对(十一)——计算符号序列的全概率
- JAVA常用的环境变量配置
- mysql更新字符串中某个字符串_mysql更新某个字符串字段的部分内容
- 小程序支付成功后跳转页面失败
- 移动信号突然变成无服务器,为什么移动4G信号突然变成H、E、G就无法上网, 背后的真实原因?...
- 7款国产的在线HTML编辑器
- 远程桌面计算机密码是多少,局域网远程桌面连接密码
- 利用计算机实现排列组合公式,计算机算法基础 ——数学(排列组合函数)
- 嵌入式系统与普适计算
- ESL第七章 模型评估及选择 【期望】测试误差、模型偏差估计偏差、【平均】乐观、AIC、参数有效数、BIC、最小描述长度、VC/结构风险最小化、一标准误差准则/广义交叉验证、【留一】自助/.632估计
- H5新增video标签的常用属性
- npm插件开发-Vue插件
- 以太坊(Ethereum) - 什么是智能合约
- java手动注册filter,SpringBoot注册Filter的两种实现方式
- redis stream持久化_[灌水] Redis 的持久化