找回密码
 注册
关于网站域名变更的通知
查看: 119|回复: 0
打印 上一主题 下一主题

【开发教程5】疯壳·开源蓝牙心率防水运动手环-电池电量检测

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-2 14:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

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

6 f, |" G7 f3 `3 P0 t9 Z# a& V
( V- [  D/ u, t# d) S; y4 X. e" G% P$ a: }) A; x$ ]* B% I  Z5 O

2 ]+ l7 @: l8 \. H! z* z1 D  ^3 }* p2 y+ O% P! e
1  ADC 简介: o% Q5 n6 \+ [. q+ ~: a  o

( w; M# x* h& Z  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。
9 r9 G& }7 U6 b% K" g5 R  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
' g/ }  p! R: ?# k, }  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。
! i5 |' v# Q$ X  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。
0 V* l8 a" A" j1 u
( i) _% z  G; S5 U2  硬件设计
1 A: O9 Z7 H, Q7 A) d3 |
8 D* m& a, i2 g( J7 U  本次 DA14580 采用 P01 脚直接测量电源电压。. ~% ]* l2 r8 S5 A; n

% q- j8 j! H: U' z8 n7 T* T" ?  }" ^
4 J' r+ B' P) S/ o' N1 j图 12 `' U& j% l6 J  l: h: d

! \, e, A" Y! H3 O$ O/ X+ ~, }" N3  软件设计8 [6 ^0 @+ j/ @. V# g3 \; P

! A% e7 e% |1 W1 Y' r6 }  软件开始,第一步要进行的是系统初始化。
9 S" r. x( P  h8 I: D; Z: A* M! P1 v
+ Q- }" g3 R7 w6 J: r9 M) c7 n: l
+ _4 |, n6 t: v5 b3 x  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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 个流程,就可以通过串口打印信息了。8 n! T* F* X7 _; Z+ j) f
  关于 ADC 采集电压,主要是调用下边的函数5 P1 ]+ U9 Z$ g5 S- C7 V

4 C. o. I( S) K" Q3 \% U( V5 E( j8 V1 t

! e* o7 B0 X$ N+ C2 ]5 ?* T1 R; v
' S, b( ~0 ?. X' O
- S, @6 D0 h# ]; c, g) s" F( n, M/ g6 _; o
  在这个函数中, 首先是采用 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。8 j) @; {, C6 _9 Z+ g9 J/ x( m
  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。3 W( j& u  y# S1 p8 c* e+ i
  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。
+ m. N( @4 E# ?; W2 p/ |2 h& g; i4 ~2 u
* ^! |! _, W; N: X! N( _

' q% d% e( R3 z7 e5 M; D, ~1 Z2 N+ V8 q9 J
  最后就是通过下面函数将数字电压转换为剩余电量百分比。
; P3 {# T5 y- L  Q" \' L$ ~+ d7 B3 T; R+ f% z

+ p) ~( ]4 f3 Z! ~) S 3 F# Y9 |" ^2 N7 t
( Q' \6 \/ \. `' V- X! @1 N
  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。4 v9 h$ \9 R0 a2 U
" p# f; q5 A' }% `! H: h
0 b& Z9 s$ \7 a  X" Y! _- H* l
4   实验现象
% d7 Q4 o1 J: M. k  {: X* p! y9 s' c: r3 z4 |
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
  w& n+ U4 v$ Y
1 a2 k" }: e( N, z* N/ t5 r  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。( [! `1 b: _1 g0 A: ?% c$ ~. M
- D+ _  S4 h* W. y
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
: e) s; `" m5 q4 i! H
' |! q3 s5 g- S* m$ U. X* m# ]& k9 p  (3)点击打开串口。
4 q2 L2 y9 ^% z: g* W8 a7 ^$ l
0 d# N  B& l5 R- c5 q) F
+ \7 X6 g% V! d图 2
% i8 V- E" ~; I7 j3 Q2 \配置完串口之后,打开我们提供的代码。
$ b* Q9 c1 G9 r0 u( p; @7 [
! r. a& k- u% K" R(1)点击仿真按键。7 C& d- n* H9 }$ p

/ E0 I/ O  K' Q" X) j
, Q; [8 P8 _$ H: J图 3
6 X" r6 \- x: v: f5 W1 p(2)点击运行代码。7 Q# L# w; Y, T5 ~8 {) f" S# x
  u3 `# G# W, ]0 v$ g
        9 X/ k6 H1 W1 ~9 Z5 b
图 4, X. h( g2 o; R' V0 `) }: @8 H

3 F/ H4 n& K7 C& ]' _2 @) X) V$ F* p0 c2 _: M  \' W6 q" X6 H3 T* ?
完成之后,就能看到串口调试助手接收框信息如下。4 G, `4 C" N+ y5 M% ]
% S. K9 p# X7 @4 P

- m# |5 r/ q' S, H2 L! K! K+ V图 5$ P9 t7 V% ~6 P7 v+ P# ^4 Y
  Z( {) O  y8 A

+ p3 F( f. W& k6 T
: t4 U* ]) _$ a4 h文件下载请点击: 3_(100%开源)蓝牙心率防水运动手环_电池电量检测.pdf (772.76 KB, 下载次数: 0)
5 {6 j9 t2 b* ^/ Q/ {
. Y' M: P; I/ `% u: b. {9 L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 02:17 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表