蓝牙心率防水运动手环 
——疯壳·智能穿戴开发系列
电池电量检测

1  ADC 简介

ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。
  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。
  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。

2  硬件设计

本次 DA14580 采用 P01 脚直接测量电源电压。


图 1

3  软件设计

软件开始,第一步要进行的是系统初始化。


  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用GPIO_ConfigurePin(UART2_GPIO_PORT,   UART2_TX_PIN,   OUTPUT,  PID_UART2_TX,false) GPIO_ConfigurePin(UART2_GPIO_PORT, UART2_RX_PIN, INPUT, PID_UART2_RX, false)配置我们使用的串口管脚,然后使用 SetBits16(CLK_PER_REG, UART2_ENABLE,1) 来使能我们要使用的串口 2 , 最后调用uart2_init(UART2_BAUDRATE,UART2_DATALENGTH)初始化串口。完成以上的 3 个流程,就可以通过串口打印信息了。
  关于 ADC 采集电压,主要是调用下边的函数

在这个函数中, 首先是采用 adc_init(uint16_t mode, uint16_t sign, uint16_tattn),对 ADC 进行初始化。第一个参数 mode 是 ADC 模式选择,0 表示差分模式,GP_ADC_SE(0x800)表示单端模式,我们采用的是 GP_ADC_SE,单端模式。第二个参数 sign,0 表示默认模式,这里用P_ADC_SIGN(0x0400),选择通过相反的ADC 符号获取两个采样值来取消内部的偏置电压。最后的参数 attn 设置输入最大电压值,0 对应 1.2v,这里选 GP_ADC_ATTN3X(0x0002)对应 3.6v。
  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。
  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。

最后就是通过下面函数将数字电压转换为剩余电量百分比。

这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。

4   实验现象

首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。

(1)选择串口号,我们图中是 COM1,这个根据实际情况选择。

(2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。

(3)点击打开串口。


图 2
配置完串口之后,打开我们提供的代码。

(1)点击仿真按键。


图 3
(2)点击运行代码。


图 4

完成之后,就能看到串口调试助手接收框信息如下。


图 5

更多完整学习资料和对应开源套件,请登陆官网:“疯壳”

如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系

【开发教程5】开源蓝牙心率防水运动手环-电池电量检测相关推荐

  1. 【开发教程1】开源蓝牙心率防水运动手环-套件检测教程

    疯壳·开源蓝牙心率防水运动手环 套件检测教程 内容简介 本文档主要介绍在如何验证蓝牙心率防水运动手环套件正常,包括具体线路连接,实验现象验证.   具体分为以下几个步奏. 1.将 Jlink 与手环主 ...

  2. 【开源教程1】疯壳·开源蓝牙心率防水运动手环-开发套件简介

    开源蓝牙心率防水运动手环  --疯壳·智能穿戴开发系列 开发套件简介 为了方便编写文档教程,以及开发调试,我们拆出了一个手环硬件主板,并焊接上了 jlink 下载线以及 usb 转串口线,如下图所示( ...

  3. 【开发教程2】开源蓝牙心率防水运动手环-套件检测教程

    疯壳·开源蓝牙心率防水运动手环 套件检测教程 内容简介 本文档主要介绍在如何验证蓝牙心率防水运动手环套件正常,包括具体线路连接,实验现象验证.   具体分为以下几个步奏. 1.将 Jlink 与手环主 ...

  4. 【开发教程9】疯壳·开源蓝牙心率防水运动手环-心率监测

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列    心率监测 1心率测量原理简介          我们手环的心率测量, 采用的是 PPG 光电容积脉搏波描记法原理(PhotoPlethysm ...

  5. 【开发教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  6. 【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  7. 【开发教程3】开源蓝牙心率防水运动手环-开发环境搭建

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 开发环境搭建 本节开发环境搭建主要讲解 KEIL.JlinK 驱动.Smart Snippets.USB 转串驱动的安装..   Keil MDK ...

  8. 【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 电容触摸 1相关简介      本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断.   DA14580 ...

  9. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

最新文章

  1. 关于协作机器人10个观点的讨论
  2. 用区块链变革教育行业?全球首个教育+旅行+区块链平台——Ambertime:让每个人都能够将时间凝结成自己专属的“琥珀”...
  3. 免费科研数据集大搜索,来源于互联网~
  4. [YTU]_2442( C++习题 矩阵求和--重载运算符)
  5. 电脑开机进入不了XP界面
  6. 如何使用 C# 压缩单个文件?
  7. java 三大集合_java中的三大集合入门笔记(简单实用)
  8. mysql 触发器定义变量_MySQL 函数存储过程触发器定义简单示例
  9. hive数据倾斜及处理案例
  10. java面试题整理_2018年最新java面试题整理。。。持续更新中。。。
  11. DOM注册事件的三种方式~满满的干货哦
  12. 设置width不生效_CSS:你不知道的width:auto
  13. 简单示例用例(Simple Example Use Cases)--hive GettingStarted用例翻译
  14. 《战舰世界》携手汉堡王开启“战舰堡胃战”主题活动
  15. java多线程优秀开源项目_github比较热门的Java开源项目
  16. 开源3D建模软件FreeCAD基础介绍与入门
  17. AVC、HEVC、VVC帧间预测技术
  18. python自动轨迹绘制七边形_斜抛运动的数学模型
  19. 自变量与因变量相关分析不显著能做回归分析吗?
  20. html5 live,HTML5 live streaming

热门文章

  1. 第二章教程14:管理器夺权
  2. MSM8953 audio dts 代码跟踪
  3. 四舍五入保留两位小数,不足补0(SQLJAVAJS)
  4. iPhonenbsp;1.1.2破解后分屏功能开启办法
  5. 硬盘删除的文件怎么恢复呢?几个步骤很简单
  6. 【总结】1327- 降低前端业务复杂度新视角:状态机范式
  7. java刷新页面_刷新页面的几种方法
  8. 表格的简介、长表格、表格的样式、表单简介、表单补充——HTML
  9. 2021年A特种设备相关管理(电梯)报名考试及A特种设备相关管理(电梯)作业考试题库
  10. 我的博客搬家了! 新地址:http://www.cnblogs.com/jubincn/