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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

* n1 W4 [4 @6 j5 o: j
+ J6 q  Q: f9 |" |6 X1 j+ y/ j" L5 b0 f0 l$ e0 Y9 m' i" X8 x  m% i
. T5 ?: g8 M. o9 g1 C

. v4 k# j; D6 @9 }& u$ u1  ADC 简介
3 F+ h( ]5 y, f" t/ U, @8 K0 m: T4 f# G/ v0 q, N7 ~
  ADC(Analog-to-Digital Converter),模/数转换器或者模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。
$ T: ]2 I. c$ u5 j6 Y7 N) {7 G  我们 DA14580 集成一个高速超低功耗的 10 位通用模数转换器。可以工作于单端模式也可以工作于差分模式。ADC 模块有一个 1.2V 的电压校准器,作为满量程的参考电压。5 m6 H$ p- t, r+ l, _
  该 ADC 模块是 10 位动态模数转换,转换时间为 65ns;最大的采样率为3.3MHz;超低功耗(在 100KHz 的采样速率下典型供电电流为 5uA);有单端与差分两个输入比例;有 4 个单端或者 2 个差分输入通道;电池检测功能;斩波器功能;偏移和零刻度调整;公共端模式输入电平调整。; _- j2 R, P. X  O) ]. c' D  q1 K5 H
  由于电池电压与其放电时长成负相关关系,我们就可以通过 DA14580 的 ADC测量电池电压,直接判断我们所使用的电池剩余电量大小。
" r" c& W& Z( S; Z3 t3 A8 F9 c7 b5 g! T& b; g% B
2  硬件设计8 {$ _) \2 K1 W- n5 S; ~
6 t/ z7 ]% k% I4 ^- Y- ]0 m1 V& [
  本次 DA14580 采用 P01 脚直接测量电源电压。
1 z% E7 B/ b) A2 n: O" Y8 Z* A7 s# b2 m" `. l/ [
; r/ c4 \" L; @4 D8 A7 Y
图 1; a; u% Q7 C. h( ]% b, {7 M
- e/ R' N( d- z
3  软件设计' m" L0 {0 w3 E1 R) O

  ?/ a6 Y8 K  x, a; y# g! L6 a  软件开始,第一步要进行的是系统初始化。
1 M; ^! H$ A2 R/ x' K" N1 q3 b- ~+ y- S
+ ^4 D2 O3 R$ c# t9 B# H6 E

/ L, E0 a! n$ D) d3 G/ j: |
. }0 H) I: _% M# _, q4 ?% m; z* e; Y6 t0 S% r) n8 @( K
  由于我们要使用串口打印,就要配置我们要使用的串口。首先,要点调用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 个流程,就可以通过串口打印信息了。. [+ m: g2 c! T; D* n& C
  关于 ADC 采集电压,主要是调用下边的函数& _; [  v& Z/ W/ V- N

* q8 E0 g+ E, C- z5 {6 C8 x
4 k. ?+ k9 H) h/ O( r   d: V$ H9 ]' L, b  {
6 P; }: t. d: t3 @

9 D2 h; K! t& ~  在这个函数中, 首先是采用 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。. F' t# G: z; o# r- B' Y
  完成 ADC 初始化后,就要使能相关的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。
8 P, W2 y4 L* Y2 R7 D; D  完成 ADC 的初始化和通道使能后,就可以调用 adc_get_sample(void)获取数字电压。
! T3 j% i0 ]( I
$ m# t* C+ H, t4 K
! ]; i/ v8 O( j4 M. e1 G! S0 L- n' R
. V' H" h0 y) j& Q! v2 z  o. v" a0 _  Y. s8 D, J) V  S# [) S
  最后就是通过下面函数将数字电压转换为剩余电量百分比。
; V4 M! R2 l8 f% t) b
# M2 X" f+ W% `# K2 B: i! B# i
, R) g; m' a/ E7 U" M8 W7 c0 f  B) I. G& U# |" W, d5 L# o1 y9 Q9 }' z) `
  这是函数采用的分段的形式,这是由于我们的电池电压与电池剩余电量的关系是一条曲线,通过分段计算,可以提高精度。当然,大家也可以根据自己的实际情况改动上述函数。
" p# Q  p; f2 b% L4 S" v# P
' t& a- s) C" B* \% A9 [) z- I4 x2 B% Q) u, M
4   实验现象
4 ?, u  B( o$ h: y5 L$ |9 C
3 y5 K: }5 b0 {% A! T  首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
1 l' [; ~* T2 N: I$ M4 H/ ]7 a
" ^8 Z( W" V+ [7 }+ `- V  (1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
3 c, d0 c9 h' J2 n& O' L
% _! g# u; x7 Z+ _) y9 |8 y  (2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。& B& l( n# h; L( Z, E$ l& L+ n

5 ^, V" l; _( v. J: o  (3)点击打开串口。
) s1 X" q2 f7 X% j7 ]% ?6 S- c
2 G% P6 f' l0 E " j& b' p9 ?' A9 s* l4 b+ T
图 21 O: k' I8 C  }8 F0 q9 h, Z
配置完串口之后,打开我们提供的代码。
( t) O& i- u- `5 s7 b9 b  r& D
2 @, F; W1 M1 G, @  J: ^2 V(1)点击仿真按键。
+ P2 J# d9 F( a% e  X; t/ U  m* c
% I9 Z& W0 B1 X' o% k" } 0 \% |- w+ I1 v1 d8 P; X
图 36 G) Y9 {" n6 O# ~* V
(2)点击运行代码。
, V* m2 @9 N) {- y( i1 R6 M6 d. S8 T0 V
       
$ u2 v" {* U) x( e  O/ C4 B5 h图 4
2 B! K) w! B% r3 M
( p. O# Q5 u# D( Y
2 N6 q% ?4 U+ D1 e! }完成之后,就能看到串口调试助手接收框信息如下。
# Z4 j+ s' K  V8 |  H! q
# s% Z6 d" c" k# E& [/ [/ r . _- k: Q' C. z  X4 |% v
图 5
# w' O% O- s$ ~- A
" |+ q  W4 p& F( J- X( p$ M* [1 M- t/ e4 y3 z. r

- N5 L7 N3 X4 r9 p; h+ Y3 X; [5 B' }& M- \( Q

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-26 14:58 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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