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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电池电量检测
- n( P, W- T  l+ [: V
1 ^$ m6 k" @! O* }5 h+ I9 P
) F. d1 \; ?. h) \5 i( a/ c( I
4 |% [' C0 u6 [: ?5 |+ o

5 b4 Y8 y8 h: n1  ADC 简介( y/ ~8 Q. C; B' j& `. ]7 z( b
* |' L% L6 a" `3 J! ]5 |  i
  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。+ j" ?$ o2 G/ Q& Z6 [# j
  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
. \" ]4 ^- w% v9 L& f  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。  W5 ~, z, u$ h; G+ c
  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。
9 m; [2 ~8 Y1 \( _" {" ~$ k4 O# A" t4 c6 d$ V3 l' c$ E
2  硬件设计& S: Z7 X4 [1 A7 C8 B

# k' b- q9 D9 h, J  本次 DA14580 采用 P01 脚直接测量电源电压。2 R, R4 E% o, z5 P4 u
4 k; T3 O9 S0 [/ C# b
4 r# s7 F5 m# }. Q0 R9 b
图 1
7 n2 k* q( ?; _& b1 _7 U! g: d5 s% }; @
3  软件设计' \. U$ ]" o: k( k* Y, d* }
5 A" b1 k8 e) d- n! i) _
  软件开始,第一步要进行的是系统初始化。* N# y4 ]+ Y6 v0 }5 y( a& c
0 ~  B  E7 B4 W3 z8 g

- A) j/ d* H) u( s. M 4 A6 H4 \7 t  U% g2 f7 Y$ f

" ], ?0 a8 L* |5 S8 |7 o7 _9 i2 w  z) M% m, e2 H/ w% I
  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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 个流程,就可以通过串口打印信息了。% s; G" S1 Q+ X1 U6 B8 m
  关于 ADC 采集电压,主要是调用下边的函数
7 ~0 f9 u8 w3 n5 s; r/ k9 M$ w7 v! Y% s. _7 n6 x
- F( t- j5 S) t6 K1 V0 l) @2 E- x

' a1 r; @# ?4 `* ]( l$ f* h# n4 V& y1 y3 ^7 F& D) @. v& J/ j6 Q

! W5 U4 q; {% A3 |3 J6 L5 L( C+ A  在这个函数中, 首先是采用 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 G; A& z! n( D, v5 |' u  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。. {! w( c+ ~+ L4 ?+ u0 b* h1 c
  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。. P9 L0 S* o4 ]; U
9 W2 V+ p9 @. i& h# n: h) s
5 V4 A6 z7 O5 t1 `, ]' K
0 h$ @1 ^6 b, ?, w1 T
' n# ^  p2 K% U' F0 i' b
  最后就是通过下面函数将数字电压转换为剩余电量百分比。
2 o% }$ h$ [" w; x/ y; _+ ~6 |
8 M- X2 i3 r7 }3 y, S  r ) e2 ~  K( Y% U5 n$ g2 a, I

: A( D) [, f& p4 [- j4 D: B  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。
+ l& a- q8 J: M, P0 C1 f* K+ t3 ~1 h: i6 H* v6 m5 W/ C+ O: D
5 ^( G* k* w" O4 t
4   实验现象3 n' C6 N' m2 }- k4 a! O
% v: P3 y* ?9 H( d" i! k
  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
' v' D) ]# g) S; t+ E8 K1 x3 Q: U! m/ j$ o
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。- U$ l7 o- y/ A5 d
% H- J( I+ C( ]: ^: v( R
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
! ^2 o& w% y3 {% s2 E# e# Z, B4 g; F! q5 d
: E8 L8 M6 ~# \4 ?% h9 o# Y  (3)点击打开串口。3 o" Q$ `: {% P; ^& o

# i4 {( f5 C3 B* `
8 i- ~. ?" @$ X6 T6 J7 {, q. \- X图 2, [; E4 x% O7 A) [5 p
配置完串口之后,打开我们提供的代码。/ B$ k7 V- G/ X6 m) l& U' U, l; r& q

7 Y' D: {1 C, b( ~(1)点击仿真按键。
# @6 [+ S, H$ c4 D$ N
' D* B4 q  u5 b; [% K6 n; b- u
0 }( n; W1 L) x5 `+ O. @+ t图 3$ l- `9 e) N+ a% M0 h& k1 O
(2)点击运行代码。6 V+ z) m$ U% z0 C; j; k5 D
! b/ z8 h" i( h9 g! n- M
       
; d" R0 u8 T2 L% q. H图 4! D; E& z1 D8 Q/ W7 _* Z) H( l: S% D) t

5 w; T+ [- C4 x1 Z  y' w. u& h1 D9 {, ~& ~2 I; I
完成之后,就能看到串口调试助手接收框信息如下。, R/ J: C, `6 ?* T) E

# O/ D% U& Z8 V  t, Z$ Z + N: O5 `2 e# ]
图 5
# a2 \! d8 J9 d
: G' }! l) e- D5 d, r$ O. M" ~! [; N& {$ R/ l

" A" S* ^9 S  o& l7 y. S. |3 o$ e0 B9 K2 f( U# P

该用户从未签到

2#
发表于 2022-8-17 18:41 | 只看该作者
IO口多一点比较方便,可以预留很多控制部件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-13 00:07 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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