玩转X-CTR100 l STM32F4 l VIN输入电压采集(锂电池电量计)

我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】

本文介绍X-CTR100控制器 采集VIN输入电压功能,通过锂电池电压与电量关系,实现简单电量计功能。
原理
电池系统可通过电池电压检测实现简单的电源电量管理。
以电压为基础的方法属于最早应用的方法之一,它仅需测量电池两级间的电压。该方法基于电池电压和剩余电量之间存在的某种已知关系。它看似直接,但却存在难点:在测量期间,只有在不施加任何负载的情况下,才存在这种电池电压与电量之间的简单关联。当施加负载时(这种情况发生在用户对电量感兴趣的多数情况下),电池电压就会因为电池内部阻抗所引起的压降而产生失真。此外,即使去掉了负载,发生在电池内部的张持过程(relaxation processe)也会在数小时内造成电压的连续变化,实际的充电过程中,温度、放电速率以及电池老化等众多因素都会影响充电状态。

|
2.5 |
使用后的电池的情况,许多人都会偶尔关心一下电池会不会老化, 老化后性能如何.这里贴上一个图, 就一目了然了.

一般手机设计待机电量时, 比如有4格5档(4-3-2-1-0)的电量指示.
设计者不会把我上面提到的新电池的电压对容量关系进行均分,取75%-50%-25%-0%这样进行电压划分.
因为要考虑到电池使用一段时间(比如1年)后, 其放电平台会降低,上述的比例肯定会失调.
所以厂家会考虑一点点这方面的余量.以新电池的60%-40%-20%-5%这样的比例进行设计.即
4.20V~3.90V满格
3.90V~3.80V三格
3.80V~3.72V两格
3.72V~3.65V一格
3.65以下,低电压告警。
虽然在使用新电池时, 第一格会待机比较长的时间, 最后一格待机比较短. 但是当这个电池使用个一年半载后, 其容量分布就比较接近均分的情况.
例程
本例程实现X-CTR100 VIN电压采集,并根据电压与电量关系实现简单电量计功能。
硬件说明
硬件资源:
- 串口UART1
- 3S锂电池或直流稳压电源(自备)
硬件连接:
使用MicroUSB数据线连接X-CTR100 COM接口。
VIN连接3S锂电池或直流稳压电源(12V),VIN电压采集部分原理图如下图所示。

由于VIN电压输入范围8~28V,故使用电阻分压,分压比例1/16。
软件生态
X-SOFT软件生态,X-API文件如下。
ax_vin.c——X-CTR100 VIN电压采集源文件
ax_vin.h——X-CTR100 VIN电压采集头文件
VIN操作函数如下:
|
void AX_VIN_Init(void); //VIN输入电压检测,ADC2初始化 uint16_t AX_VIN_GetVol_X100(void); //VIN获取输入电压值,数值扩大100倍。例如7.2V输出为720。 |
通过ADC2通道9采集VIN输入电压,不影响ADC功能。
软件说明
本程序包括两个主要函数,AX_VINVOL_Init()初始化函数和AX_VINVOL_GetVol_X100()电压采集函数,并根据电压与电量关系设置四个电量等级。
|
int main(void) { uint16_t vol;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 VIN电压采集例程***\r\n\r\n");
//模块初始化及配置 AX_VIN_Init();
//X-API测试:循环采集VIN电压值 printf("*循环采集VIN输入口电压值\r\n");
while (1) { vol = AX_VIN_GetVol_X100();
if (vol>1170) { printf("*VIN电压:%d(0.01V) 电量:四格\r\n", vol); } else { printf("*VIN电压:%d(0.01V) 电量:三格\r\n", vol); } else { printf("*VIN电压:%d(0.01V) 电量:二格\r\n", vol); } else { printf("*VIN电压:%d(0.01V) 电量:一格\r\n", vol); } else { printf("*VIN电压:%d(0.01V) 电量:电量低告警,请尽快充电\r\n", vol); }
AX_Delayms(1000); } } |
实现效果
连接直流电源测试,如下,根据电压显示相应电量,运行效果如下图所示。

总结
通过本文学习,可以掌握X-CTR100控制器 简单锂电池电量计功能。在实际应用过程中,过大负载也会拉低电压,短时间电压降低不能代表实际电量,需要对电压做一定滤波和特殊处理。
玩转X-CTR100 l STM32F4 l VIN输入电压采集(锂电池电量计)的更多相关文章
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
- 玩转X-CTR100 l STM32F4 l DSP指令集性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DSP库的 ...
- 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器如何开启ST ...
随机推荐
- 高并发之限流RateLimiter(二)
Guava RateLimiter提供了令牌桶算法实现:平滑突发限流(SmoothBursty)和平滑预热限流(SmoothWarmingUp)实现. SmoothBursty:令牌生成速度恒定 @T ...
- liunx系统部署
Linux系统安装与基本配置 =======================================内容提要:获取Linux 常用发行版的方式DELL/HP/IBM 服务器介绍DELL/HP/ ...
- 堆排序 GPLT L2-012 关于堆的判断
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 分析:这题看起来非常唬人,其实不难 ...
- 『TensorFlow Internals』笔记_系统架构
一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...
- Oracle11g温习-第十三章:索引
2013年4月27日 星期六 10:46 1.索引(Index)的功能:对记录进行排序,加快表的查询速度 2.索引的分类 1)B-tree 索引(默认) a.在一个大表上 b.建立在重复值比较少的 ...
- PAT 1011 World Cup Betting
1011 World Cup Betting (20 分) With the 2010 FIFA World Cup running, football fans the world over w ...
- 函数使用四:采购发票MIRO BAPI_INCOMINGINVOICE_CREATE
1. 业务处理(transaction)字段选择: 创建后续借记(subsequent debit) ItemData DE_CRE_IN ...
- WDA基础四:Select-option的使用
select option是方便用户和数据处理的,就是丑了点... 前面使用的input直接做查询条件有哥弊端,就是查询的时候需要判断字段是否有选择条件,然后要将选择条件做成range table.. ...
- 2017-4-13/MySQL
1. mysql一般的连接方式都有哪些,各自优缺点. MySQL:过程式风格,最常用. MySQLi:MySQL的增强扩展,提供了过程化和面向对象两种风格的API,增加了预编译和参数绑定等新特性, 但 ...
- ActiveMQ 处理不同类型的消息
ActiveMQ 中的消息都继承自 org.apache.activemq.command.BaseCommand 类. broker 处理消息的调用栈如下: TransportConnection ...