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