位移测量装置设计报告文档格式.docx
- 文档编号:7133281
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:24
- 大小:250.25KB
位移测量装置设计报告文档格式.docx
《位移测量装置设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《位移测量装置设计报告文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
1.激励电路分析与设计
(1)正弦波信号产生模块
在正弦波产生模块,我们用MAX038芯片设计了一个正弦波信号发生器,其电路图如图3所示。
信号产生级的核心器件为MAX038,它的输出波形由波形设定端A0、A1控制,将这两个端口全部接高电平,这样它的输出就只有正弦波一种波形。
MAX038的输出频率F0由Iin,FADJ端电压和主振荡器COSC的外接电容器CF三者共同决定。
外接电容器用一个1nF的电容,则输出频率可达到10KHZ-1MHZ范围内任一值。
通过调节电位器RP1和RP2就可以得到题目所需的100KHZ的信号,RP1为粗调,RP2为细调。
为简化电路,将DADJ端接地,使波形的占空
比固定为50%.
(2)差分输出电路
按照题目意思,我们采用THS4503设计差分输出电路。
电路图如图4。
THS4503是TI公司的一款高性能的全微分放大器芯片,14脚运行时为40MHZ的通频带,完全能满足题目要求。
2.测量电路分析、设计与计算
差分输出的信号经线性可变差动变压器的L1通过磁棒耦合到L2、L3,经过放大、整流滤波后,由信号采集模块采集并送入单片机进行处理。
单片机控制电机的正反转来使磁棒上下移动,从而使L2、L3两路信号的电压相对于0点(两路信号的电压幅值相等相位相反)时的幅值产生相应的偏差。
由于得到的电压差值很小,所以需要采用OP37放大器对输出电压放大后再对信号进行处理。
而要得到d值,则要将交流变成直流,在此我们采用半波整流。
整流之后,采用一个100uF的电解电容滤除杂波。
线性可变差动变压器中磁铁与线圈对输出电压幅值的控制:
通过试验及相关经验,我们选择变压器的L1、L2、L3分别绕直径为0.13mm的漆包线100圈。
其具体步骤为:
用塑料管作为线圈的骨架,将漆包线分为两层紧密不重叠的绕在塑料管上,第一层分为L2和L3,在L2与L3的交界点引出两根接地线(中心轴头),第二层为L1且必须注意L2和L3的绕制位置应严格对称于L1的中心位置。
电机驱动磁铁部分采用顶杆与螺帽来驱动磁棒移动,利用单片机控制电机的正反转来控制螺帽在顶杆上滑动并带动套筒向上或向下运动。
磁棒与顶杆通过绝缘材料相连,由磁铁在线圈中移动时磁通量的变化来控制耦合能量的大小,从而也就控制了输出电压的幅值。
在具体测量前,先通过实验在绝缘板上标出一个零点,零点位置必须满足L2、L3两端的对地电压幅值相等相位相反。
(1)放大、整流滤波电路
这部分放大电路我们采用OP37芯片,电路图如图5。
由电路图可知,OP37的放大倍数可以通过调节电位器来改变。
整流滤波电路很简单,由一个1N4148二极管
和一个100uF的电容构成。
(2)数据采集模块
单片机通过对A、B两点电压信号的处理即可得出位移量,因此在A、B两点后面应接一个模数转换的模块,考虑到接两片ADS7886不仅电路复杂,而且占用单片机端口过多,我们采用一片ADS7886加一个模拟开关来代替两片ADS7886,电路图如图6。
3.数据处理原理分析
信号经过放大、整流滤波后,我们采用ADS7886和模拟开关CD4051组成的数据采集模块进行电压采样,并将采样得到的数据传输到单片机进行处理。
为了能够显示位移量,我们先测试大量磁棒移动与L1、L2两端电压变化的数据,然后通过MATLAB软件中最小二乘法得到两段拟合曲线(如图7),分析该曲线,我们可以从中可以得到一个算法,然后在单片机中用软件实现该算法就能很好处理数据,从而实现实时显示位移量。
图7第一段曲线
图8第二段曲线
通过上面曲线得到的算法可以让精度保证在2mm以内,数据如下:
第一段误差:
Columns1through13
-1.5141-0.8555-0.62160.15040.48070.44090.68211.03650.89200.73100.10450.3188-0.2564
Columns14through25
-0.7835-0.3784-0.6542-0.4569-0.37520.09350.79200.2206-0.96650.0863-0.84891.6817
第二段误差:
table=
-0.24270.17250.2447-0.0383-0.2787-0.08360.2217-0.42310.7845-0.6778-0.3390
三、系统软件设计及流程图
整个系统软件控制的地方并不多,主要是控制电机运行来改变磁棒的位置,控制模拟开关和A/D转换采样数据。
系统软件流程图如图9。
四、系统测试
1.测试仪器
万用表,示波器,带刻度的磁棒。
2.测试方法
将整个系统组装好,开启电源,用示波器在C点测试输出波形,看正弦波是否失真。
在A、B两点分别用万用表测量两点输出电压。
用单片机控制电机的转速,使得磁棒按一定精度移动,记录液晶显示的数据,并记下磁棒上刻度显示的实际位移。
通过键盘,在测量范围内任意输入一个值,通过单片机控制电机转速,使磁棒移动到相应的位置,记录输入数据和磁棒刻度显示的实际值。
3.测试数据分析和结论
(1)差动变压器输出信号失真度的测试(测试点为C点)
测量对象
输入信号
输出信号
误差
幅值
2V
12.6V
相位
0º
频率
100KHZ
98.2KHZ
1.8KHZ
(2)A、B两点输出电压的测试及显示的d值。
A点直流信号UA/V
B点直流信号UB/V
D值的显示值
1.151
0.832
0.319
0.702
0.799
-0.1205
0.767
1.279
-0.3152
0.623
1.975
-0.5941
0.696
2.14
-0.5550
0.934
2.08
-0.4050
1.032
1.175
-0.1950
(3)测量的位移范围
测量的电压
显示的电压
d
0.763
0.831
-0.1111
0.770
0.802
0.0783
0.789
0.778
0.0570
0.995
0.879
0.0526
1.076
0.876
0.0819
1.112
0.862
0.1169
1.176
0.864
0.1514
测试结果分析:
通过以上数据可以看出,整个系统实现了基本部分和发挥部分的要求,数据还存在一定的误差,误差产生的原因主要有以下几个方面:
耦合线圈的绕制不够精细;
测量时仪器精度的误差;
外界干扰等。
本系统实现了单片机精确控制电机旋转带动磁棒移动,从而改变变压器副边电压的功能,还实现了单片机对数据的精确处理测量位移的功能。
本设计创新之处在于通过MATLAB中最小二乘法分析数据,并从中找出相关规律,便于实现软件算法对数据的精确控制。
然而在制作工艺方面如耦合线圈的绕制方面还存在不足。
如果时间允许,我们将会进一步完善整个系统。
附录
1.元件清单
元件名称
数量
电容
102
1
电位器
20K
103
4
50K
104
10
100K
电阻
10K
3
In4148二极管
2
510
MAX038芯片
OP37芯片
THS4503芯片
ADS7886芯片
CD4501模拟开关
L298N
12864液晶
MSP430
键盘
2.整体电路图
3.主函数程序
#include"
msp430x22x4.h"
ADS7886.h"
JM12864.h"
ADS7886.c"
JM12864.c"
key.c"
key.h"
#defineABDIRP3DIR
#defineABOUTP3OUT
#defineABBIT3
#definesetAP3OUT|=BIT3
#definesetBP3OUT&
=~BIT3
//----------------------------------
intgo();
voidback();
voidstop();
unsignedintA();
unsignedintB();
voidCLK_INIT(void);
unsignedintAD_Data_ACompositor(void);
unsignedintAD_Data_BCompositor(void);
voidLCD_Display_Delay(unsignedintdtime);
unsignedintAD_DATA_A[7]={0};
unsignedintAD_DATA_B[7]={0};
unsignedintd_DATA[7]={0};
unsignedintDATA[7]={0};
unsignedchardisplayA[5]={0,'
.'
0,0};
unsignedchardisplayB[5]={0,'
unsignedchardisplay_data[7]={0,'
0,0,0,0};
unsignedchardisplay_Ddata[5]={0,0,'
unsignedcharset_Data[3]={0,0};
intAdata,Bdata,Data,averaged,averageD;
unsignedintad_count=0;
floataverageA,averageB;
floatddata,vdata;
floatk,l;
floatdata,Ddata;
unsignedintd();
unsignedintD();
unsignedintdCompositor(void);
unsignedintDCompositor(void);
unsignedintdSampling();
unsignedintDSampling();
intmain(void)
{
P2DIR|=BIT4+BIT5;
P2OUT&
=~0X30;
P3DIR|=BIT3;
unsignedinti,w;
unsignedinty;
WDTCTL=WDTPW+WDTHOLD;
ADS7886_DIR|=ADS7886_CS+ADS7886_SCLK;
CLK_INIT();
LCD_Init();
for(i=0;
i<
100;
i++)
{
LCD_Clear();
LCD_Writestring(2,1,"
位移测量装置"
);
LCD_Display_Delay(500);
}
while
(1)
{
y=value();
w=y;
for(;
w>
0;
w--)
{go();
}
k=A();
l=B();
if(k>
l)
{d();
if(k<
=l)
vdata=(l-k)/(k+l);
averaged=(10000*vdata);
display_data[0]=averaged/10000;
display_data[2]=(averaged%10000)/1000;
display_data[3]=(averaged%1000)/100;
display_data[4]=(averaged%100)/10;
display_data[5]=averaged%10;
display_data[0]+=0x30;
display_data[2]+=0x30;
display_data[3]+=0x30;
display_data[4]+=0x30;
display_data[5]+=0x30;
LCD_Writestring(3,0,"
d=-"
LCD_Writestring(3,2,display_data);
LCD_Writestring(3,7,"
"
Data=averageA+averageB;
display_Ddata[0]=0;
display_Ddata[1]=0;
display_Ddata[3]=0;
display_Ddata[4]=0;
display_Ddata[0]+=0x30;
display_Ddata[1]+=0x30;
display_Ddata[3]+=0x30;
display_Ddata[4]+=0x30;
set_Data[0]=y/10;
set_Data[1]=y%10;
set_Data[0]+=0x30;
set_Data[1]+=0x30;
LCD_Writestring(2,0,"
A="
LCD_Writestring(2,1,displayA);
LCD_Writestring(2,3,"
V,"
LCD_Writestring(2,4,"
B="
LCD_Writestring(2,5,displayB);
LCD_Writestring(2,7,"
V"
LCD_Writestring(1,0,"
请输入位移:
"
LCD_Writestring(1,6,set_Data);
LCD_Writestring(1,7,"
mm"
LCD_Writestring(4,0,"
位移量"
LCD_Writestring(4,4,display_Ddata);
LCD_Writestring(4,7,"
mm"
}
//-------------------------------------
voidCLK_INIT(void)
{
unsignedintn;
BCSCTL1=CALBC1_16MHZ;
DCOCTL=CALBC1_16MHZ;
do
IFG1&
=~OFIFG;
for(n=5000;
n>
n--);
}while(OFIFG&
IFG1);
//------------------------------------
unsignedintAD_Data_ACompositor(void)
unsignedintmaxA;
unsignedintminA;
unsignedintSumA=0;
unsignedinti;
maxA=AD_DATA_A[0];
7;
i++){
if(AD_DATA_A[i]>
maxA)
maxA=AD_DATA_A[i];
//取出最大值
minA=AD_DATA_A[0];
if(AD_DATA_A[i]<
minA)
minA=AD_DATA_A[i];
//取出最小值
SumA+=AD_DATA_A[i];
//累计值
SumA=SumA-maxA-minA;
//排除最大最小值
return(SumA);
unsignedintAD_Data_BCompositor(void)
unsignedintmaxB;
unsignedintminB;
unsignedintSumB=0;
maxB=AD_DATA_B[0];
if(AD_DATA_B[i]>
maxB)
maxB=AD_DATA_B[i];
minB=AD_DATA_B[0];
if(AD_DATA_B[i]<
minB)
minB=AD_DATA_B[i];
SumB+=AD_DATA_B[i];
SumB=SumB-maxB-minB;
return(SumB);
//----------------------------------------------------------
voidLCD_Display_Delay(unsignedintdtime)
unsignedinti,j;
dtime;
for(j=0;
j<
j++);
intgo()
{P2OUT|=BIT4;
keyout&
=~BIT4;
return(0);
voidback()
10;
P2OUT|=BIT5;
=~BIT5;
voidstop()
{P2OUT&
=0xcf;
unsignedintA()
for(n=0;
n<
50;
n++)
P3OUT&
=~BIT3;
AD_DATA_A[ad_count]=AD_SamplingA();
ad_count+=1;
if(ad_count==7)
ad_count=0;
Adata=AD_Data_ACompositor();
averageA=Adata/5;
averageA=averageA*3830/0xfff-260;
displayA[0]=(unsignedint)averageA/1000;
displayA[2]=(((unsignedint)averageA%1000)/100);
displayA[3]=(((unsignedint)averageA%1000)%100/10);
displayA[0]+=0x30;
displayA[2]+=0x30;
displayA[3]+=0x30;
}
return(averageA);
unsignedintB()
unsignedintr;
for(r=0;
r<
r++)
P3OUT|=BIT3;
AD_DATA_B[ad_count]=AD_SamplingB();
if(ad
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 位移 测量 装置 设计 报告