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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

2 w+ T$ \. k, z1 X8 y% `0 T9 E* V
: q7 n0 `. J- U; ~6 I4 g3 d; N( o! K' a5 w- J) z
: T+ L  z/ m! ~

4 F9 @8 ^1 a. C) H7 n  M1  ADC 简介- Z: Y) p1 E0 J% c

; E$ t  z; ]" [; c. K4 c' F, C  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。/ ~+ O. Z/ Z1 h( G* H, B+ m
  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
' m. e' p2 R9 O4 z  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。/ j) \: j! ?/ u
  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。3 l/ d9 {/ }. B

$ T/ ~; N( n; Y2  硬件设计1 M% |% R# ^5 E
1 L  }" e; q* i  O: [8 a4 J
  本次 DA14580 采用 P01 脚直接测量电源电压。' p  X, J/ @  Q( c1 w
! ]1 L( e: [# U. |6 S% F

, l/ e# |: r; x. C图 1; Q4 t, Z' r3 F8 c; @

  a" d- |7 U, B  `$ B1 B7 u: D3  软件设计6 ?6 y- Q0 i' h" D
/ X* @+ H, v7 X9 n9 S0 E$ |
  软件开始,第一步要进行的是系统初始化。
( [+ n. H; a4 P: Q3 Z
- M8 ~! [5 \1 |6 ^- T5 C0 E
; h. Q; d% K+ \( B4 K( j5 H9 x 8 g* @- Z; [# `' J% d
, N0 E" _6 [; y6 o& q3 i  {9 j

) W7 X4 R+ b0 v/ |  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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 个流程,就可以通过串口打印信息了。; g6 U4 x. z9 G2 {6 o( o
  关于 ADC 采集电压,主要是调用下边的函数& @9 x1 E7 `* \+ C4 A

( H1 r* Z+ m! g( m' m. V1 K 8 C, O( V- u, p. b" Z+ z2 y
0 c/ B) ]' ?( _' C: U0 H
$ n+ I1 p$ |, L2 a: X9 f
( X# v- y5 K, G5 k: y. B  l/ P
  在这个函数中, 首先是采用 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。
4 Z& p/ K0 v. _  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。
3 h5 z' p2 r& Y' s# _# Y2 ^  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。
0 c* x* |, d8 K. S; Q( y/ `3 j6 ?( [7 b# ?
" X( z# r4 C0 T, z  P4 |3 d! i

) O+ a9 |* y8 c( l% V4 s5 N: v0 {3 R  U& [. a
  最后就是通过下面函数将数字电压转换为剩余电量百分比。" H" |2 @* b5 M" E# R' {5 q' ]

6 b1 T2 M' U) n3 `) f8 n5 X$ ] ! r/ a+ N) T0 `; U( V
9 n8 x$ t3 b5 k5 w9 J! |
  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。" m9 L5 h; s2 L$ }1 }9 W

3 i( D4 P5 u# s  h8 \0 v  S+ c! ~6 e3 o
4   实验现象
. p& ~8 P& O7 r
: Q& {% u( S$ a" t( b. \. Z3 U  f% _  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。$ j# Y. v" a/ I5 z9 a3 ?, S
% e. C" b+ h4 t) [( W. D; W
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。, m& B3 }/ S8 e- G3 L- H; {' |
" X& T5 R8 a/ |3 P3 _# Z9 r8 B* C* L
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
; v# p; ~1 q, \  v& n" v" ?# \8 E) W
  (3)点击打开串口。
$ u3 ^# d5 R9 d2 f. e+ y  @/ ~
1 @+ q2 R  l$ t6 q . B+ H; h# Q$ k8 J
图 2% |& y5 \2 ]$ A, V! b9 D* G! ^$ Z- j
配置完串口之后,打开我们提供的代码。
3 C) }) b2 i% ], t5 k" K* d; K9 g- N7 |  x6 ?. D
(1)点击仿真按键。- r- T: l! v* ^/ [6 m$ x
5 H# |# w) [( y
9 K0 x  ~- M0 Z4 L, k9 |0 g
图 3
! J/ j) `* J% @; _0 T: Q0 g4 G(2)点击运行代码。4 M/ Z5 s- |( d: `, ^5 N+ q

- r, n5 i% z" C' c2 k7 z         $ }* M4 u) g+ c7 [  v4 Y2 B  B7 n
图 4
# p' z4 e) x5 n* r, \$ F4 |: u0 M7 \+ ^6 L, F/ |

1 l5 n: N% b3 @/ k完成之后,就能看到串口调试助手接收框信息如下。% E0 w- H/ E/ @! f8 y6 h6 W5 w

, O+ c6 z& g1 o0 \  R4 M% X; F / N0 E% q; N( o: [' \8 W/ N* {
图 5* r8 t. z; n% K5 j" }

0 e/ s8 r. \4 U) O6 {3 T2 P
2 G$ e0 Q3 ~0 B: G) j. o0 F% m( e, ]4 j' C! Q2 I4 s- m7 B( [4 T

/ {/ W, _# d( Q2 H* \9 A0 X/ d

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-21 09:52 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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