數字存儲示波器的設計
垂直靈敏度 | 50mV/div | 0.1V/div | 0.5V/div | 1V/div |
量程(V) | ||||
通道總增益 | ||||
Div序號 |
表1
⑵ 給定掃描速度為200u/div,則采樣時間TS =200u×10 =2000u=2ms,由于滿屏采樣點數固定為25000點,所以由FS×TS <25000,可得到FS < 12.5M 。由于提供的時鐘沒有12.5M,因此可選擇最接近的10MHZ作為采樣時鐘。
Timebase序號 | ||||
tdiv(s) | 0.1u/div | 1u/div | 10u/div | 100u/div |
采樣時鐘(HZ) | ||||
Timebase序號 | ||||
tdiv(s) | 500u/div | 1m/div | 10m/div | 1s/div |
采樣時鐘(HZ) |
表2
圖7 示波器軟件流程圖
設計中可參考的CVI軟件和實驗軟件平臺提供的主要函數如下表所示:
(1) | 函數功能 | EPP接口初始化 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數原型 | void epp_init(void) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸入參數 | 無 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸出參數 | 無 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回值 | 無 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(2) | 函數功能 | 返回控件的當前值 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數原型 | int GetCtrlVal (int panelHandle, int controlID, void *value) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸入參數 | panelHandle - 內存當中的面板句柄,即為控件所在面板的句柄值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸出參數 | value 返回的控件當前值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回值 | 0 -成功 其他值-失敗 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(3) | 函數功能 | Ain1和Ain2采集過程控制 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數原型 | int sampling ( unsigned char coupling1_cw, int div1, int DC1_code,unsigned char coupling2_cw, int div2, int DC2_code,int timebase, unsigned chartri, int sampling_points,int Panel_Handle, int stop_ID, unsigned char ain1_data[], unsigned char ain2_data[],double *show_pots) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸入參數 | coupling1_cw,coupling2_cw == Ain1,Ain 2通道的耦合方式控制字
DC1_code,DC2_code == Ain1,Ain 2通道的垂直偏置,取值范圍10~4095
tri == 觸發(fā)源選擇 0:時鐘CLK1 3: 外部信號 4:內部DDS1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸出參數 | ain1_data[] == Ain1的采集值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回值 | 0-采集成功;輸出值有效 |
(4) | 函數功能 | 由enable_timer( )函數調用來設置定時器啟動,實現(xiàn)循環(huán)采集 |
函數原型 | int SetCtrlAttribute (int panelHandle, int controlID, int controlAttribute, ...) | |
輸入參數 | panelHandle - 內存當中的面板句柄,即為控件所在面板的句柄值 | |
輸出參數 | 無 | |
返回值 | 0 -成功 其他值-失敗 | |
(5) | 函數功能 | 采集數據處理-根據采集的參數設置,計算信號的頻率,峰峰值,平均值和有效值 |
函數原型 | int processing_data (unsigned char data[], int points, unsigned char coupling_cw, int div,int timebase, double *signal_fr, double *vp, double *vm, double *ve) | |
輸入參數 | data[ ] - 采集數據存放數組 | |
輸出參數 | signal_fr== 信號頻率Hz | |
返回值 | 0 -OK ,輸出值有效 | |
(6) | 函數功能 | 在圖形控件上顯示波形 |
函數原型 | int PlotWaveform (int panelHandle, int controlID, void *yArray, int numberOfPoints, int yDataType, double yGain, double yOffset, double initialX, double xIncrement, int plotStyle, int pointStyle, int lineStyle, int pointFrequency, int color) | |
輸入參數 | panelHandle - 圖形控件所在面板的句柄值 | |
輸出參數 | 無 | |
返回值 | 整數 代表所繪圖形的句柄 |
5.3 在電子測量實驗箱中示波器硬件提供32K存儲深度的基礎上設計波形存儲、回放功能
在5.2節(jié)設計的虛擬存儲示波器面板上有兩個命令按鈕(Command)控件,如圖6所示,保存波形(保存按鈕)調用ArrayToFile()函數,打開波形文件(打開按鈕)調用FileToArray()函數,波形的顯示調用PlotWaveform()函數,以上函數均由CVI軟件提供,可直接使用。
6.1 雙蹤顯示波形的觀測
由兩臺函數信號源分別產生兩路電壓信號,一個產生幅度為5V,頻率為5KHz的正弦波,另一個產生幅度為3V,頻率為5KHz的三角波,從設計的虛擬數字存儲示波器進行雙蹤顯示,并畫出波形。
畫信號一波形:畫信號二波形:
6.2由函數信號源產生一個頻率為5KHz,幅度變化(有效值)如下表的正弦波,利用設計的虛擬數字示波器進行有效值測量。
標準信號(V) | 0.25 | 0.5 | 2.5 | 5 |
通道1(Ain1)(V) | ||||
通道2(Ain2)(V) |
6.3由函數信號源產生一個幅度為5V,頻率變化如下表的正弦波,利用設計的虛擬數字示波器進行頻率測量。
標準信號(KHZ) | 0.01 | 0.1 | 0.5 | 1.0 | 5.0 | 10.0 | 50.0 | 100.0 | 1000.0 |
通道1(Ain1)(KHZ) | |||||||||
通道2(Ain2)(KHZ) |
七、思考和練習題
1.能否用一個帶寬為20MHz的示波器觀測重復頻率為15MHz的正弦波和方波?為什么?
2.利用示波器測量各種波形參數時,你如何減小其測量誤差?
3.測量方波的上升和下降時間可以有哪些方法?
評論