USB-4431 DSA應用於THD測量

請問一下

RUN此程式在THD vi會出現下圖錯誤訊息, 
![](upload://aCXiiI5CY7Awt2y2XNh1LGedbP4.jpeg)


附加檔案的左邊response 2是使用swept sine所產生出來的訊號, 頻率範圍是20-20kHz, sampling frequency設定96000, 
為什麼使用THD+N是可以正常顯示波形, THD卻不行??



THD and THD+N_Test.vi

剛剛測試了一下
THD+N 可執行
THD   有錯誤
錯誤訊息為你顯示的結果

我試著用模擬訊號測試,仍然會出現錯誤
若根據錯誤訊息增加量測點數時,則可計算出來 
不知道是否 THD 這個vi的計算方式與 THD+N 的計算方式不同而造成的差異
THD 的輸入端資料要大,才可以計算得出來

參考看看是否對你有幫助

THD testing.vi


![](upload://kXwdRWVj5q5U9iAWRXKxX48wsyL.jpeg)

elvistu40356.5039583333

謝謝<span =“apple-style-span” style="font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; font-weight: bold; ">elvistu的建議

<span =“apple-style-span” style="font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; font-weight: bold; ">我還在想number of samples對於THD VI有什麼關係
<span =“apple-style-span” style="font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; font-weight: bold; ">
<span =“apple-style-span” style="font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; font-weight: bold; ">剛試了一下, number of samples要大於1700左右才可以run…

[QUOTE=garyO]謝謝<span style=“font-size: 12px; line-height: 18px; webkit-border-horizontal-spacing: 1px; webkit-border-vertical-spacing: 1px” =“apple-style-span”><span style=“font-weight: bold; font-size: 12px; color: rgb(0,0,0); font-family: verdana, arial, helvetica, sans-serif” =“bold”>elvistu的建議

我還在想number of samples對於THD VI有什麼關係

剛試了一下, number of samples要大於1700左右才可以run....

[/QUOTE]

其實我也不太了解 THD 主要的內容與計算方式
不過後來我發現,在Labview 裡面原本就有這個功能
路徑如下,不知道和你之前提供的 vi 計算結果與內容是否雷同
反而Harmonic Distorsion Analyser.vi,不會出現錯誤且可計算出 THD 值
參考一下

![](upload://2yflT4xQJbYfyxf6O8QEWfBhLB4.jpeg)


 

[QUOTE=elvistu][QUOTE=garyO]謝謝elvistu的建議

我還在想number of samples對於THD VI有什麼關係

剛試了一下, number of samples要大於1700左右才可以run....

[/QUOTE]

其實我也不太了解 THD 主要的內容與計算方式
不過後來我發現,在Labview 裡面原本就有這個功能
路徑如下,不知道和你之前提供的 vi 計算結果與內容是否雷同
反而Harmonic Distorsion Analyser.vi,不會出現錯誤且可計算出 THD 值
參考一下

[/QUOTE]

原PO使用USB-4431,應該是做聲音&振動測試, 如果是要量測聲音的THD+N 不建議使用LabVIEW內建的功能 應該使用sound & vibration toolkit中的THD+N量測功能, 或是自行撰寫, 主要差異在於聲音的THD+N只需計算到20KHz之內的諧波 不需計算到nyquist frequency, 對於一些特定的狀況下, 要計算到幾次諧波就足夠是一個問題, 對程式執行效率影響很大


[QUOTE=garyO]謝謝elvistu的建議

我還在想number of samples對於THD VI有什麼關係

剛試了一下, number of samples要大於1700左右才可以run…
[/QUOTE]

number of samples對於FFT運算的頻率解析度相關 個人推測當samples太少造成無法經由FFT運算的結果算出THD值時(換句話說 頻率解析度太差) 就會出現這個錯誤訊息 不過實際還是要由對FFT熟悉的人解答 學校學的我已經都忘光光了 :stuck_out_tongue:

謝謝大家的回覆  
小弟有詢問過電聲實驗室, 一般實驗室測試thd時,harmonic會設定5, 這是比較嚴謹的設定了, 產線設定3即可, 所以我目前是設定5....

小弟是用sound and vibration toolkit 7.0試用版的vi, 裡面的swept sine function, 查了資料關於number of samples設定, 似乎要在swept sine block duration.vi設定block duration參數, 小弟的認知是當此參數設定越小, 速度越快,取樣數小, 所以解析度會不好, ...  相反, 設定值越大, 速度慢, 取樣數多, 測到的值會比較準確....  不知道還有哪個設定跟number of samples有關係的???  

另外, 還是搞不太清楚settling time/cycle與integration time/cycle的使用方式, 

總之, 感覺整個問題似乎就是時間參數設定的好與不好...   


garyO40359.3935416667

[QUOTE=Ozzy]
原PO使用USB-4431,應該是做聲音&振動測試, 如果是要量測聲音的THD+N 不建議使用LabVIEW內建的功能 應該使用sound & vibration toolkit中的THD+N量測功能, 或是自行撰寫, 主要差異在於聲音的THD+N只需計算到20KHz之內的諧波 不需計算到nyquist frequency, 對於一些特定的狀況下, 要計算到幾次諧波就足夠是一個問題, 對程式執行效率影響很大
[/QUOTE]

原來如此
看來作聲音&振動測試時,Labview 內建的功能無法滿足這個需求
使用Sound & Vibration Toolkit 才可以
這部份又學到了
感謝Ozzy的說明


[QUOTE=garyO]
查了資料關於number of samples設定, 似乎要在swept sine block duration.vi設定block duration參數, 小弟的認知是當此參數設定越小, 速度越快,取樣數小, 所以解析度會不好, ...  相反, 設定值越大, 速度慢, 取樣數多, 測到的值會比較準確....  不知道還有哪個設定跟number of samples有關係的??? 
另外, 還是搞不太清楚settling time/cycle與integration time/cycle的使用方式,
總之, 感覺整個問題似乎就是時間參數設定的好與不好...  
[/QUOTE]


[/QUOTE]

你要不要先參考看看Sound & Vibration 的範例程式有關THD這個章節
名稱:SVXMPL_Amplitude Swept THD(DAQmx).vi ,如圖一所示

Number of samples 就小弟的認知,即為量測時輸入的點數
  此點數多與少則和頻率解析度有關,測試效果也如你所說的
  設定大,點數多,速度慢,數值較準
  設定小,點數少,速度快,數值較差一點
  其他和點數有關的設定就沒有了,接下來影響時間的就是取樣率
  不過以你的狀況,取樣率應該是固定的,主要是取樣點數的多少了

  另外,查看了Settling time/cycle 與 Integration time/cycle的說明
  不知道是否可以作底下的解釋:
 Settling time/ cycle :在量測開始前允許多長的時間進入,用來讓裝置達到穩定的時間
 Integration time/cycle:控制每一次量測的積分時間
  這部份可能要請高手來說明與討論
  > <
 

 ![](upload://xLW2JAqzrutHfPu5uQ1oai478BL.jpeg)

![](upload://nZP3XtfwdwE5fI2kAl8dVxVrypN.jpeg)

elvistu40359.4811805556

剛剛發現回覆的內容錯誤 請跳過這篇reply
Ozzy40359.9396412037

聲音信號量測建議還是使用4461, 試用過4431發現noise floor有點高, 同樣設定102.4K的Fs, 1KHz -40dB的test tone loopback (透過同軸電纜自己AO灌自己AI), 4431的THD+N約為80~85dB (rel. to 0dB)左右, 與4461的100~105dB的結果相比有點不足 (一般音效卡都說有90dB了), 如果只量測頻響、看瀑布圖與sensitivity還夠用, 要PK SNR與THD+N就略有不足了。

[QUOTE=DennyT]聲音信號量測建議還是使用4461, 試用過4431發現noise floor有點高, 同樣設定102.4K的Fs, 1KHz -40dB的test tone loopback (透過同軸電纜自己AO灌自己AI), 4431的THD+N約為80~85dB (rel. to 0dB)左右, 與4461的100~105dB的結果相比有點不足 (一般音效卡都說有90dB了), 如果只量測頻響、看瀑布圖與sensitivity還夠用, 要PK SNR與THD+N就略有不足了。[/QUOTE]

4461的analog out我沒試過 我手上的M-series某DAQ其analog out輸出品質一樣是不甚理想 使用Audio Precision SYS-2722來量測其analog out的THD+N竟然也只有負五十幾dB, 手邊其他稍微好一點的USB訊源在2.0Vrms輸出時THD+N都能達到-9XdB, 跟樓上的意見相同, 這種輸出品質拿來量測RMS或輸出功率還算ok, 噪音或失真就不行了, 所以在我手上的專案 DAQ卡的analog out基本上不用的, 因為一個可靠的USB訊源只需數千塊台幣 4461可是要十多萬台幣啊…

[QUOTE=DennyT]聲音信號量測建議還是使用4461, 試用過4431發現noise floor有點高, 同樣設定102.4K的Fs, 1KHz -40dB的test tone loopback (透過同軸電纜自己AO灌自己AI), 4431的THD+N約為80~85dB (rel. to 0dB)左右, 與4461的100~105dB的結果相比有點不足 (一般音效卡都說有90dB了), 如果只量測頻響、看瀑布圖與sensitivity還夠用, 要PK SNR與THD+N就略有不足了。[/QUOTE]

小弟有用過USB 4431這個產品
不過沒有使用過 THD 與 THD+N 這個功能 ( 不太知道這2者可以怎麼使用)

剛查了一下產品規格
THD 與 THD + N 效果約為 -84 dB max 以上
這樣子的結果,是指這張效果"不錯嗎"?? 還是指可以量測的能力呢??

![](upload://hOXs7D5znPE66MxuX71GagoK6Ar.jpeg)

小弟大概知道了, 我試了一下, 送出頻率點如下圖

使用SVXMPL_Swept Sine FRF (DAQmx).vi範例

下圖為20Hz時與使用waveform subset將其中分成兩個區段拿出來看


其中index 0,1為雜訊, 所以index2為起始頻率20Hz, 
若使用swept sine方式將每個波形存起來再去做THD+N OR SNR時, 低頻會不準,
就像上兩張圖依樣, 會被分成兩種頻率, 所以實際上偵測到的頻率是22.21Hz, 這又是另外一個問題了…  
先前PO的錯誤訊息是低頻的取樣點不足…    還在想怎嚜把低頻時間拉長(cycle多一點), 大於200Hz之後應該就依照原本的設定就可以了(因為cycle很多, 才可使用FFT運算)

SVXMPL_Swept Sine FRF (DAQmx).vi

SweptSineWave_Measurement_100712.vi


swept sine wave_100712.vi

小弟又試了一下, 增加cycle數到20左右, 取第2個波形到第18個波形來做SNR, 低頻20Hz~100Hz的SNR可以算出,但是超慢, 100Hz之後會越來越快得到SNR…  

當減少cycle數時, 就會出現取樣數不足錯誤訊息, 

可是每個波形都固定為20個cycle了, 怎嚜還是會計算很慢呢??  尤其是低頻部份

[QUOTE=garyO]
SweptSineWave_Measurement_100712.vi


swept sine wave_100712.vi

小弟又試了一下, 增加cycle數到20左右, 取第2個波形到第18個波形來做SNR, 低頻20Hz~100Hz的SNR可以算出,但是超慢, 100Hz之後會越來越快得到SNR…  

當減少cycle數時, 就會出現取樣數不足錯誤訊息, 

可是每個波形都固定為20個cycle了, 怎嚜還是會計算很慢呢??  尤其是低頻部份
[/QUOTE]

這種低頻時計算SNR or THD 很慢的狀況我遇過 後來是用subset FFT解決 也就是說只計算到一定頻率 超過就不管了
至於為何很慢 其實很好理解 如果你的測試訊號是1KHz 那你計算的頻率範圍最高也只有到20次諧波
若測試訊號是100Hz 但仍計算到20KHz的話 那就是要算到200次諧波
所以之前有其他人回應計算到第5~10次諧波就夠準了
剛剛發現有一個express vi: Distortion Measurement (非S&V toolkit) 可以指定計算到第幾次諧波 應該還滿好用的 可惜不能直接用來計算SNR

Hi,  Ozzy

我程式中的max harmonic是設定5, 20Hz~20kHz都OK…

現在卡在SNR低頻, 再找找看有沒有其他方法…  TKS