电池电压值转换为百分比
在开发嵌入式产品中,一般都会用到电池,同时也就可能需要指示电池的电量需求,有些品台自带的百分比算法比较粗糙,(采样值-关机电压)/(满电电压-关机电压除)x100%,这种计算不符合实际电池放电曲线,往往30%多开始就飞速往下掉了。
这里举例用一个简单的算法,用积分方式,把电池放电曲线,按同等时间分成10等分,每等分看似一个固定斜率,参考代码如下:
#define ARRAY_DIM(a) (sizeof(a) / sizeof((a)[0]))
const static int Battery_Level_Percent_Table[11] = {3000, 3650, 3700, 3740, 3760, 3795, 3840, 3910, 3980, 4070, 4150};
int toPercentage(int voltage)
{int i = 0;if(voltage < Battery_Level_Percent_Table[0])return 0;for(i; i<ARRAY_DIM(Battery_Level_Percent_Table); i++){if(voltage < Battery_Level_Percent_Table[i])return i*10 - (10UL * (int)(Battery_Level_Percent_Table[i] - voltage)) / (int)(Battery_Level_Percent_Table[i] - Battery_Level_Percent_Table[i-1]);;}return 100;
}/*
测试函数,输入电压值,输出百分比值
*/
void test_func(void)
{int i;while(1){printf("please input value:");scanf("%d",&i);printf("valu = %d\n",toPercentage(i));}
}
Battery_Level_Percent_Table中是电压的参考值,从0~100共11个点,以上电压值仅供参考,可根据实际项目需求修改合适的值。电压值的单位为mV。
电池电压值转换为百分比相关推荐
- 「译」在JavaScript中将值转换为字符串的5种方法
原文: 5 Ways to Convert a Value to String in JavaScript 如果您关注Airbnb的样式指南,首选方法是使用"String()"? ...
- java.lang.date_无法将java.lang.String类型的值转换为必需类型java.util.Date
from date: to date: Trouver 这是控制器代码部分: @RequestParam(name = "d1", defaultValue = "190 ...
- 将枚举值转换为DropDownList等的选项值
应用场景:在项目中,我们已习惯将较稳定的分类标准定义为枚举,来保证程序中取值的合法性,也使代码更清晰.某些情况下我们需要在DropDownList等选择控件上绑定某个枚举的所有枚举值,供用户自行选择, ...
- 将RGB值转换为灰度值的简单算法(转)
将RGB值转换为灰度值的简单算法 原文:http://blog.163.com/zhaowei0425@126/blog/static/475860302011311103956748/ RGB是如何 ...
- oracle列设置标题,oracle实现某一列的值转换为列标题
步骤一:创建测试表 CREATE TABLE EMP ( EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HI ...
- boost::lexical_cast模块将创建一个to_long_double方法,将 Boost.Variant 的值转换为long double
boost::lexical_cast模块将创建一个to_long_double方法,将 Boost.Variant 的值转换为long double 实现功能 C++实现代码 实现功能 boost: ...
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
1.题目 编写函数 void written_amount(unsigned int amount,char *buffer); 它把amount表示的值转换为单词形式,并储存于buffer中.这 ...
- C#Convert.ToInt32(bool)方法-将bool值转换为int
C#Convert.ToInt32(bool)方法 (C# Convert.ToInt32(bool) Method) Convert.ToInt32(bool) Method is used to ...
- 毫秒值转换为日期工具_为机器学习准备数据
将数据转化为见解并不是神奇的事情.您必须首先了解您的数据,并使用它来创建驱动操作的报告.如果您的竞争对手使用机器学习和人工智能来自动推动行动,而您却没有,那您将处于不利地位. 为ML和AI准备好数 ...
- C#Convert.ToInt32(char)方法-将char值转换为int
C#Convert.ToInt32(char)方法 (C# Convert.ToInt32(char) Method) Convert.ToInt32(char) Method is used to ...
最新文章
- php-7.3.13 configure: error: Please reinstall the libzip distribution
- st04 查看数据库日志
- 试题 历届试题 幸运数(二分)
- SAP 电商云 Spartacus UI CI e2e-cypress.sh 脚本文件分析
- 用maven建立一个工程2
- ctp系统配套服务器,CTP系统
- 全程快捷键!硬核小哥超快配图1700页数学笔记,教你上手LaTeX+Inkscape
- Java Agent实战
- 通达信 移动平均算法_中山证券通达信下载-中山证券通达信软件 v1.06 官方版
- 通达信l2高级行情服务器地址配置文件,疯赢版通达信更好用——开通level2行情,添加龙虎榜数据...
- 作为一只爬虫,如何科学有效地处理短信验证码?
- c语言数组升序排列,数组输入各数之间用空格隔开,输出用空格隔开
- ubuntu上mysql端口3306无法远程连接
- Git的4 个阶段的撤销更改(通俗易懂)
- 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络
- matlab 设置采样时间设置,不建议设置采样时间的模块
- oracle之trunc函数
- 【在苹果电脑上如何安装win 7驱动】
- RetinaNet Examples:NVIDIA 一站式训练、推理及模型转换解决方案
- 如何实现企业全链路协同,实现企业业绩增长
热门文章
- iOS 9 Spotlight搜索 OC版
- 分析微信发送消息接口(基于网页版分析)
- html数独游戏源代码,数独算法及源代码
- Windows命令行解决8080端口被占用
- 一切过往皆序章,一切未来皆可期——2021给自己定个小目标:读完52本书
- 全球上市公司和VC们如何布局元宇宙,是资本盛宴还是炒作概念?
- 如何使用命令行从图像中提取文本
- 百度小程序html转码,百度小程序转换工具
- python 获取图像亮度和锐度,pytesseract 获取图片上字符串,及增加亮度,色感,对比度,锐度...
- 联想计算机系统重装,联想笔记本电脑一键重装系统的方法