时域测试技术综合实验报告书
实验名称 时域波形的参数测量实验
班级 一班 学号 201422070125 姓名 杨梅
实验时间: 年 月 日 得分:
一、 实验目的
1.学习VISUAL DSP++开发流程。
2.掌握波形时域参数(周期、上升时间等)的测量方法。
3.掌握波形幅度参数(幅度、平均值、均方根值等)的测量方法。
4.掌握参数统计的一般实现方法。
二、 实验内容
1.学习Visual DSP++的开发设计流程。
2.编写程序测量波形参数。
3.编写程序对波形参数进行统计运算。
三、 实验步骤
1、计算并显示示波器幅度参数:平均值、有效值。打开Ypara.c源文件,填充缺少的代码。
int GetAverage(short *pBuffer, int Length)
{
int Sum=0;
int i;
for (i=0; i<Length;/*input your code*/ i++)
{
Sum += *pBuffer;/*input your code*/
pBuffer++;
}
return Sum/Length;/*input your code*/
}
float GetRMS(short *pBuffer, int Length, int ZeroValue)
{
float Sum=0;
int i;
for (i=0; i<Length; i++)
{
long temp;
temp =pBuffer[i] - ZeroValue;/*input your code*/
temp *= temp ;/*input your code*/
Sum += temp;
}
Sum /= Length;
return sqrt(Sum)+ZeroValue;
/*input your code*/
}
2、计算并显示示波器幅度类参数:顶值、底值。打开Ypara.c源文件,填充缺少的代码。
int GetTop(short *pBuffer, int Length)
{
short midpoint, toppoint, i;
midpoint=GetAverage(pBuffer,Length);
toppoint= GetMax();
i=toppoint;
GetCount(*pBuffer, Length);
do
{
i--;
if (tmpbuffer[i]>tmpbuffer[toppoint])
toppoint=i;
}while(i>midpoint);
//修正
if (tmpbuffer[toppoint]<Length*0.05)
toppoint= GetMax();
return toppoint;/*input your code*/
//return 1;
}
int GetBase(short *pBuffer, int Length)
{
short midpoint, basepoint, i;
midpoint=GetAverage(pBuffer, Length);
basepoint= GetMin();
i=basepoint;
GetCount(*pBuffer, Length);
do
{
i++;
if (tmpbuffer[i]>tmpbuffer[basepoint])
basepoint=i;
}while(i<midpoint);
//修正
if (tmpbuffer[basepoint]<Length*0.05)
basepoint= GetMin();
return basepoint;
/*input your code*/
//return 1;
}
3、计算并显示示波器时间类参数:上升时间。打开Xpara.c源文件,填充缺少的代码。
int GetRising(short *pBuffer, int Length, int yPer10, int yPer90, int *pxPer10, int *pxPer90)
{
int Index=0;
while (Index < Length && pBuffer[Index] > yPer10 /*input your code*/ )
Index++;
while (Index < Length && pBuffer[Index] <=yPer10 /*input your code*/ )
Index++;
int xPer10=0;
if (Index < Length)
xPer10 = Index;
while (Index < Length && pBuffer[Index] <yPer90 /*input your code*/)
Index++;
int xPer90=0;
if (Index < Length)
xPer90 = Index;
*pxPer90 = xPer90;
*pxPer10 = xPer10;
return 1;
}
3、对代码进行测试(打开参数测量功能),并填写如下表格:
4、新建文件Statistic.c和Statistic.h,并将其加入工程中。在Statistic.c文件中对平均值和周期两个参数进行统计运算,并填写如下表格。
(1) 在Statistic.c文件中的参数统计算法:
int GetAverage(short *pBuffer, int Length)
{
int Sum=0;
int i;
for (i=0; i<Length;/*input your code*/ i++)
{
Sum += *pBuffer;/*input your code*/
pBuffer++;
}
return Sum/Length;/*input your code*/
}
int GetPeriod(short *pBuffer, int Length, int yPer10, int yPer90, int *pxFirst, int *pxLast)
{
int FirstR10, FirstR90, FirstMid;
GetRising(pBuffer, Length, yPer10, yPer90, &FirstR10, &FirstR90);
FirstMid=(FirstR10 + FirstR90) / 2;
int FirstF10, FirstF90, SecondMid;
GetFalling(pBuffer, Length, yPer10, yPer90, &FirstF10, &FirstF90);
SecondMid=(FirstF10 + FirstF90) / 2;
int Third10, Third90, ThirdMid;
if (FirstMid > SecondMid)
{
GetFalling(pBuffer+FirstR90, Length-FirstR90, yPer10, yPer90, &Third10, &Third90);
*pxFirst= SecondMid;
ThirdMid=(Third10 + Third90) / 2 + FirstR90;
}
else
{
GetRising(pBuffer+FirstF10, Length-FirstF10, yPer10, yPer90, &Third10, &Third90);
*pxFirst= FirstMid;
ThirdMid=(Third10 + Third90) / 2 + FirstF10;
}
*pxLast = ThirdMid;
return 1;
/*input your code*/
*pxFirst= 50;
*pxLast = 100;
return 1;
}
(2) 实验表格
四、 实验思考题
1、如何提高波形测量的精度?
答: 主要有两种方法,其一是减少测频量化误差,即增加测量时间(主门时间)的方法;其二是减小侧周量化误差,即采用多周期测量法,在这里不再赘述。此外,为了提高测量的准确度,比较常用的方法还有游标法、内插法、平均测量技术、多周期同步测量法、相检宽带测频技术以及量化时沿法。
2、完善波形周期、幅度值的测量算法。
答:int GetPeriod(short *pBuffer, int Length, int yPer10, int yPer90, int *pxFirst, int *pxLast)
{
int FirstR10, FirstR90, FirstMid;
GetRising(pBuffer, Length, yPer10, yPer90, &FirstR10, &FirstR90);
FirstMid=(FirstR10 + FirstR90) / 2;
int FirstF10, FirstF90, SecondMid;
GetFalling(pBuffer, Length, yPer10, yPer90, &FirstF10, &FirstF90);
SecondMid=(FirstF10 + FirstF90) / 2;
int Third10, Third90, ThirdMid;
if (FirstMid > SecondMid)
{
GetFalling(pBuffer+FirstR90, Length-FirstR90, yPer10, yPer90, &Third10, &Third90);
*pxFirst= SecondMid;
ThirdMid=(Third10 + Third90) / 2 + FirstR90;
}
else
{
GetRising(pBuffer+FirstF10, Length-FirstF10, yPer10, yPer90, &Third10, &Third90);
*pxFirst= FirstMid;
ThirdMid=(Third10 + Third90) / 2 + FirstF10;
}
*pxLast = ThirdMid;
return 1;
/*input your code*/
*pxFirst= 50;
*pxLast = 100;
return 1;
}
int GetAmplitude(short *pBuffer, int Length)
{
return GetTop(pBuffer, Length)-GetBase(pBuffer, Length);
}
五、 实验结果分析与总结
(1)系统的噪声水平、和被测信号的信噪比对波形参数测量的精度有直接的影响,通过参数统计功能可以减小噪声对参数测量的影响。
(2)脉冲波形的顶值、低值非常重要,幅度、上升时间、脉宽等其他波形参数的都依赖于顶值和低值。
(3)对正弦波、三角波而言,其顶值、低值就是最大和最小值。
【注意:每次完成实验后,按上面的格式手写并上交实验报告。】
第二篇:4螺纹参数测量实验报告
实验三、用万能工具显微镜测量螺纹主要参数
一、实验目的
1、了解万能工具显微镜的测量原理及结构特点。
2、掌握用万能工具显微镜测量外螺纹中径,螺距和牙型半角的方法。
二、实验设备:万能工具显微镜
测角目镜,顶尖,曲轴
三、测量原理
影像法测量外螺纹中径,牙型半角和螺距。
四、实验步骤
1、利用调焦杆进行调焦;
2、擦净仪器被测螺纹,将工件小心地安装在两顶尖之间,拧紧顶尖的固紧螺钉
4、根据被测螺纹的尺寸,调节光澜。
5、调节立柱倾斜一个个螺旋升角角度
6、测量螺纹主要参数:
(1)测量中径 = =
取两者的平均值作为实际中径:
=
图 1 图 2
(2) 测量牙型半角
(Ⅰ)= (Ⅱ)= (Ⅲ) = (Ⅳ)=
按下述方式处理:
= =
(3) 测量螺距
= =
取它们的平均值作为螺纹n个螺距的实际尺寸:
图 3
n个螺距的累积偏差为:
思 考 题
1. 用影象法测量螺纹时,立柱为什么要倾斜一个螺旋角ψ?
2. 用工具显微镜测量外螺纹的主要参数时,为什么测量结果要取平均值?