轉(zhuǎn)換速率:每秒鐘采樣的次數(shù)。常用單位: SPS(每秒次) KSPS(每秒千次) MSPS(每秒百萬次)。越快越好。
轉(zhuǎn)換精度:轉(zhuǎn)換結(jié)果的有效位數(shù)(二進制)。單位:位
AVR的片上ADC:
最高轉(zhuǎn)換速率:15kSPS
最高轉(zhuǎn)換精度:10位
AVR片上ADC的特點:
10 位 精度
0.5 LSB 的非線性度
± 2 LSB 的絕對精度
65 - 260 μs 的轉(zhuǎn)換時間
最高分辨率時采樣率高達15 kSPS
8 路復(fù)用的單端輸入通道
7 路差分輸入通道
2 路可選增益為10x 與200x 的差分輸入通道
可選的左對齊ADC 讀數(shù)
0 - VCC 的 ADC 輸入電壓范圍
可選的2.56V ADC 參考電壓
連續(xù)轉(zhuǎn)換或單次轉(zhuǎn)換模式
通過自動觸發(fā)中斷源啟動ADC 轉(zhuǎn)換
ADC 轉(zhuǎn)換結(jié)束中斷
基于睡眠模式的噪聲抑制器
使用流程:
1.初始化相關(guān)寄存器
2.讀取轉(zhuǎn)換結(jié)果
3.平滑濾波
4.進行單位制變換
轉(zhuǎn)換結(jié)果默認(rèn)是右對齊的。所以高6位是補0的。
相關(guān)寄存器
第一個寄存器:ADMUX
這個是多工選擇寄存器,ADMUX
一般AVCC不穩(wěn)定 所以一般不用 一般用 1
第5位:是轉(zhuǎn)換結(jié)果 左對齊
一般左對齊應(yīng)用場合是只需要8位的精度,就左對齊 取出高半個字節(jié) 就支取了8位精度。
第4位:模擬通道與增益選擇位有個列表 不同的組合 和增益,而我們現(xiàn)在只需要單端輸入所以 都設(shè)置為0.
第2個寄存器:ADC 控制與狀態(tài)寄存器
第7位:ADC 使能
第6位:ADC 開始轉(zhuǎn)換,啟動ADC開始進行轉(zhuǎn)換
第5位:自動觸發(fā)使能,很多時候需要循環(huán)采樣模擬信號,自動觸發(fā)采樣很有用的,比如,用定時器100MS
采樣一次。觸發(fā)源下面會有講。
第4位:ADC中斷標(biāo)志。 轉(zhuǎn)換結(jié)束之后 這個位會置位,
第3位:ADC 中斷使能
第2:0位:預(yù)分頻選擇位
有個表可以晶振時鐘 2分頻到128分頻。
50----200KHZ的時鐘 獲得精度。低于10位 可以高于200KHZ
注意:正常轉(zhuǎn)換需要13個ADC(跟上圖有點重復(fù)) 200KHZ /13 = 15.384 最高也得 正常就按200KHZ /13就可以
下面我們計算下 16MHZ的時候它能給ADC 提供一個怎樣范圍的時鐘。
最大 16000 000
單次轉(zhuǎn)換速率
超過200KHZ 精度就會降低
第3個寄存器:ADCH
這個寄存器分兩種情況
第4個寄存器:特殊功能IO寄存器
這個寄存器不是專屬于ADC轉(zhuǎn)換寄存器的。只有7、6、5 這3位跟ADC有關(guān)。決定ADC觸發(fā)源
如果連續(xù)模式
模擬比較器 就設(shè)計到自帶的模擬比較器的功能
外部中斷0
下面都是定時器、計數(shù)器的中斷。
最常用的就是連續(xù)轉(zhuǎn)換模式。
adc.h
先將
均值濾波
voltile
STATIC這個變量盡在本文件有效
static
MAX_ADC_BUFFER 是宏
void int_adc(void)
{
}
unsigned int read_adc(void){
}
//ADC 轉(zhuǎn)換完成中斷
SIGNAL(SIG_ADC){
//
adc_buffer() = temp;
sum + = adc_buffer(maxacdbuffer -1);//本次的結(jié)果 8次的求和
下面這個是除以8 相當(dāng)于 右移動3位
adc_buffer[[0] = adcbuffer >> 3
//這樣就完成對ADC 轉(zhuǎn)換的結(jié)果進行了 平滑濾波
}