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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电池电量检测
+ l, Y! i0 @7 o! x3 I4 L

0 a  m0 V' h! K8 {/ K7 T8 `% |
  c8 I1 s7 u$ {! y& d* [$ O) g+ _/ M7 B. o/ b- ?
) }. n* x+ ]- g+ I
1  ADC 简介  i9 n+ f$ }" T9 w+ d0 F
! A! F" {* \, g' R( f7 F( i6 e
  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。
( ]7 c3 T* H2 E! z: P0 I  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
- M+ A/ `, n" x9 J, C/ }  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。) q# A! \' q8 @! G
  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。
8 T& p$ |+ I3 y8 S; u& R- H2 P3 A2 A6 [# l  ?) b" Z2 F
2  硬件设计
2 v# ]; J. `/ ?/ h
( [9 _8 D0 W4 w1 g# t5 o  本次 DA14580 采用 P01 脚直接测量电源电压。; Q: E3 t6 Y; v$ s+ v7 O6 j
3 G1 C, j! s  U2 Z: |3 }# m

4 p1 X6 a- a4 [1 I+ X7 v6 p! B图 1& G3 g3 m, u& S

3 Z0 B6 e0 ~0 u' f0 t; [+ y% C; ]3  软件设计
- j$ T" J% C/ [  X) H# i" B/ R
. E% F# K4 g+ e" j1 D% c  软件开始,第一步要进行的是系统初始化。/ U: y. X5 j8 w, u

4 q- ^: M- E0 N; t5 Z: u( n. X- Z
. C0 v" q9 V, c" B8 z7 P  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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 个流程,就可以通过串口打印信息了。
; c, S+ c! y. v8 D- m! E$ q5 `  关于 ADC 采集电压,主要是调用下边的函数0 p9 t$ z& ~6 [% e6 k( P  s
1 k. j; h: ~2 A4 E
1 _5 [% q6 ]  U% u/ ]

: N8 J# D$ K/ s' }  K; P, ` 7 `- U, O3 x5 Q0 ]2 B

6 ^2 \6 N3 ^1 Q; {& [4 t
/ {; v6 m2 g* `7 O& z" b& f! c  在这个函数中, 首先是采用 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。! y5 b( ?- |2 a% R" P9 X5 k
  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。# r3 b: @0 Q1 h2 B; {
  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。
! m* P, ~" S8 t" I* x) F6 E  `+ p7 B# v; y4 n; o
% h/ b, u( u( a

, O# L6 G4 [5 S2 k4 w5 @" w) ^; {4 I8 R) G
  最后就是通过下面函数将数字电压转换为剩余电量百分比。
  B- h  `' U, L! f! G4 ~
- Y0 s7 _7 g  {* x6 k8 I+ T
6 ~# f, w9 }9 [' K. _
% Q* ~4 A( |4 A! y( K) \$ m7 T7 W2 k! m/ B
  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。: u  E) P$ }& B, M1 F8 T. F2 ^

" E4 l& M0 I( Q
9 b& {5 _4 g$ J3 c% s4   实验现象
: e- t7 f* M$ y5 F
2 u; d+ x8 a4 }1 z8 h  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。8 F" K; F% I+ \# o3 b8 |
8 g0 \0 v' |! Z; v, ]  N  i
  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。4 Q8 J1 ~6 t6 [: c
8 Q/ j  `/ p5 T" ]/ P8 |9 Q6 ]" m& k
  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。% g  U% S: s$ {1 J! _

4 @0 s  ]6 h1 T# _: M+ S  (3)点击打开串口。
7 L  V: X) v# ]1 |8 d6 o2 v6 t# t& A# ]' T6 v/ i

& @/ l9 t1 N# x( R. X图 20 P# M) T0 H' Z5 ~
配置完串口之后,打开我们提供的代码。  [* R! G. s( X* u

0 l( a* e. V5 Z. F2 @(1)点击仿真按键。
$ b( g1 q" ^+ w4 f8 Q
- W$ ^4 k# D4 n6 T3 O
7 c( D8 p8 }5 j. T% M) q3 b图 3# Z( h# P3 b# ^$ G/ E. ]
(2)点击运行代码。5 P7 @/ |; j' m6 m- z( M  n4 }* q
  t4 c$ Z  n# G8 R) Z
        + g+ v" @" t: \1 ~$ h7 l& w
图 4
, e, n" S* k% J' t) K
% k9 ~- L# ^  C4 {& g; x1 Y. `9 L
( @. V& k5 t9 h+ j/ ~/ ~6 m完成之后,就能看到串口调试助手接收框信息如下。
- C8 F" V' L6 J2 d# w
% B; _  ]1 e- a0 R2 a! D
9 G/ j7 b8 G+ g$ p( L图 52 t# _; t$ E3 s' {; N% a
+ Z. o: D2 J& e0 g# X& S
4 D8 P7 i3 X" [5 k

  _1 Q7 `: t2 U& M$ h文件下载请点击: 3_(100%开源)蓝牙心率防水运动手环_电池电量检测.pdf (772.76 KB, 下载次数: 0)
; n4 v7 |  R5 `8 L! {
) R3 R- w  h2 I/ R7 g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 20:36 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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