DAQ類比輸出的雜訊處理

<span =“apple-style-span” style=“font-family: arial, arial, helvetica; color: rgb(102, 102, 102); -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; “>

<font =“apple-style-span” face=”‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>Dear ALL:

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”> 

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>我目前DAQ卡是使用PCI-6221(37PIN),

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>LABVIEW8.2版, DAQMX8.6版

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>當我輸出一個類比的SIN波(1k Hz, 20mV);<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>檢測使用示波器,

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>卻發現帶有很多的雜訊,且頻率也有誤差

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>越高頻越嚴重(設定輸出17K Hz測量到只有約16.39K Hz)

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>想請問各位先進,有沒有什麼方法可以盡量避免這些問題??

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”> 

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>另外想請問波形中綠色框起來那邊是要怎麼解決呢??

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>我測試的結果是#S設大一點就好,

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>但是我一直不知道它們的意義,

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>能否請先進也解釋一下呢??

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”> 

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>謝謝 <span =“apple-style-span” style=“font-family: arial, arial, helvetica; font-size: 13px; “>

<font =“apple-style-span” face=”‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium; “>

<font =“apple-style-span” face=”‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>

<font =“apple-style-span” face=“‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium; “>

<font =“apple-style-span” face=”‘courier new’, courier, mono”><span =“apple-style-span” style=“font-size: medium;”>

你Fs跟#s接反了,
Fs是指頻率,#s是指輸出點數。

如Fs=100,#s=100則會輸出100點1秒波形,
Fs=100,#s=200則會輸出200點2秒波形,
Fs=200,#s=100則會輸出100點0.5秒波形。

雜訊部份在訊號輸出點並聯100K電阻跟100u電容看看(高頻並聯1M跟1u),相差太嚴重就放棄XD。

示波器上延遲輸出那一段應該是你訊號產生點數太多,導致程式無法在前一段波型輸出完畢後立刻接上新的波形。
建議作法:
1. 把訊號產生端宜出迴圈。
2. 降低#s數量。

以上建議提供參考

Dear caeru
我自己又跑了幾次測試後知道你所說的Fs and #s的意思
但是後來想到另一個問題
如果今天我要輸出的頻率是1K Hz
Fs 我用 35k Hz (隨意設而已)
代表我一個SIN波用35個點來組成
再來就是我困擾的地方

以DAQ來說,輸出到外部的訊號
只要我把訊號產生的地方用while loop框起來
那#s的部份是不是只要大於36就好了呢??
(可以有一個完整個波型輸出)
因為DAQ每 1ms會輸出一個波形出來
(1mS有一個波形,擷取36個資料點,36筆資料輸出一次)

這種想法跟作法有問題嗎?

yilin12340256.3748726852

理論上你的想法作法是沒錯,但是不建議做太高頻的輸出,請先參閱6221的spec。

依我實務經驗而言,#s大概是Fs的1/5~1/10大概就可以了,
這個設定不會導致輸出時失真嚴重,也可以考量到即時控制反應的處理。
#s太大的即時控制不便,寫出訊號可能會因為buffer大而導致系統lag,
#s太小則迴圈內其他的程式會因為多次執行而造成失真。
以下簡單的比喻:
*1000ms輸出訊號1ms處理迴圈內其他程式>>訊號誤差0.1%>>太久不好控制
*100ms輸出訊號1ms處理迴圈內其他程式>>訊號誤差1%>>權衡下剛好
*10ms輸出訊號1ms處理迴圈內其他程式>>訊號誤差10%>>誤差太大



如果輸出訊號是固定的,那麼建議把產生訊號的VI放到迴圈外,
迴圈內只要放AO的VI即可,避免在信號輸出後還得處理其他的程式而導致失真。

以上建議

先把波形寫到memory再調整sample rate是任意波形產生的方式

若你要動態調整頻率是ok的且很準確不會有誤差!!

但振幅的話必需先將寫入的波型

輸出完一次samplerate的波形再重新寫入!或者強制清除再寫入新波形..也可!

1.vi

參考看看:)

Dear ALL :

很感謝各位先進的建議, 在此回報一下我測試的結果給大家參考一下

 

首先是caeru大的建議

經過測試後我發現#s會受到PCI卡上的Buffer限制(也就是記憶體)

因此我測試過後頂多到8K就極限了,

在高頻輸出時 ( F=15K Hz, Fs=540K Hz,   隨意挑一個高頻)

#s 當然是只到8K Hz,但是這種狀況下並沒有產生那一直線的波形無輸出問題

相對的在低頻時 (F=500Hz, Fs=1.8K Hz, #s=500Hz)同樣也是無失真

歸納下來後有兩個部分應該是引起失真的原因(因為我測這兩個就搞超久了....囧)

1.訊號產生移到while圈外 <= 這應該是引起一直線波形的原因

(這個部分在我之後掃頻的時候會再看看有沒有問題,一樣會拿來跟各位先進分享一下)

2.增加 DAQmx Timing.vi 校正輸出頻率(使用waveform模式) <= 這個應該是高頻時誤差0.7K的原因

(這個vi不常用還在練習中,有好心的先進要分享的就先謝謝了)

 

再來是guitarnewage大的建議,感謝你的示範程式,

不過不知道為什麼我一跑就出ERROR

很抱歉因為今天事情很多,到剛剛測試出現Error後實在是無力再去分析了

所以訊息也沒有記起來,之後我會再回饋消息.

不過關於你提到由sampling rate去產生任意波形的方式我想過,應該是不太可行

因為我的應用範圍在20Hz~20KHz

使用的PCI-6221其SPEC的輸出最高頻為740K

因此在最高頻(20K)狀態下大約可以用36個點去描述一個SIN波

因為考慮到之後大型結構化後的設計,我應該是會直接把Fs定為F的36倍

所以沒辦法使用你的建議(也有可能是我對你所說的意思會錯義, 請指點)

 

PS.關於100mV, 2us雜訊的問題, 測了很久之後發現可能是卡片有點問題,

    目前已經在跟NI_客服聯絡, 所以應該不是程式造成的

_________________________________________以上

 

 

yilin12340256.8220486111