數(shù)據(jù)采集系統(tǒng)基于AD轉(zhuǎn)換芯片AD0809
提起LABVIEW,就不能不涉及到數(shù)據(jù)采集和控制。
曾經(jīng)在網(wǎng)上辯論過LV是不是通用編程語言,NI的創(chuàng)始人的一篇文章的標(biāo)題就是“LV是通用語言嗎”,這的確很難說,說它是通用語言,因為它的確具備了通用語言的基本能力,但是只能說是基本的,但是對很多VC容易實現(xiàn)的東西,在LV中卻是個問題,尤其是系統(tǒng)相關(guān)的一些操作,所以,我個人更愿意認(rèn)為,LABVIEW是傾向于測量和控制的硬件工程師的語言,它是語言,而不是一般意義上的專用軟件,所以,LABVIEW逐漸成為工科院校學(xué)生的基本課程。
數(shù)據(jù)采集是LV最擅長的領(lǐng)域,對于開發(fā)過單片機的人來說,數(shù)據(jù)采集是再熟悉不過的了,如果想真正了解數(shù)據(jù)采集,就必須從AD,DA,COUNTER等轉(zhuǎn)換芯片開始,數(shù)據(jù)采集卡不過是集合了各種AD,DA,COUNTER等芯片,結(jié)合專門的微處理器和總線通訊在一起,使板卡具有了綜合采集功能。
數(shù)據(jù)采集卡都有AD轉(zhuǎn)換精度,速度和通道數(shù)的指標(biāo)??梢哉fAD是數(shù)據(jù)采集卡的基本功能。
A--ANOLOG 模擬量,D--DIGITAL數(shù)字量 AD很多時候稱做ADC,這里的C是CONVERTER,轉(zhuǎn)換器。ADC--就是模擬量轉(zhuǎn)換成數(shù)字量。數(shù)據(jù)采集卡最基本的ADC是電壓轉(zhuǎn)換成數(shù)字量,所以先從最經(jīng)典的8位模數(shù)轉(zhuǎn)換芯片0809談起。
AD0809是雙列直插的DIP28 , 8路模擬信號的分時采集,片內(nèi)有8路模擬選通開關(guān),以及相應(yīng)的通道抵制鎖存用譯碼電路,其轉(zhuǎn)換時間為100μs左右。
看看它的內(nèi)部結(jié)構(gòu)
對ADC0809主要信號引腳的功能說明如下:
IN7~IN0——模擬量輸入通道
ALE——地址鎖存允許信號。對應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。
START——轉(zhuǎn)換啟動信號。START上升沿時,復(fù)位ADC0809;START下降沿時啟動芯片,開始進行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持 低電平。本信號有時簡寫為ST.
A、B、C——地址線。 通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對應(yīng)關(guān)系見表9-1。
CLK——時鐘信號。ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號由外界提供,因此有時鐘信號引腳。通常使用頻率為500KHz的時鐘信號
EOC——轉(zhuǎn)換結(jié)束信號。EOC=0,正在進行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請求信號使用。
D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機的數(shù)據(jù)線直接相連。D0為最低位,D7為最高OE——輸出允許信號。用于控制三態(tài)輸出鎖存器向單片機輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。
VCC—— +5V電源。Vref——參考電源參考電壓用來與輸入的模擬信號進行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=-5V).
可以看出ADC0809四個關(guān)鍵部分組成,譯碼器、多路開關(guān)、AD轉(zhuǎn)換器和三態(tài)門電路組成。
首先通過譯碼器,指定通道,然后多路開關(guān)打開,(好的AD有采樣保持電路),外部電壓進入ADC0809。
START信號有高到抵,在脈沖的下降沿ADC0809開始轉(zhuǎn)換,同時狀態(tài)管腳EOC自動變低,表示轉(zhuǎn)換正在進行,每個時鐘CLK的脈沖轉(zhuǎn)換一位。
轉(zhuǎn)換完成后,EOC自動變高。
如果在START端外部也加一個時鐘,這樣ADC0809就可以自動不斷地采集數(shù)據(jù)。START每個時鐘的下降沿,都會采集一個數(shù)據(jù),如果需要采集1000個數(shù)據(jù),START端只需要有1000個脈沖就可以了。
對于一般的數(shù)據(jù)采集板卡,都支持單點、多定點和連續(xù)采集三種方式。
所謂單點,就是通過軟件給定START一個下降沿信號,產(chǎn)生一次數(shù)據(jù)采集結(jié)果。
所謂多頂點,就是給定START端一個固定次數(shù)的脈沖,產(chǎn)生固定次數(shù)的數(shù)據(jù)采集結(jié)果。
所謂連續(xù)采集,就是給定START端一個持續(xù)不斷地脈沖。
對于連續(xù)采集,一般都要設(shè)定兩個參數(shù),SAMPLE RATE 采樣頻率和samples per channel(每通道采樣數(shù)),針對0809,采樣頻率對應(yīng)START端脈沖的頻率。而每通道采樣數(shù)則是另外一個問題。
連續(xù)采樣的結(jié)果是在計算機中還是在板卡上那,答案是在計算機的內(nèi)存緩沖區(qū)中。
容易混淆的概念是板卡上也有也有一個先入先出的BUFFER,板卡采集的數(shù)據(jù)首先被放入到這個BUFFER中,然后板卡一次性把多個數(shù)據(jù)通過DMA(直接內(nèi)存訪問)轉(zhuǎn)送到內(nèi)存緩沖區(qū)中.
數(shù)據(jù)采集程序經(jīng)常遇到的問題是提示錯誤,數(shù)據(jù)被覆蓋的錯誤,這是如何產(chǎn)生的那?
一般板卡的數(shù)據(jù)緩沖區(qū)是分成兩個區(qū)域,一個是準(zhǔn)備好的數(shù)據(jù)供計算機讀取,
另一個區(qū)域是板卡不斷地把硬件FIFO的數(shù)據(jù)通過DMA傳送到計算機內(nèi)存緩沖區(qū),當(dāng)這部分區(qū)域滿的時候,如果另一部分的數(shù)據(jù)已經(jīng)被計算機讀取空閑,則把這部分的數(shù)據(jù)轉(zhuǎn)移到空閑區(qū)域.如果上一次的數(shù)據(jù)未被計算機讀取,則會發(fā)生數(shù)據(jù)覆蓋錯誤.
假如SAMPLE RATE=10000,SAMPLES PER CHANNEL=1000,表示計算機每次讀1000個數(shù)據(jù),則每秒需要循環(huán)的次數(shù)=10000/1000=10,也就是必須保證100MS讀一次,如果在讀取數(shù)據(jù)后需要處理或者寫文件等操作超過100MS,則導(dǎo)致下一次的數(shù)據(jù)未來得急讀取,因此發(fā)生覆蓋錯誤.
通過ADC0809我們了解了模數(shù)轉(zhuǎn)換的基本知識,后續(xù)的文章中將通過DAC0832介紹DA,8254介紹計數(shù)器,8255介紹數(shù)字IO,只有深入了解了這些基本原理,才能真正理解板卡是如何采集的