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