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