利用串口示波器调试PID参数

news2024/12/24 9:39:34

PID调试最麻烦的是参数调整,需要花费大量时间,如果每调整一次都要修改代码重新编译烧录,效率很低,推荐串口示波器与rt-thead finsh进行调试
在这里插入图片描述
推荐使用FireWater数据引擎
在这里插入图片描述
定时上报数据,rt_kprintf不支持浮点数据打印,fractional_to_int是一个将浮点数小数放大100倍后取整函数,实现2位小数精度的数据打印

static void pcr_refresh_timeout(void *parameter)
{
    rt_kprintf("temp:%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,\
        %d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d\n",\
        (int)temp_tec_get()->fTemp[0],fractional_to_int(temp_tec_get()->fTemp[0]),\
        (int)temp_tec_get()->fTemp[1],fractional_to_int(temp_tec_get()->fTemp[1]),\
        (int)temp_tec_get()->fTemp[2],fractional_to_int(temp_tec_get()->fTemp[2]),\
        (int)temp_tec_get()->fTemp[3],fractional_to_int(temp_tec_get()->fTemp[3]),\
        (int)temp_tec_get()->fTemp[4],fractional_to_int(temp_tec_get()->fTemp[4]),\
        (int)temp_tec_get()->fTemp[5],fractional_to_int(temp_tec_get()->fTemp[5]),\
        (int)temp_tec_get()->fTemp[6],fractional_to_int(temp_tec_get()->fTemp[6]),\
        (int)temp_tec_get()->fTemp[7],fractional_to_int(temp_tec_get()->fTemp[7]),\
        (int)temp_hot_get()->fTemp[0],fractional_to_int(temp_hot_get()->fTemp[0]),\
        (int)temp_hot_get()->fTemp[1],fractional_to_int(temp_hot_get()->fTemp[1]),\
        (int)temp_hot_get()->fTemp[2],fractional_to_int(temp_hot_get()->fTemp[2]),\
        (int)temp_hot_get()->fTemp[3],fractional_to_int(temp_hot_get()->fTemp[3]),\
        (int)temp_hot_get()->fTemp[4],fractional_to_int(temp_hot_get()->fTemp[4]),\
        (int)temp_hot_get()->fTemp[5],fractional_to_int(temp_hot_get()->fTemp[5]),\
        (int)temp_hot_get()->fTemp[6],fractional_to_int(temp_hot_get()->fTemp[6]),\
        tec_driver_get_ptr(1)->u8Duty);
}

波形图控件拖动到页面,上传后数据显示的数据的波形图方便观察数据变化
在这里插入图片描述
参数调整下发,数据上报与参数下发都是使用finsh 命令行串口,在rt-thread下设定一些参数修改的调试命令

temp_pid_debug list cnt[0-100]
temp_pid_debug hot chn[0-6] temp[23-120] speed[0-3]
temp_pid_debug tec chn[0-6] temp[0-120] speed[0-4]
temp_pid_debug enable [tec|hot] chn[0-6] en[0-1]
temp_pid_debug pid hot p [k]
temp_pid_debug pid hot i [k]
temp_pid_debug pid hot d [k]
temp_pid_debug pid warm p [k]
temp_pid_debug pid warm i [k]
temp_pid_debug pid coola p [k]
temp_pid_debug pid coola i [k]
temp_pid_debug pid coolb p [k]
temp_pid_debug pid coolb i [k]

配置串口示波器命令
在这里插入图片描述
拖一个参数设置控件到页面并绑定命令
在这里插入图片描述
使用这个软件设置PID参数与查询升降温曲线波形图示例

升降温曲线实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始之了解电机及其控制(6)六步换向法

引导:六步换向的本质是? 因为无刷电机有三根线,而H桥可以将负载连接到正电压或者地,于是用三对MOS管组成的H桥驱动电机,称为半桥驱动。 无刷电机的优点如下: 首先,由于所有三个电机相位都通过…

xcode15下载ios17模拟器失败

升级到xcode15后需要安装ios17模拟器 但是在下载过程中会遇到报错 如下图这种 网上搜索了一下发现有人遇到过无法下载的问题,并且在apple官网也有人提出类似问题 https://developer.apple.com/forums/thread/737648 解决方案就是从https://developer.apple.com/do…

linux提权秘籍

Linux 提权总结 一、常用基础 1、自定义可执行文件(Custom Executable) 可能有某些根进程执行另一个可以控制的进程。在这些情况下,以下C代码一旦编译,将生成一个作为根运行的sbashell: int main() { setuid(0);system("/bin/bash -p…

MapBox GL JS出现“Unimplemented type: 7”问题的解决办法

Mapbox GL JS在矢量瓦片的渲染方面有独特的优势,可以支持动态的样式,支持字体切片,快速加载各种字体。使用起来十分方便,但是在很长的一段时间内,经常遇到出现大量“Unimplemented type: 7”的控制台错误提示&#xff…

Web自动化测试 —— headless无头浏览器!

一、Options概述 是一个配置浏览器启动的选项类,用于自定义和配置Driver会话常见使用场景: 设置无头模式:不会显示调用浏览器,避免人为干扰的问题。设置调试模式:调试自动化测试代码(浏览器复用) 二、添加启动配置 添…

丰田 Auris 混动车电池冷却系统异常

故障现象 一辆丰田 Auris 混合动力车行驶时,混合动力车警告灯亮起。这辆车被改装成监控用车,车厢内到处都装有敏感的录音设备。 为了不被下面的情况所影响,我们从混合动力控制单元(HCU)中提取了故障代码 P0A82-123。混…

Multisim14.0仿真(二十四)基于LM555定时器的施密特触发器

一、仿真原理图: 二、仿真效果图:

【数据结构——单链表】本篇文章通过图文结合的方式能让你轻松的掌握单链表

链表的概念及结构 有了顺序表为什么还会出现链表呢? 链表和数组类似,但是功能比数组强大的多,数组的空间是固定的,在定义数组的时候空间大小就已经固定了,在使用时有可能会造成空间的浪费或者面临空间不够的风险&…

2023年建筑架子工(建筑特殊工种)证考试题库及建筑架子工(建筑特殊工种)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年建筑架子工(建筑特殊工种)证考试题库及建筑架子工(建筑特殊工种)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作…

第九章 内存分区模型

C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区&#xff1…

【NLP的Python库(04/4)】:Flair

一、说明 Flair是一个现代的NLP库。从文本处理到文档语义,支持所有核心 NLP 任务。Flair使用现代转换器神经网络模型来完成多项任务,并结合了其他Python库,可以选择特定的模型。其清晰的API和注释文本的数据结构,以及多语言支持&a…

FPGA project : uart232_ram_vga

重点学习: 本实验重点学习了双口ram解决多bit跨时钟域同步处理的问题。 其实signal port ram,它的输入口和输出口分别用不同的时钟,也可以解决这个问题。 让我意识到的比较重要的事情: 1,代码设计中,一…

VEX —— Functions|Measure

目录 distance —— 返回两点间距离 distance2 —— 返回两点间距离平方 surfacedist —— 查找点到点组的距离(沿几何体表面) xyzdist —— 查找点到表面最近点的距离 uvdist —— 在uv空间查找uv坐标到几何体的距离 planepointdistance —— 计算…

【免费】2023云栖大会门票开抢啦!数量有限,先到先得!

🎫 报名方式:点击链接即可免费报名! 🔗 2023云栖大会-领票页 📅 10月31日-11月2日,让我们齐聚云栖小镇!

基于 Nginx 实现一个灰度发布系统

软件开发一般不会上来就是最终版本,而是会一个版本一个版本的迭代。新版本上线前都会经过测试,但就算这样,也不能保证上线了不出问题。所以,在公司里上线新版本代码一般都是通过灰度系统进行测试。并且,灰度系统可以把流量划分成多份,一份走新版本代码,一份走老版本代码…

数据通信——应用层(文件传输FTP)

引言 域名保证了在因特网中标识唯一的用户,而我们用户上网需求自然是发送信息以及共享文件,我们使用的很多传输工具,比如微信、QQ、百度等软件,在上传和下载文件时就会有FTP的参与。那么如何为文件提供收发渠道以完成的共享呢&…

一篇文章带你了解最近很火的RunnerGo测试平台

在当今这个数字化时代,应用程序的性能至关重要。一款可靠的性能测试工具,能够为企业带来无数的好处。最近,一款名为RunnerGo的开源性能测试工具备受瞩目。本文将详细介绍RunnerGo的特点、优势以及如何解决性能测试中的痛点。 RunnerGo产品介绍…

位运算符与高级操作

位运算符与高级操作 运算符 高级操作 左移实现乘法 左移n位等价于乘以2的n次方 int x; x 2; x x << 2; x x << 3;使用左移实现乘法运算仅限于乘以2的倍数 是不是只要左移就能够实现乘以2的倍数呢? char x 120; x x << 1;右移实现除法 右移n位等价于除…

ipad触控笔有必要买吗?比较好用的电容笔

如果你想用iPad画画&#xff0c;苹果Pencil会是个不错的选择。然而&#xff0c;苹果原装的电容笔价格却高得让很多人望而却步。所以&#xff0c;比较好的办法就是选用一个平替电容笔。我曾经使用过ipad&#xff0c;也是一个数码爱好者&#xff0c;最近两年我开始接触使用平替电…

Spring MVC 中的数据验证技术

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…