安捷伦or是德信号源+频谱仪操作: 从程控到自动测试 (四)平坦度检测的程控实现
安捷倫or是德信號(hào)源+頻譜儀操作:從程控到自動(dòng)測(cè)試(四)平坦度檢測(cè)的程控實(shí)現(xiàn)
一、概述
目前,對(duì)于射頻模塊的調(diào)試與測(cè)試,國(guó)內(nèi)大多數(shù)的廠商(特別是中小型企業(yè))均是通過(guò)最原始的手工調(diào)測(cè)方式,需要調(diào)試人員手動(dòng)設(shè)置和操作儀器(信號(hào)源和頻譜儀),并通過(guò)肉眼觀察儀器上的顯示數(shù)值并讀寫(xiě)分析模塊性能,來(lái)確定所調(diào)試的通信模塊是否符合指標(biāo)要求。
在射頻模塊的批量生產(chǎn)測(cè)試過(guò)程中,調(diào)試和測(cè)試人員需要通過(guò)重復(fù)的手動(dòng)操作儀器,進(jìn)行射頻模塊的指標(biāo)測(cè)試。上篇文章已經(jīng)介紹了如何實(shí)現(xiàn)互調(diào)檢測(cè)的程控及自動(dòng)測(cè)試[1],本文將對(duì)待測(cè)模塊平坦度檢測(cè)的程控及自動(dòng)測(cè)試的實(shí)現(xiàn)進(jìn)行介紹。
二、平坦度檢測(cè)
圖1給出了射頻待測(cè)模塊及計(jì)算機(jī)與信號(hào)源和頻譜儀的連接方式。從圖中可以看出,在信號(hào)源和頻譜儀都已經(jīng)進(jìn)行功率校準(zhǔn)之后,當(dāng)從信號(hào)源輸出功率為Pin 1(dBm)、頻率為f1的單音信號(hào)通過(guò)射頻線進(jìn)入待測(cè)模塊,再由射頻線和衰減器進(jìn)入頻譜儀時(shí),我們可以在頻譜儀中得到信號(hào)的峰值頻率為f1、峰值功率Pout 1(dBm),Pout 1 = Pin 1 + G。當(dāng)輸入信號(hào)頻率不同時(shí),在頻譜儀中觀察到的峰值頻率也將隨著輸入信號(hào)頻率的改變而變化,且峰值功率也會(huì)有偏差,而輸入連續(xù)頻率單音信號(hào)得到的輸出峰值功率之間的峰峰值(最大最小值)則稱為平坦度。
那么,接下來(lái)介紹使用信號(hào)源和頻譜儀進(jìn)行平坦度檢測(cè)的步驟:
1、 儀器校準(zhǔn)[1]完成后,按圖1所示連接待測(cè)模塊與信號(hào)源和頻譜儀,將信號(hào)源的中心頻率和功率設(shè)置到待測(cè)頻點(diǎn)和功率值(如:-50dBm);
2、 待測(cè)模塊上電,打開(kāi)射頻開(kāi)關(guān),輸出射頻信號(hào),判斷增益是否滿足指標(biāo);
3、 觀察頻譜儀中的峰值功率,并讀出峰值功率,調(diào)節(jié)信號(hào)源輸出功率,使得待測(cè)模塊輸出功率到達(dá)指定的功率值;
4、 將待測(cè)模塊輸出功率調(diào)節(jié)至指定的功率值后,設(shè)置信號(hào)源,使其輸出不同頻率的單音信號(hào);
5、 設(shè)置頻譜儀,將Trace設(shè)置為Max Hold,使得頻譜儀中可以固定顯示不同頻點(diǎn)的最大值;
6、 讀取頻譜儀中不同頻點(diǎn)的峰峰值,此差值即為待測(cè)模塊的平坦度。
三、平坦度檢測(cè)的程控實(shí)現(xiàn)
如何使用程控進(jìn)行平坦度檢測(cè)工作,從而提高測(cè)試人員操作效率?
分析以上互調(diào)檢測(cè)步驟,可以將信號(hào)源中心頻點(diǎn)和功率設(shè)置、頻譜儀峰值讀取、頻譜儀頻譜最大保持、頻譜峰峰值確定及差值計(jì)算等這些手動(dòng)操作儀器的步驟使用程控實(shí)現(xiàn)。(信號(hào)源和頻譜儀程控的實(shí)現(xiàn),請(qǐng)參考【VISA+SCPI實(shí)現(xiàn)安捷倫/是德信號(hào)源和頻譜儀的程控】)
本文中程控使用VISA+SCPI指令集實(shí)現(xiàn),操作界面使用C#實(shí)現(xiàn),實(shí)現(xiàn)方式還有其他的,可依據(jù)自身的熟悉程度進(jìn)行選擇。表1給出了信號(hào)源校準(zhǔn)程控指令及界面實(shí)例,頻譜儀的程控指令可參考https://download.csdn.net/download/qq_27424533/80233490,界面實(shí)例可與信號(hào)源一致。信號(hào)源的其他程控指令可參考https://download.csdn.net/download/qq_27424533/80233370。
四、平坦度的自動(dòng)化實(shí)現(xiàn)
當(dāng)理解并實(shí)現(xiàn)以上平坦度檢測(cè)的程控方式后,我們就具備了平坦度檢測(cè)自動(dòng)化實(shí)現(xiàn)的基礎(chǔ)。平坦度檢測(cè)的步驟在第二節(jié)中已經(jīng)介紹清楚了,平坦度檢測(cè)步驟中包括了指定功率輸出的自動(dòng)測(cè)試實(shí)現(xiàn),而指定功率輸出的自動(dòng)測(cè)試實(shí)現(xiàn)中則包含了增益計(jì)算的自動(dòng)實(shí)現(xiàn),那么怎么實(shí)現(xiàn)平坦度檢測(cè)的自動(dòng)化呢?本文中的平坦度檢測(cè)自動(dòng)化實(shí)現(xiàn)思路如下:使用程控指令將信號(hào)源頻點(diǎn)和功率值設(shè)置按步驟分別進(jìn)行,然后進(jìn)行增益計(jì)算和指定輸出功率的自動(dòng)實(shí)現(xiàn),保持信號(hào)源頻率不變,從開(kāi)始頻點(diǎn)到終止頻點(diǎn)循環(huán)設(shè)置信號(hào)源的頻點(diǎn),之后設(shè)置頻譜儀顯示最大保持,等待頻譜儀從開(kāi)始頻點(diǎn)到終止頻點(diǎn)顯示結(jié)束,確定峰峰值,最終程序?qū)⑤敵龃郎y(cè)模塊的增益和平坦度值。
以上平坦度測(cè)試方式存在一個(gè)問(wèn)題,即儀器校準(zhǔn)時(shí)只是將中心頻點(diǎn)的功率補(bǔ)償校準(zhǔn)了,其他頻點(diǎn)的補(bǔ)償都是按照中心頻點(diǎn)的補(bǔ)償值進(jìn)行的補(bǔ)償,此時(shí),則存在一個(gè)誤差值,這就導(dǎo)致檢測(cè)的平坦度具備一定的誤差。需要得到精確的平坦度值可以采用對(duì)各頻點(diǎn)進(jìn)行補(bǔ)償?shù)姆绞?#xff0c;但是該方法將使得測(cè)試時(shí)間過(guò)長(zhǎng),不利于批量測(cè)試。另外一種方法則是采用網(wǎng)絡(luò)分析儀進(jìn)行平坦度的測(cè)試。
五、平坦度的快速掃描測(cè)試實(shí)現(xiàn)
使用信號(hào)源+頻譜儀的方式得到精確的平坦度將耗費(fèi)很長(zhǎng)的時(shí)間,非常不利于批量測(cè)試。那么是否具備快速測(cè)試平坦度的方法呢,我們可以利用信號(hào)源自帶的頻點(diǎn)列表掃描模式,設(shè)置好開(kāi)始頻點(diǎn)和終止頻點(diǎn)、選定掃描點(diǎn)數(shù)、指定輸出功率,開(kāi)始掃描,即可使得信號(hào)源掃描輸出對(duì)應(yīng)頻點(diǎn)、指定功率的單音信號(hào)。頻譜儀的設(shè)置則按第二節(jié)中的步驟進(jìn)行,掃描完成后讀出峰峰值,即可得到平坦度。該方法避免了程序循環(huán)設(shè)置每個(gè)頻點(diǎn)的步驟,改由信號(hào)源列表掃描輸出,可節(jié)省大量時(shí)間,快速實(shí)現(xiàn)平坦度掃描測(cè)試。
給出部分代碼如下:
private void Button_PTDsweep_Click(object sender, RoutedEventArgs e) {if (parentWindow.Button_SGLAN.IsChecked == false || parentWindow.Button_PPLAN.IsChecked == false){parentWindow.LogDebug(LogMsgType.Outgoing, "與設(shè)備的網(wǎng)絡(luò)連接未建立,請(qǐng)先建立網(wǎng)絡(luò)連接!");return;}else{try{double step, fre, gain, PTD, p;if (TextBox_Pow.Text == ""){parentWindow.LogDebug(LogMsgType.Error, "功率值不能為空!");return;}if (CheckBox_PTD_5.IsChecked == true){p = Convert.ToDouble(TextBox_Pow.Text) - 5;}else{p = Convert.ToDouble(TextBox_Pow.Text);}fre = (Convert.ToDouble(TextBox_FreSta.Text) + Convert.ToDouble(TextBox_FreSto.Text)) / 2;parentWindow.PPCMDsend(string.Concat(":DISP:WIND:TRAC:Y:RLEV ", Convert.ToString(p + 10), "dBm"), "調(diào)整頻譜儀參考電平。");gain = GainCal(fre, ComboBox_FreDW.Text);if (PPPowJH(p, gain, out double PPp, out double sgp) == 0) return;parentWindow.LogDebug(LogMsgType.Normal, "平坦度自動(dòng)化測(cè)試開(kāi)始!");if (TextBox_SwePoin.Text == ""){step = 1000;}else{step = Convert.ToDouble(TextBox_SwePoin.Text);}PTD = SweepPTDJH(Convert.ToDouble(TextBox_FreSta.Text), Convert.ToDouble(TextBox_FreSto.Text), step);//TextBox_PTDERR.Text = Convert.ToString(PTD);TextBox_PTDERR.Text = PTD.ToString("N3");TextBox_gain.Text = gain.ToString("N2");parentWindow.LogDebug(LogMsgType.Normal, "平坦度檢測(cè)結(jié)束!");Button_PTDsweep.Visibility = Visibility.Collapsed;Button_ReadPTD.Visibility = Visibility.Visible;Button_OffSweep.Visibility = Visibility.Visible;Button_PTDMD.Visibility = Visibility.Visible;}catch{parentWindow.LogDebug(LogMsgType.Error, "平坦度檢測(cè)異常結(jié)束!");}} } public double SweepPTDJH(double Fsta, double Fsto, double step) {int delay;double mk1, mk2;parentWindow.ioArbSG.WriteString(string.Concat(":FREQ:STAR ", Fsta.ToString(), ComboBox_FreDW.Text));parentWindow.ioArbSG.WriteString(string.Concat(":FREQ:STOP ", Fsto.ToString(), ComboBox_FreDW.Text));parentWindow.ioArbSG.WriteString(string.Concat(":SWE:POIN ", step.ToString()));parentWindow.ioArbPP.WriteString(string.Concat(":FREQ:STAR ", Fsta.ToString(), ComboBox_FreDW.Text));parentWindow.ioArbPP.WriteString(string.Concat(":FREQ:STOP ", Fsto.ToString(), ComboBox_FreDW.Text));parentWindow.Button_SGRFONorOFF.IsChecked = true; //關(guān)閉信號(hào)發(fā)生器射頻if (CheckBox_PTDPlusTime.IsChecked == false){delay = 8 * (int)step;}else{delay = 12 * (int)step;}//開(kāi)啟掃描模式parentWindow.ioArbSG.WriteString(":FREQ:MODE LIST");Thread.Sleep(500);parentWindow.ioArbPP.WriteString(":TRAC1:TYPE MAXH");Thread.Sleep(delay);parentWindow.ioArbPP.WriteString(":CALC:MARK1:MAX");parentWindow.ioArbPP.WriteString(":CALC:MARK2:MIN");Thread.Sleep(300);mk1 = Convert.ToDouble(parentWindow.PPCMDread(string.Concat(":CALC:MARK1:Y?"), "頻譜儀Marker1功率為:"));mk2 = Convert.ToDouble(parentWindow.PPCMDread(string.Concat(":CALC:MARK2:Y?"), "頻譜儀Marker1功率為:"));Thread.Sleep(300);parentWindow.PPCMDsend(string.Concat(":DISP:WIND:TRAC:Y:RLEV ", Convert.ToString(mk1 + 2), "dBm"), "調(diào)整頻譜儀參考電平。");parentWindow.PPCMDsend(string.Concat(":DISP:WIND:TRAC:Y:PDIV ", Convert.ToString((Math.Round(mk1 - mk2) + 4) / 10), "dB"), "調(diào)整頻譜儀參考電平。");TextBox_PTDMax.Text = mk1.ToString();TextBox_PTDMin.Text = mk2.ToString();return mk1 - mk2; }總結(jié)
以上是生活随笔為你收集整理的安捷伦or是德信号源+频谱仪操作: 从程控到自动测试 (四)平坦度检测的程控实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js计算距离特定日期多少周多少天
- 下一篇: 这 5 个 APP 开源了!