做一个干电池的电量检测器03:数值拟合与电路仿真

        首先在表格中进行详细的计算,整理出所需的数据。接着,我们运用MATLAB的强大功能对这些数据进行插值处理,生成了一个离散的数值数组。这个数组的每个数值都精确地对应着模数转换器(ADC)采样到的信号。通过这些数值,我们进一步分析电池的电压,最终得出残余电量的准确数值。

% 数据输入
RES = [12.54941694, 19.41596793, 26.28251891, 33.1490699, 40.01562089, 46.88217187, ...53.74872286, 60.61527385, 67.48182484, 74.34837582, 81.21492681, 88.0814778, ...94.68793215, 101.8145798, 108.3450059, 115.5476817, 122.4142327, 129.2807837, ...136.1473347, 141.7029987, 147.4528681, 152.8065237, 156.1227558, 160.11784, ...162.9893067, 167.6526863, 171.4944665, 174.582185, 178.6731334, 182.9647278, ...187.1002642, 190.6115687, 193.6658462, 197.8214472, 200.2871632, 204.8128446, ...210.4309317, 214.0098613, 219.4822944, 224.8576247, 230.4063528, 237.2729038, ...244.1394548, 251.0060058, 257.8725567, 264.7391077, 271.6056587, 278.0400492, ...285.3387607, 292.2053117, 299.0718627];
capacity = [2.770610162, 3.128649151, 4.023746622, 4.907655375, 6.116036962, 7.055889307, ...8.28664833, 9.282444268, 10.43488226, 11.62088641, 12.58311619, 13.76912034, ...14.67727132, 16.44546178, 17.54746448, 19.45298929, 21.15367448, 23.34666329, ...25.98720083, 27.75613721, 30.99850348, 33.78993332, 36.72837049, 39.6083466, ...42.58986034, 46.3934487, 49.52826433, 52.14802282, 55.18975584, 58.59979403, ...61.82047008, 64.75890725, 67.65558652, 70.38962978, 72.64602132, 76.09507696, ...79.04410345, 81.19706151, 83.92797903, 86.24590853, 88.46500434, 90.79225777, ...92.89573683, 94.49572356, 96.00220457, 96.80059955, 97.71136122, 97.98466719, ...98.6579268, 98.80338014, 99.206174];% 创建新的RES数据,间隔为1
new_RES = 0:1:300;% 进行插值计算
new_capacity = interp1(RES, capacity, new_RES, 'spline', 'extrap');% 保留小数点后一位
new_capacity = round(new_capacity, 1);% 结果输出到同名的txt文件
fileID = fopen('插值结果.txt', 'w');
fprintf(fileID, 'RES\t容量百分比\n');
for i = 1:length(new_RES)fprintf(fileID, '%d\t%.1f\n', new_RES(i), new_capacity(i));
end
fclose(fileID);% 可视化插值结果
figure;
plot(RES, capacity, 'o', 'MarkerFaceColor', 'b'); % 原始数据点
hold on;
plot(new_RES, new_capacity, '-r'); % 插值结果
xlabel('RES');
ylabel('容量百分比');
title('RES vs 容量百分比插值结果');
legend('原始数据', '插值数据');
grid on;

matlab运行后拟合的曲线如下: 

在MPLAB IDE中定义静态数组:

在Proteus中,建立仿真电路,显示电压和电量,如图:

 

 增加使用led光排分级显示剩余电量如图:

 

        基本到此就告以段落了,这是一个很小的题目,主要还是借此来熟悉单片机的开发环境,一个实用的电量计肯定不会是图中的电路来实现,因为受限于成本的原因,肯定采用廉价的国产8位单片机+灰度液晶显示表头+单只电池升压电路,但大致的思路是一样的。精度不是关键,关键是低成本和低功耗。

        有朋友告诉我说,碱性干电池是可以小电流充电来恢复部分电量的,有机会做实际的电路实验下,所以对此感兴趣是因为几年前垃圾分类的宣传中,听说一节干电池可以污染6平米的土地,所以印象深刻。好的,先这样吧!

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

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

相关文章

MFC工控项目实例二十八模拟量信号每秒采集100次

用两个多媒体定时器,一个定时0.1秒计时,另一个定时0.01秒用来对模拟量信号采集每秒100次。 1、在SEAL_PRESSUREDlg.h中添加代码 class CSEAL_PRESSUREDlg : public CDialo { public:CSEAL_PRESSUREDlg(CWnd* pParent NULL); // standard constructor&a…

【Mac】Screen Recorder by Omi Mac:Omi录屏专家

大家好,今天给大家介绍的这款软件叫Screen Recorder by Omi Mac:Omi录屏专家。 软件介绍 OmniRecorder for Mac 是一款用于录制屏幕的应用程序,专为 macOS 设计。它允许用户录制整个屏幕或特定区域,支持音频录制和实时编辑。这个…

多波束T50P和SES2000 Medium100安装记录(2024年10月)

SES2000 Medium100买了一直没有机会用,本次外业刚好需要。SES2000最大穿透70m。 Medium100安装与SES2000 Standard基本相同。除了钢管和法兰不同以外,它们安装支架都可以通用。有条件的话,用焊接方式将其固定在船侧舷,前方加一道拉…

Nginx安装配置详解

Nginx Nginx官网 Tengine翻译的Nginx中文文档 轻量级的Web服务器,主要有反向代理、负载均衡的功能。 能够支撑5万的并发量,运行时内存和CPU占用低,配置简单,运行稳定。 写在前 uWSGI与Nginx的关系 1. 安装 Windows 官网 Stabl…

保研考研机试攻略:python笔记(2)

🐨🐨🐨宝子们好呀,今天我们继续来学习N诺提供的python笔记,fighting!( •̀ ω •́ )✧ 对这个系列感兴趣的宝子欢迎关注保研考研机试攻略专栏哦 ~ 目录 🐨🐨🐨4进制转…

qt QSplitter详解

1、概述 QSplitter是Qt框架中的一个布局管理器类,它允许用户在应用程序窗口中创建可拖动的分隔器,以便动态地调整多个子窗口或控件的大小。QSplitter非常适合用于分割、重新排列和管理用户界面中的多个区域,提供了一种直观且灵活的方式来控制…

mysql left join group_concat 主表丢失数据

问题出现的场景: 有一个主表 a,一个子表 b a表有两条数据,a表第一条数据在b表中有一条子数据,a表第二条数据在b表中有两条子数据。 现在想要查询出来a表的所有数据和a表的子表b的id,b的id 使用GROUP_CONCAT拼接 有…

深度学习在复杂系统中的应用

引言 复杂系统由多个相互作用的组成部分构成,这些部分之间的关系往往是非线性的,整体行为难以通过简单的线性组合来预测。这类系统广泛存在于生态学、气象学、经济学和社会科学等多个领域,具有动态演变、自组织、涌现现象以及多尺度与异质性…

Python爬虫的京东大冒险:如何高效获取商品详情的秘籍

在这个由代码编织的电商世界里,京东商品详情就像是被锁在高塔中的公主,等待着勇敢的Python爬虫骑士去解救。今天,我们要讲述的是如何成为一名Python爬虫骑士,携带你的代码长矛,穿梭在API的数据森林中,高效获…

服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?

服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障&#xff…

new/delete和malloc()/free()的区别及其使用

C系列----new/delete和malloc()/free()的区别 这篇文章我将深读刨析一下这二者的区别及其在使用过程中应该注意的事项 文章目录 C系列----new/delete和malloc()/free()的区别前言一、new/delete和malloc/free在操作自定义类型时的区别1.1、在属性和使用上的区别1.2、返回类型的…

我主编的电子技术实验手册(22)——RC并联电路

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

word mathml 创建粗体字母快捷键

在 mathml 中达到latex中 \mathbf{A} 的效果 由于word本身不支持这个命令,所以打算用快捷键实现 快捷键的功能是加粗光标前一个字目 1. Alt F8 打开宏,如果打不开可以尝试 Alt Fn F8 2. 输入 BoldPreviousCharacter 新建宏: Sub Bold…

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略

摘要:本文围绕开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序,深入探讨其积分使用价值的丰富策略。详细分析积分兑换礼品、会员升级、积分抵现等方式在该特定商城小程序环境下的应用特点、存在问题及对用户和商城的影响,旨在为商城的优化运…

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器 解决办法安装虚拟显示器 安装xorg虚拟显示器 $ sudo apt install xserver-xorg-video-dummy # 提示错误依赖使用下面这个试试 $ sudo apt-get install xserver-xorg-video-dummy --fix-missing配…

Hadoop-002-部署并配置HDFS集群

集群规划 Hadoop HDFS的角色包含 NameNode(主节点管理者)、DataNode(从节点工作者)、SeconddaryNameNode(从节点辅助) 节点CPU内存hadoop-11C4Ghadoop-21C2Ghadoop-31C2G 一、下载上传Hadoop包 注意: 登录hadoop-1节点root用户执行 1、官网下载安装包后上传 到hadoop-1服务…

BOOST库配置到VS2022详细操作步骤和可能出现的错误解决方法

文章目录 BOOST库配置上述的细节操作出现的错误错误1错误2 其余内容 BOOST库配置 配置过程见BOOST库配置到VS2022(保姆级教程)主要借鉴 C/C Windows环境下 boost 安装使用教程【学习笔记】 Boost库各个版本下载地址 上述的细节操作 第一点 我的操作步…

css实现边框双色凹凸半圆

整体效果如下图&#xff1a; 结构代码&#xff1a; <div classline-outside-wrap><div classwrap><img src../img/avatar2x.png/><div classcontent-wrap></div></div></div> 内凹框实现&#xff1a; .content-wrap{width:100%;he…

字符串统计(Python)

接收键盘任意录入&#xff0c;分别统计大小写字母、数字及其它字符数量&#xff0c;打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建&#xff0c;本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…

[代码随想录打卡]Day2:209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地 总结

双指针&#xff1a;快慢指针、对撞指针、滑动窗口。相关博客&#xff1a;双指针算法详解&#xff08;快慢指针、对撞指针、滑动窗口&#xff09; 209.长度最小的子数组 题目&#xff1a;给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于…