我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 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
if (vol > 1140)

        {

            printf("*VIN电压:%d(0.01V) 电量:三格\r\n", vol);

        }

        else
if (vol > 1110)

        {

            printf("*VIN电压:%d(0.01V) 电量:二格\r\n", vol);

        }

        else
if (vol > 1080)

        {

            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输入电压采集(锂电池电量计)的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  2. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  3. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  4. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  5. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  6. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  7. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  8. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

  9. 玩转X-CTR100 l STM32F4 l FPU单精度浮点性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器如何开启ST ...

随机推荐

  1. LeetCode--374--猜数字大小

    问题描述: 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的接口 gu ...

  2. p2751 Job Processing

    如果单单只安排过程1的时间最短,很容易算出来.用优先队列取最小,加上增量后再放回就行.对过程2也进行这样的操作.将过程1第一个完成的在过程2最后一个完成.以样例来说,过程1:1,1,2,2,3,过程2 ...

  3. Apache Hadoop Operations at Scale

    book: Hadoop Operations,A Guide for Developers and Administrators Apache Hadoop Operations at Scale ...

  4. 【其他】【服务器】【4】删除Windows系统中不想要的服务

    步骤: 1,开始菜单栏查找“服务”,打开后找到想要删除的服务 2,右键单击想要删除的服务,选择“属性”-“常规”-“服务名称”,记下服务名称(AA) 3,开始菜单栏输入“cmd”打开命令行窗口,输入s ...

  5. vivado实现模16的计数器

    `timescale 1ns / 1ps module ctr_mod_16( clk, rst_n, count ); input clk, rst_n; :] count; wire clk, r ...

  6. 焦作网赛-G-欧拉降幂

    https://nanti.jisuanke.com/t/31716 答案就是2^(n-1)%mod ,n非常的大,由欧拉降幂公式    AB%C=AB%phi(C)+phi(C)%C  化简 2n- ...

  7. WDA基础三:简单的INPUT选择,简单的TABLE显示

    先从基本的开始,简单的单选和TABLE显示 1.创建选择条件节点,CONTEXT页签,右键CONTEXT创建NODE,对应1:1  1:1  lead selection 2.创建结果节点,对应0:n ...

  8. Beta阶段——第6篇 Scrum 冲刺博客

    Beta阶段--第6篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成了函数的编写,提供报表数 ...

  9. [luogu P3216] [HNOI2011]数学作业

    [luogu P3216] [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 ...

  10. [codechef July Challenge 2017] Chef and Sign Sequences

    CHEFSIGN: 大厨与符号序列题目描述大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’.‘=’和‘>’三种比较符号的字符串.记字符串长度为 N,大厨想要在字符串的开头.结尾,和 ...