PAR2822 ADC的模擬量測


在低功耗的藍牙系統中,電源管理的優劣為使用者帶來不同的體驗感受,也為產品帶來不同的定位,PAR2822 是原相科技的藍牙SOC,內部包含一個低功耗 10 位通用模數轉換器 (GPADC),頻率為 1MHz採樣率。
每一次測量,數據採集僅需要25us。通過切換它可以作為 10 通道通用模數轉換,其中1 個額外通道用於電池電壓檢測,而另外 10個通道用於監控GPIO0~GPIO9。為了獲得更好的精度,內部參考電壓校準是首選。該 GPADC 可應用於電池監控、溫度電阻、模擬信號採樣等傳感應用。

今天小編就要來實際使用PAR2822 內建ADC來測量單節AA電池,並透過PAR2822開發板自帶的USB->UART 口打印電池狀況看看有沒有符合預期

1.準備工具設備

 a.PAR2822開發板
 b.Keil 編譯環境,詳細版本請參考之前的"PAR2822 開發板 GPIO 配置筆記"一文
 c.三用電表,查線路及電壓量測對照
 d.杜邦線兩
 e.AA電池一顆
 f.電池盒(可有可無,最主要是拍照美觀固定電池不要跑來跑去的啦)

  來個工具設備的大合照



2.搭建環境
上一回"PAR2822 開發板 GPIO 配置筆記"用了P0,P1,P2,
這次我們就用P3這個引腳試試看,順便回味程式內IO配置的方法吧

  測試1
  分別把PAR2822開發板上的P3與3V3 GND 兩個測試點用杜邦線接上分別測試看看UART打印出來的ADC值





  測試2
  把PAR2822開發板上的P3與AA電池的正極連接,AA電池負極與PAR2822開發板共地觀察UART打印出來的ADC值





3.程式設計

adc_st status為0代表ADC為目前沒有ready 的值

adc_st status為1代表ADC取值未完成
adc_st status為2代表ADC已經有ready的值可被打印了

void adc_irq_callback(uint32_t int_st)
觀察ADC取值狀況
void timer_callback()
一段時間來看一下如果ADC 還沒有ready的值就繼續取值,有值就打印出來

main主函式
初始化引腳UART口與設定P3為 GPADC_CH
打開DMA存放ADC值與設定TIMER1/GPADC中斷



4.實驗結果

a.
3.3V ADC 打印值

GPADC value=ADC code*3.6/1024
忽略誤差範圍以0x3ab為例
939*3.6/1024=3.3V


b.
0V ADC打印值
一個bit的跳動可忽略,套入公式為0V



c.
0.9034V AA電池 ADC 打印值
GPADC value=ADC code*3.6/1024
忽略誤差範圍以0x102為例
258*3.6/1024=0.907V與電表相比的精度用在消費型應用算很不錯的



具電壓偵測的產品讓產品不再是冷冰冰,終端使用者可以提早知道系統狀態
如提早通知用戶,電池快沒電了,預先處理等等的報警...

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能