本文從本人的163博客搬遷至此。
幾年以來,一直擔任學校“虛擬儀器”課程教師。以前上課都以介紹LabVIEW編程為主,硬件實驗一直沒有開展。這次借“西部高校實力提升工程”的機會,學院采購了一批NI的數據采集卡,終於有機會讓學生動手開展一點硬件實驗了。這次采購的是入門級的USB數據采集卡——USB-6009,NI沒有為這卡提供外圍實驗電路,要用他上實驗課還得自己動手為這個“小寶貝”設計幾個實驗,並配些外圍電路。接下來的幾篇博文,將分幾次介紹為學生設計的實驗及外圍電路,寫到哪算哪吧。今天先從小寶貝工具USB-6009介紹起。(NI官方網站上介紹資料的內容就不原樣重復了,只把我覺得有用、有趣和大家會感興趣的內容摘一下)
在NI眾多的數據采集卡中,USB-6009可以算是性能最低的了,價格也相對最低——官方渠道約小3000元(個人覺得還是比國產的其他數據采集卡還是貴多了)。USB-6009性能不高,但“麻雀雖小,五臟俱全”,常見的功能一應俱全,基本能夠體現LabVIEW+NI數據采集卡的開發特點。先來張外觀照片。
再看看內部電路板(PCB的頂層,底層沒東西)。
一、USB-6009的內部構成
打開后蓋,看到USB-6009主要有兩個芯片,一個是Silicon Labs的單片機,另一個是TI的十四位ADC,這兩個芯片決定了USB-6009的基本性能。
單片機上的激光絲印看不出它的型號,但“Silicon Labs”、“TQFP-32封裝”、“有USB DEVICE接口”幾個條件一綜合,大概能猜出來了:C8051F320——2.3KB RAM+16KB Flash。
TI的ADS7871是個功能挺全面的ADC。四個全差分通道,或變為八個單端通道。其他參數包括:14位分辨率;帶有片上PGA;參考電壓等都和USB-6009一樣。個人覺得這個ADC最大的缺點就是最高采樣率只有48KBPS。
二、USB-6009的模擬輸入
1、輸入范圍
ADS7871,雖然可以接受差分形式的負電壓,但同時要求輸入電壓的絕對值不能為負(0V到接近電源電壓)。組成USB-6009后,模擬輸入范圍有一個值得注意的參數變化:USB-6009的任意模擬輸入引腳都可以接受負電壓(具體可達-10V到+10V),也就是支持真正的雙極性輸入,這一點可能是由USB-6009板子上的偏置調整電路做到的。就此要為NI點贊,實在是大大方便了使用者。偏置電路的出廠較准,在產品的生產過程中實在是比較麻煩的一件事情,這也許也是USB-6009價格較高的重要原因之一。
2、模擬分辨率
ADS7871的分辨率是14bits,在-10V到+10V的情況下,分辨率約為1.22mV。在很多應用中,這個分辨率並不算很高,例如后面將要提到的半導體溫度傳感器測溫實驗中1.22mV的分辨率就顯得不太夠。
當然在很多情況下,可以在進入A/D轉換之前,對模擬信號進行放大以提高輸入其分辨率,這樣做的代價了是降低模擬信號的輸入范圍。例如,用PGA(可編程增益放大器)將信號放大10倍后ADC對放大前模擬信號分辨率將達到122uV,而輸入范圍將被限制在-1V到+1V之間。
值得注意的是NI對USB6009的設置非常有趣,只允許差分輸入模式的模擬通道使用PGA,而對單端模式的通道卻不能使用PGA。也就是說一旦在LabVIEW中將USB-6009的某個通道設置為RSE模式(單端)后,不論怎樣配置其他參數,這個通道的分辨率都將為1.2mV。如果將USB-6009的某個通道設置為差分模式后,LabVIEW會自動的根據該通道模擬輸入范圍參數來控制PGA的增益值,從而達到提高模擬分辨率的效果。因此在這種情況下對模擬輸入最大值和最小值的設置將是非常重要的。
3、模擬輸入阻抗
ADS7871的輸入阻抗達到6M歐姆,但USB-6009的輸入阻抗僅為150K歐姆左右,可能是由於輸入范圍調整造成的,在客觀上也起到了提高輸入電流,提升抗干擾能力的作用。但在進行某些高輸出阻抗的測試中,這可能導致測試失敗,需要小心。
4、緩沖FIFO
C8051F320的片上RAM只有2.3KB,這意味着USB-6009單次采集緩沖的大小不可能超過這個數量。在LabVIEW編程時,最好不要把各個通道的“每通道采樣數”之和設置到1K以上(每次采樣需要14bits緩沖寬度)。
二、USB-6009的模擬輸出
1、輸出范圍
USB-6009的輸出電壓范圍是0-5V,且不能用程序調整該電壓范圍。這與模擬輸入參數相差較大,在設計時需要特別注意,例如后面將要介紹的,用USB-6009測試三極管輸出特性曲線的例子中,就需要調整模擬輸出電壓范圍。
2、模擬輸出阻抗
為保護USB-6009的模擬輸出電路,其輸出端串聯了一個50歐姆的輸出電阻。在使用中如果不注意這個輸出電阻,它可能會在后級電路的輸入阻抗的共同作用下,影響輸出的電壓值。
3、輸出刷新速度
USB-6009的模擬輸出非常奇怪:刷新速度只有150SPS!不知NI在這一點上是如何考慮的,這導致USB-6009基本無法輸出有意義的時域波形,其模擬輸出只能產生控制電壓。
4、2.5V參考電壓輸出
這是由USB-6009輸出的參考電壓,在數字輸出一邊的第14腳,但應該屬於模擬輸出引腳,作用是供外部電路作為參考電壓。使用時要注意,這個參考電壓的輸出阻抗較大,可達2K歐姆左右——這一點USB-6009的參考手冊沒有述及。
三、USB-6009的數字I/O
USB-6009共有12個數字I/O,分為P0——八個和P1——四個。每個都可以單獨配置為“數字輸入”、“集電極開路輸出”或“推挽輸出”三種模式。
1、數字輸出
缺省情況下,為保證USB-6009的端口安全,當任意I/O被配置為輸出時,它將采用集電極開路輸出。雖稱為“集電極開路”,但並非真正意義上的集電極開路。真實情況是這樣的:該I/O的輸出集電極被一個4.7K的電阻弱上拉到5V電源。這也意味着,如果使用缺省輸出模式,最多只能輸出1mA左右的拉電流——1mA即使只用來點亮一個小LED燈都很暗淡。在缺省的輸出模式下如果想獲得較大輸出電流,應該采用灌電流形式:根據手冊可獲得8.5mA灌電流。
當然也可以采用“推挽輸出”模式,獲取較大的拉電流。但這種模式需要在LabVIEW中使用屬性節點功能來配置,且推挽模式使用的高電平為3.3V。
2、數字輸入
使用數字輸入功能時,需要注意的是在“數字輸入”模式下,USB-6009的輸入阻抗較小。以連接觸摸按鍵為例,需要使用1K歐姆左右的上拉電阻,才能使USB-6009讀到高電平。
未完待續…………