|
——瘋殼·智能穿戴開(kāi)發(fā)系列 電池電量檢測
1 ADC 簡(jiǎn)介
ADC(Analog-to-Digital Converter),模/數轉換器或者模數轉換器,是指將連續變化的模擬信號轉換為離散的數字信號的器件。
我們 DA14580 集成一個(gè)高速超低功耗的 10 位通用模數轉換器?梢怨ぷ饔趩味四J揭部梢怨ぷ饔诓罘帜J。ADC 模塊有一個(gè) 1.2V 的電壓校準器,作為滿(mǎn)量程的參考電壓。
該 ADC 模塊是 10 位動(dòng)態(tài)模數轉換,轉換時(shí)間為 65ns;最大的采樣率為3.3MHz;超低功耗(在 100KHz 的采樣速率下典型供電電流為 5uA);有單端與差分兩個(gè)輸入比例;有 4 個(gè)單端或者 2 個(gè)差分輸入通道;電池檢測功能;斬波器功能;偏移和零刻度調整;公共端模式輸入電平調整。
由于電池電壓與其放電時(shí)長(cháng)成負相關(guān)關(guān)系,我們就可以通過(guò) DA14580 的 ADC測量電池電壓,直接判斷我們所使用的電池剩余電量大小。
2 硬件設計
本次 DA14580 采用 P01 腳直接測量電源電壓。
圖 1
3 軟件設計
軟件開(kāi)始,第一步要進(jìn)行的是系統初始化。
由于我們要使用串口打印,就要配置我們要使用的串口。首先,要點(diǎn)調用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) 來(lái)使能我們要使用的串口 2 , 最后調用uart2_init(UART2_BAUDRATE,UART2_DATALENGTH)初始化串口。完成以上的 3 個(gè)流程,就可以通過(guò)串口打印信息了。
關(guān)于 ADC 采集電壓,主要是調用下邊的函數
在這個(gè)函數中, 首先是采用 adc_init(uint16_t mode, uint16_t sign, uint16_tattn),對 ADC 進(jìn)行初始化。第一個(gè)參數 mode 是 ADC 模式選擇,0 表示差分模式,GP_ADC_SE(0x800)表示單端模式,我們采用的是 GP_ADC_SE,單端模式。第二個(gè)參數 sign,0 表示默認模式,這里用P_ADC_SIGN(0x0400),選擇通過(guò)相反的ADC 符號獲取兩個(gè)采樣值來(lái)取消內部的偏置電壓。最后的參數 attn 設置輸入最大電壓值,0 對應 1.2v,這里選 GP_ADC_ATTN3X(0x0002)對應 3.6v。
完成 ADC 初始化后,就要使能相關(guān)的 ADC 通道。adc_enable_channel(uint16_t input_selection),本次使用的是通道 ADC_CHANNEL_VBAT3V。
完成 ADC 的初始化和通道使能后,就可以調用 adc_get_sample(void)獲取數字電壓。
最后就是通過(guò)下面函數將數字電壓轉換為剩余電量百分比。
這是函數采用的分段的形式,這是由于我們的電池電壓與電池剩余電量的關(guān)系是一條曲線(xiàn),通過(guò)分段計算,可以提高精度。當然,大家也可以根據自己的實(shí)際情況改動(dòng)上述函數。
4 實(shí)驗現象
首先,插好 Jlink 和 USB 轉串口,然后打開(kāi)打開(kāi)串口調試助手。
(1)選擇串口號,我們圖中是 COM1,這個(gè)根據實(shí)際情況選擇。
(2)配置串口參數,波特率為 115200,數據位 8,停止位 1,沒(méi)有校驗位和控制流,與下圖一致。
(3)點(diǎn)擊打開(kāi)串口。
圖 2
配置完串口之后,打開(kāi)我們提供的代碼。
(1)點(diǎn)擊仿真按鍵。
圖 3
(2)點(diǎn)擊運行代碼。
圖 4
完成之后,就能看到串口調試助手接收框信息如下。
圖 5
文件下載請點(diǎn)擊:
3_(100%開(kāi)源)藍牙心率防水運動(dòng)手環(huán)_電池電量檢測.pdf
(772.76 KB)
2022-8-23 17:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
|
|