数字存储示波器的设计
垂直灵敏度 | 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 == 触发源选择 0:时钟CLK1 3: 外部信号 4:内部DDS1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
输出参数 | ain1_data[] == Ain1的采集值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回值 | 0-采集成功;输出值有效 |
(4) | 函数功能 | 由enable_timer( )函数调用来设置定时器启动,实现循环采集 |
函数原型 | 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节设计的虚拟存储示波器面板上有两个命令按钮(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.测量方波的上升和下降时间可以有哪些方法?
评论