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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电池电量检测
& F: J) I8 H1 [+ A; z3 W7 N

. m9 t0 i8 s1 h, K$ b: S, D4 L3 r$ ^0 e( t* z+ b

4 w- {7 {% q& z9 f& r! m# J0 h8 ~7 h- [
1  ADC 简介4 P4 g$ G) r5 O7 o: l
: q/ u* t, g( b
  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。
( d" b( G$ u3 _9 v: \# F5 V  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。
2 S4 p) D9 ?- R: p0 t+ C  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。
% Q, K3 F' j2 Q, W& k) Y  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。
1 F  {" i5 P* V2 K9 `( N( F+ C8 ]' ^' [, ]  s+ v5 e5 e
2  硬件设计
9 T& z7 b9 I/ \- ^6 M* k, S# D2 x$ k3 H4 `/ S- d, J- w3 ]
  本次 DA14580 采用 P01 脚直接测量电源电压。
8 C( U' B$ L, y! z
/ H5 l& c3 @9 q9 A0 j+ Z" i0 [* a* k$ x: a 3 l* b4 p) O  p  y+ K( t' m
图 1& I$ Q7 a6 F& z6 j, [- b% r0 S

: x. V- P+ e9 E. }5 C3  软件设计
9 |* s+ a, q5 h% e" a! l1 R% A5 ~" J1 j3 y4 n- |# A$ I# Z
  软件开始,第一步要进行的是系统初始化。
  W& F  i) b. s" A$ j9 I
6 f; w9 G% ~, K1 S! u8 \9 Y* L; h7 x% B  t
" A) H# d; x# v- Z) l
) p2 u4 q& v% I+ r; p1 Q9 N* F  V
( P. d9 W" S* a4 ~; X: C
  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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# A; L/ f; ?6 }) ]  关于 ADC 采集电压,主要是调用下边的函数
  }3 B; h( o! l9 L$ o% I) s# }6 x8 Q. p/ T  z
7 u( z% T6 z$ x, |+ [5 V' V. w
: P  M8 Q: G. v+ p# t
, d. ~9 O- Y6 O# K2 F& a
/ S0 Q( [5 J* d5 W" G
  在这个函数中, 首先是采用 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。
: F9 T- o) o( X0 D! y6 Q; R  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。3 e! F: E; _: }0 ]
  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。# E0 x( A; G6 e; `7 h

1 c6 q7 |; j4 Y: j% o* e; Y7 Y2 O6 e8 i

% F0 ~4 T1 R9 O! K
" ]" C8 O7 v3 m; V+ c4 b  最后就是通过下面函数将数字电压转换为剩余电量百分比。
1 g# w8 A8 {+ f: N6 u4 P# [- P1 D' ~1 U) X" B
% g" n& ^! s7 U7 ]7 a

. U0 G5 Y8 u4 Q- ]/ s  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。+ \& ^. }2 i1 p# j% K

$ c! ?1 R- D  D6 r. ]. g6 l+ a' ^% f# z. B, N$ s/ a
4   实验现象) a+ {( |8 {/ U3 W

' Q! ~! X& h9 j& [' P* T0 J! p  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
1 |- C  l6 q) v1 P3 k4 P9 i
( A8 K1 }& S+ n2 y" \1 v$ N2 W  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
2 `% ^4 v$ I7 P$ ^
& o  I2 O: k5 x2 I8 @8 U5 ]! I% h  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。7 i) i* m0 v+ U1 s3 t3 }* D

3 @) n9 v2 ?5 C" e+ s4 R0 V- u  (3)点击打开串口。! s% R3 N- v) \3 w# \- X
  m0 Z- Z% D* a4 M+ C
4 i3 n) x6 L2 T' s9 a% e
图 2
2 N, J% I' F- S! l# [+ N' d, u配置完串口之后,打开我们提供的代码。9 d4 e5 [5 `8 _

+ C0 F$ S: q" Q* U6 Z(1)点击仿真按键。0 O( Z& o, o7 ]; w+ B) ^# T
3 e0 |5 T/ I' u8 A% T& f
# A9 U6 P9 C5 a' S
图 3+ B- l0 P# H, x& ~- ^& B/ Z, ?+ q; F
(2)点击运行代码。( @! Z- N# m- B# E) N& Y  {; d

; N; b7 r# |5 i* ^" F         5 _9 g+ r& y) v- Q
图 4
/ i5 v: g. s5 y; t0 ^% b/ Y9 n, M5 B" A# J

' ^/ J' y7 W; q9 L% X; j完成之后,就能看到串口调试助手接收框信息如下。& a8 y, R- T" g: F# d5 c
$ a0 ]0 D( Q8 n, Q! Y2 W4 [2 t: O

1 l. X8 a7 m. [! S& d图 5
; G% c: u! p0 n" z) L( K  G! j7 A3 X" N5 r- X; l! J
! g0 A+ [) C  y9 H% s1 q
6 b7 W% m  @; ~: t' M

4 z& j0 `7 g" G: J8 M) Y, S; _2 F

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 01:57 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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