理解 与 计算 物联网产品的电池使用寿命

news2025/9/20 6:43:12
本文带你理解电池的容量以及教会你如何计算使用电池的产品的工作时长

前言

在物联网领域,在保证产品性能的前提下,产品的功耗是做得越来越低,针对物联网领域的低功耗无线芯片的功耗也是越来越低。

作为研发人员,除了能够设计出满足需求的产品,还得要会计算自己的产品能工作多长时间,本文我们就来说明一下如何计算低功耗产品的工作时长。

我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

目录

  • 前言
  • 一、电池容量基础
    • 1.1 电池容量单位
    • 1.2 理解电池容量
      • 常见几点疑问
    • 1.3 一个好的比喻
    • 1.4 电池的衰减与自放电?
  • 二、计算电池使用时长
    • 2.1 示例1(周期唤醒传感器)
    • 2.2 示例2(被动唤醒传感器)
      • 供电电压变换的说明
  • 结语

一、电池容量基础

在计算电池使用时长之前,我们必须得明白电池容量的含义。本文不深挖,只是把我们需要理解的部分解释清楚。

1.1 电池容量单位

电池的容量 表示在一定条件下电池放出的电量,我们现在看几组电池的参数图片:

在这里插入图片描述

电池容量的表示形式为 毫安时(mAh)和 安时(Ah)。

电池电量的表示形式为 瓦时(Wh) ,它是电池容量 (Ah) 和电池电压 (V) 的乘积。

这里只需要记住 有2个单位:

毫安时(mAh) 和 瓦时(Wh)。

毫安时(mAh) 和 安时 (Ah) 在我看来是一样的,因为一个是 mA 一个是 A ,1A = 1000mA, 都是电流单位,就像 cm 和 m 一样都是长度单位 。

几个单位间的换算:

1 Ah = 1000 mAh 

Wh(瓦时) = V(电压) x Ah = V(电压)x 1000 mAh 

对于我们物联网产品常用的 电池来说,更多的表示单位就是 毫安时 (mAh),我们也需要理解 这个单位来计算我们产品的使用时长 。

1.2 理解电池容量

那我们如何去理解这个 毫安时 (mAh)?

比如一个 1000 mAh 的电池:

表示该电池在放电电流为 1000mA 情况下能维持1小时完全放电;

或者是放电电流 100 mA 的情况下位置 10小时的完全放电;

常见几点疑问

疑问1: 这里可能有些人会有个疑问,电压呢? 电压不考虑吗?

这里我们必须要知道,电池都会有一个指标就是供电电压值。

比如一个电池指标为 3.6V 1000mAh ,那么就表示:

他可以在提供 3.6V 的电压输出的情况下,放电电流 100mA 的情况下工作 10个 小时。

疑问2: 这个电池用了一段时间电压不是会下降吗?那么这个时候电量算法是不是就变了?

对于我们以前的认知而言,就是电池用久了,就是快没电了,电压会下降,那么这个时候是不是就算不了了?

我是矜辰所致,全网同名,手动防止抄袭 = = !

这里你首先得知道这里是电池 没电了! 没电是什么情况,电压确实会下降,但是这个时候电池已经可以直接换了,过了可以计算的时候了。 因为,电池的指标写的 3.6V 1000mAh, 那么理论上来说,电池就能够保证在你放掉自己标定电量的时间内,电压保持在 3.6V。 什么意思呢,就是放电电流 100mA ,工作到10个小时的时候, 电池可以保证电压稳定在 3.6V 。 过了 10 个小时,对于电池而言,他已经把电用光了,你电压下降或者出现别的什么情况,都已经是情理之中,他已经是没用了的。

我也记得以前小时候电池没电了,给他压扁,好像还能挤出一点电来用用,这个…… = =!

对于这一点,有一个朋友在评论区给出了更加专业的解释,我已经把评论置顶,也可以供大家参考!感谢这位朋友!

1.3 一个好的比喻

我们再来加深一下对电池容量的理解,文章开头就说了:电池的容量表示在一定条件下电池放出的电量。

把电池比作装水的容器!

我们可以把电池容量看成一个装水水桶, 里面的装水多少已经固定了,如果你用小管子放水,放完需要时间长,对应放电电流小,使用时间长, 如果你用大管子放水,放完需要时间短,对应放电电流大,使用时间短。

当然你也可以大管子放一会,小的放一会,甚至是不放,这样看来完全是一个道理。

使用这个比喻,是否就能加能理解电池的容量了 (* ̄︶ ̄) !

1.4 电池的衰减与自放电?

这里要说明一下,本文基本上不考虑电池的衰减与自放电。

虽然电池确实是有自放电,而且如果是充电电池用久了确实会有衰减,但是考虑这些不仅白白增加了计算难度,甚至在某些情况下让我们无法进行理论计算。

而且,现在有些物联网产品专用的电池,自放电已经做到了很好的地步了,就拿博主自己使用的 锂亚电池来说:

在这里插入图片描述

而对于充电的锂电池,确实长期充放电对电池容量的影响不容忽视,确实会衰减,这个时候我们也只能初略的估计计算,因为衰减的百分比也不是一个确定的数字。

不仅是电池本身,对于低功耗的电池产品而言,我一般都会并联一个大容量钽电容用来稳压(如果没有大容量钽电容,无线芯片在发送无线报文的一瞬间因为电流忽然增大很多,会导致整体电压不稳,可能会使得芯片复位或者其他问题),电容本身也会存在自放电,所以严谨的说起来,这些都是影响电池电量的因数。

对于本文后面的计算,我们暂时不考虑衰减与自放电。

二、计算电池使用时长

铺垫了那么多,才到我们关键的环节,上面的说明是用一个固定的放电电流来说明电池的电量的,对于我们的低功耗产品而言,不可能始终保持在同样的电流状态,休眠时电流低,唤醒时电流高,本小结就来说明一下物联网产品上如何计算电池的使用寿命。

经过前文我们说过, 电池 我们就比作转满的一桶水,我们不管用粗管子(大电流)还是细管子(小电流)放水(电),我们最终就是计算需要多久放完。

在我们的物联网低功耗产品中,大多数情况下,休眠唤醒是有周期规律的,即便没有周期规律,比如类似于一些 被动的人感,门磁等设备,我们可以后台统计每天的平均值也能估算出一天休眠唤醒的次数。

电池使用时长的大体思路为:以一定时间为单位,进行平均电流的计算,从而得到使用时长,关键在于求出平均电流。

2.1 示例1(周期唤醒传感器)

我们示例1 ,先来计算一个周期唤醒的传感器使用时长:

条件如下:
周期上报传感器
电池电量:3600mAh
休眠电流:300uA
唤醒工作电流: 10mA
唤醒工作时间: 1S
唤醒周期: 1min
这里说明一下 1min 这个周期,我们这里以 59S 的休眠时间 与 1S的唤醒时间 为说明

由上面的条件,因为一个完整的周期为 60S ,我们如果算出一个完整周期的平均电流,我们可以近似的认为传感器所有的时间都是以这个平均电流在工作的,那就直接可以算出使用的时间。

平均电流 :

平均电流 ((59 X 0.3)mA + (1 X 10)mA )/ 60 ≈ 0.46 mA

电池大概使用时长:

时长 3600 / 0.46 h = 7826 h

2.2 示例2(被动唤醒传感器)

条件如下:
人体红外传感器
电池电量:1200mAh
休眠电流:20uA
唤醒工作电流: 10mA
唤醒工作时间: 0.5S
人体红外传感器的报文周期是不固定的,理论情况,如果一直有人,会每10S 发送一次有人,如果没人,2 h 发送一次心率报文

那么这种不固定的我们计算时间,我们可以自己定义一个极限的理论场景,然后得到一个时间。

比如上面的传感器,我们可以假设: 白天一直有人 12 小时, 夜间一直没人,12 小时

那么白天的 12h 就是 10s 发送一次,10s 一个周期,可以求出白天 12 h 的平均电流。

夜间的 12h 就是 2h 发送一次, 2h 一个周期,求出夜间 12 h 的平局电流。

最后求出一天 24 h 的平均电流,求出使用天数。

夜间平均电流:

夜间平均电流 ((14399 X 20)uA + (1 X 10000)uA )/ 14400 ≈ 20 uA

上面的 14400 是怎么来的?

因为传感器唤醒时间为 0.5s ,那么2个小时是多少个 0.5 s ?

2个小时 = 2 x 60 x 60 = 7200 s = 14400 个 0.5s

白天平均电流:

白天平均电流 ((19 X 20)uA + (1 X 10000)uA )/ 20 = 519 uA

上面的20 ,是因为传感器 10s 一次周期,10s 一次周期就是 20个 0.5s ,就是19个正常的休眠时间,1个唤醒时间。

结合夜间电流和白天电流,计算一天平均电流:

((519uA X 12) + (20uA X 12) ) / 24 = 269.5uA = 0.2695mA

电池大概使用时长:

电池大概能够使用时长 1200 / 0.2695 h > 4452 h > 185天

但是因为我们算的极限情况,白天不可能正真的一直有人,传感器发送报文的功耗为此传感器的大头,所以可以得出传感器实际使用时间会比这个时间长很多。

如果确实需要后续计算,可以在后台统计一定时间的传感器白天报文数量后做进一步的精确计算。

供电电压变换的说明

有时候为了测量产品的功耗我们可能会使用直流电源给产品供电方便测量,可能会和最终使用电池的场合下的供电电压不一样,这里就得需要算出产品功耗,转换一下不同电压下的电流。

供电电压大,板子肯定工作电流会小(电源整体入口),供电电压小,工作电流大 (电源整体入口),但是一块板子的功率可以认为是一样的,最后计算的时候要记得把电流换算成使用电池供电的产品电流。

结语

本文带大家理解了一下电池容量,同时给出了电池使用时长的理论计算方法。

当然在实际使用的时候,电池的使用时长要考虑多方面的因数,需要考虑到自己产品的应用场合,以及选择的电池性能等多方面的因数。

如果大家有好的意见,欢迎评论区留言,好了,本文就到这里,谢谢大家!

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

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

相关文章

巧用千寻位置GNSS软件|点测量采集技巧

点测量是测量中重要的节点,在测量工作的信息处理分析中发挥着重要作用。本期将给各位带来使用千寻位置GNSS软件采集地形点、控制点、快速点、连续点、房角点和倾斜点的操作技巧。地形点地形点的设置如图 5.1-9所 示,每次采集一个点,该点需要满…

Docker通过Nginx容器代理部署Vue项目

一、打包构建dist 在vue.config.js 添加入口等配置: pages: {index: {// 入口entry: src/main.js}}, lintOnSave: false, publicPath: ./ 在package.json文件中编写build构建: 然后运行: npm run build 在项目根目录下就有构建好的dist包&#xff0…

物流路由线路配载前端算法逻辑实现方案

作者:京东物流 柳宏 1.前置知识 1.1 基本概念 1.1.1 配载 配载代表着某条线路是否具有发往某个方向(区域、省市县、分拣等)的能力,也可以说是网点(分拣中心)是否具有承载配载所指方向货物的能力。一般网…

Go 构建基础的事件调度器

👇我在这儿 当我们需要在一段时间后的特定时间或间隔运行任务时,我们需要使用任务调度系统来运行任务:例如发送电子邮件、推送通知、午夜关闭账户、清空表格等。在本文中,我们将构建一个基本的事件调度程序,使用数据库…

基于springboot和ajax的简单项目 02.一直会出现的页面的上一页,下一页,分页与总页数 (下)

在各种功能中会一直出现页面分页的问题。 对此&#xff0c;可以使用pojo对象&#xff0c;来一直管理页面分页的功能。 01.创建相关的pojo对象。 由于属性是来辅助sql语句的&#xff0c;这个pojo对象。 Setter Getter ToString NoArgsConstructorpublic class PageObject<T&…

MySQL数据库实现主从同步

安装MySQL数据库8.0.32 前言 今天来学习数据库主从同步的原理及过程&#xff0c;数据库主要是用来存储WEB数据&#xff0c;在企业当中是极为重要的&#xff0c;下面一起来看下。 1.1 数据库做主从的目的 MySQL主从复制在中小企业&#xff0c;大型企业中广泛使用&#xff0c…

【ROS2指南-2】入门 turtlesim 和 rqt

目标&#xff1a;安装并使用 turtlesim 包和 rqt 工具为即将到来的教程做准备。 教程级别&#xff1a;初学者 时间&#xff1a; 15分钟 内容 背景 先决条件 任务 1 安装turtlesim 2 启动turtlesim 3 使用turtlesim 4 安装rqt 5 使用 rqt 6 重新映射 7 关闭turtlesim …

算法 || DFS(深度优先搜索) BFS(广度优先搜索)

&#xff11;、基本概念 dfs全称为Depth First Search,即深度优先搜索。它的思想是沿着每一条可能的路径一个节点一个节点地往下搜索,搜到了路径的到终点再回溯,一直到所有路径搜索完为止。 bfsbfs全称为Breath First Search,即广度(宽度)优先搜索。它的思想是将每一层的结搜…

【SQL】数据库的创建,表的创建、更新、删除

本文内容参考书籍《SQL基础教程》&#xff0c;初学者&#xff0c;请多指教。 一、数据库的创建 1、创建数据库语句 CREATE DATABASE <数据库名称>; 2、示例 CREATE DATABAST shop&#xff1b; 二、表的创建 创建表之前&#xff0c;必须先创建用于存储表的数据库。 1、…

如何找出消耗CPU最多的线程?

如何找出消耗CPU最多的线程&#xff1f; 1.使用 top -c 找出所有当前进程的运行列表 top -c 2.按P(Shiftp)对所有进程按CPU使用率进行排序&#xff0c;找出消耗最高的线程PID ​​​ 显示Java进程 PID 为 136 的java进程消耗最 3.使用 top -Hp PID&#xff0c;查出里面消…

JavaEE简单示例——基于XML配置文件的SSM整合

SSM整合 在本节中&#xff0c;我们会将之前我们学习过的三个框架结合起来&#xff0c;让他们可以融合起来&#xff0c;搭建成一个完整的贯穿整个三层架构的整体框架。 三层框架与对应的框架功能 我们首先回顾一下我们编写软件的三层框架以及对应使用的框架都分别是什么&…

代码随想录算法训练营第五十九天| 503. 下一个更大元素 II、42. 接雨水。

503. 下一个更大元素 II 题目链接&#xff1a;力扣 题目要求&#xff1a; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺…

( “树” 之 DFS) 110. 平衡二叉树 ——【Leetcode每日一题】

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] …

智慧钢铁厂人员定位系统解决方案,助力钢铁企业提升安全生产管理水平

作为国民经济的基础原材料产业&#xff0c;钢铁工业在经济发展中具有重要地位。中国钢铁工业不仅为我国国民经济的快速发展做出了重大贡献&#xff0c;也为世界经济的繁荣和世界钢铁工业的发展起到了积极的促进作用&#xff0c;但钢铁行业在快速发展的同时也存在一些安全管理问…

React应用(基于React脚手架)

目录前言&#xff1a;一、使用create-react-app创建react应用1、什么是 react 脚手架&#xff1f;2. 创建 cli 脚手架方式13. 创建 cli 脚手架方式24. npx:5. react脚手架项目结构6. 功能界面的组件化编码流程&#xff08;通用&#xff09;7. 如何更改脚手架版本二、React 组件…

【SpringMVC】7—文件上传

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…

【深入理解SSD 实践】对NVMe SSD热插拔时,正确做法是怎样的?

声明 主页&#xff1a;元存储的博客_CSDN博客 依公开知识及经验整理&#xff0c;如有误请留言。 个人辛苦整理&#xff0c;付费内容&#xff0c;禁止转载。 内容摘要 前言 概念 SAS/SATA 和NVMe 区别 热插拔分类 热插拔基本原理 如何确认是否支持热插拔&#xff1f; 热插…

Python批量导出阿里云ECS和Redis实例的监控数据到Excel

背景 某公司使用阿里云的 ECS 和 Redis 服务作为其业务支撑&#xff0c;为了及时了解机器的使用情况&#xff0c;领导要求业务部门对所有阿里云机器的平均资源使用率进行统计&#xff0c;并汇总在一个 Excel 表格中&#xff0c;以便领导查看和分析。 需求 为了满足领导的需求…

C++ const的作用

1.const在C中是只读变量&#xff0c;在C中表示常量 以下代码&#xff0c;在C中是错误的&#xff0c;但是在C中是正确的。 void main() {const int n 10;int arr [n]; }2.const不仅可以定义一个常量&#xff0c;也可以定义函数参数 例如&#xff1a; char *strcpy(char *dest…

一次弄懂gzip模块启用和配置指令

接下来所学习的指令都来自ngx_http_gzip_module模块&#xff0c;该模块会在nginx安装的时候内置到nginx的安装环境中&#xff0c;也就是说我们可以直接使用这些指令。 1. gzip指令&#xff1a;该指令用于开启或者关闭gzip功能 注意只有该指令为打开状态&#xff0c;下面的指令才…