打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
重力加速度测量系统
你要问我为什么我的电子设计主页会突然跳出来一个物理试验项目,这个``````我本来就是物理系的.哪天开一个物理试验个人主页,这个项目就搬过去了.
也不能说和嵌入式没有关系啦,本质上来说,我用嵌入式的知识完成了一个物理试验.
不管怎样,这个试验我做的很成功.自己弄的试验比在学校实验室拿液氮玩还要HIGH.
实验原理:
当物体自由落体时依次经过A,B,C三点,在这三点的速度分别用V0,V1,V2表示。A点和B点之间的距离为S1,B点和C点之间的距离为S2,物体通过S1的时间为T1,通过S2的时间为T2。
很容易的列出以下四个方程(g代表重力加速度):
V1=V0+g*T1
V2=V1+g*T2
2*g*S1=V1^2-V0^2
2*g*S2=V2^2-V1^2
四个未知数,四个方程。一串略微有点烦人的计算之后,我们可以得到用T1,T2,S1,S2表示的重力加速度:
g=(2*S1-2*S2*T2/T1)/(T2^2+T1*T2)
这也是我们要在程序中用到的计算公式。
试验记录:
开始的时候我考虑只用面包板来固定红外二极管,就是把红外二极管插在面包板上然后连线,原因是如果实验失败的话这样可以回收器件,而且我是一个懒人。但是很快我就发现这样行不通。红外发光二极管和接受二极管只有在很小的角度范围内才有效,并且面包板无法提供距离的精度。所以我只好放弃懒惰的天性,从红外二极管的印刷电路板开始制作。
为红外二极管做的印刷电路可以算是那时候我做的印刷电路板中质量最好的了。
经过两个半小时的等待之后,印刷电路的腐蚀完成。没有想到的是。我的噩梦从这里开始:把每一小块的印刷电路锯开几乎让我的手起了水泡,在几次的中断休息之后,总算是弄下来了三对印刷板,够实验用的了。我把还没有分开的两对板放到了书架上,因为这时候我的手几乎已经累的抬不起来了。你们可以从下面的图中看到印刷电路板的样子。经过钻孔,焊接之后,红外发射和接受二级管的电路部分就算完成的大半了。
左图是没有腐蚀过的印刷电路板。右图是将印刷电路板分开,钻孔,焊接后的样子,每一对都有一个红外发射管和红外接受管,黑色的是接受管,白色的是发射管。红外接受管在受到红外照射的时候,电路板上的输出脚为高电平,当没有红外光照射时输出脚为低电平。当然我们也可以将红外接受管和电源的极性反过来接,这样输出就和上面的情况相反。但是考虑到MCU的中断引脚是低电平有效,并且我们要检测的是红外线被遮断情况,所以还是用上述电路方便一些.
接下来需要将三对红外传感器固定在正确的位置上。我选择了将他们固定在合成木板上,实际上最理想的材料是铝合金板,因为它不像木板那样容易变形,并且能够提供较好的距离测量精度,但是加工起来也麻烦一些。从下面的照片可以看出固定好传感器的样子:
很简陋哦,不过很管用.
这时已经接入了电源和MCU。中间的黄色细线是用来确定垂直的准线。
现在我们要做的事已经很明确了,测出每两个传感器之间的距离,让一个物体自由落体时经过三个传感器。物体遮挡了红外光会引起输出引脚的低电平,低电平引起MCU的中断,通过中断可以计算出物体通过三个传感器之间的时间,用上面推出的公式:
g=(2*S1-2*S2*T2/T1)/(T2^2+T1*T2)
我们就可以求出重力加速度了。
但是在这之前,我们还必须测量二极管的延时。如果我们控制好每一步的误差,那么或许可以将测量结果精确到小数点后3~4位。
根据PT334-6B的data sheet
可以看到典型的延时为15us,但是由于发射二极管不是一厂配套的,而且实验电流大小也和器件手册有差异,所以我进行了测试来确定实际的延时时间。
红外二极管延时测试电路图(忘记画晶振电容…orz),红外接收管在电路中必须是反接的
测试按照以下的顺序进行:
1. 将P1.0置低电平(此时红外发射管点亮,INT0为高电平)
2. 初始化定时器
3. 将P1.0置高电平,开启定时器,此时红外发射管熄灭,INT0为低电平,中断出现
4. 读取计时器开启到程序转到中断子程序的延时时间.(这里包括程序转跳延时)
5. 将时间从TXD发送到LCD显示
6. 将中断延时减去程序转跳的延时,就可以得到红外二极管传感器的延时值。程序转跳延时可以用将P1.0直接接到INT0脚的方法检测,只要将上面检测红外延时的程序稍加修改就可以。也可以在调试程序的时候数一数INT0脚中断有效以后经过多少个机器周期程序可以转跳到中断子程序。前一种会比后一种多测出一个机器周期的时间,无论如何,P1.0拉至低电平也需要1us的时间。
最后测试的结果比预期的要好得多,减去中断程序的转跳时间以后得出的红外器件延时典型值只有6us~7us。在最后的测量重力加速度程序中,我取了6us的时间作为器件延时时间加以修正。
重力加速度的测试电路(这次没有忘记画电容):
红外接受管的输出端分别接INT0,INT1,TI,用两个外部中断和一个计数器中断来检测物体经过三个传感器间的时间。将三个传感器的低电平检测输出端都接到一个外部中断上在程序上并没有什么问题,只要设定一个标志位,检查是第几次中断就可以了。实际上最初我也是这样做的,问题在于红外接受传感器的限流电阻被串联以后低电平的输出值升高到了1.90V以上,这已经不能引起MCU的中断。在选择电阻的时候我没有考虑到这一点,所以只有将三个中断源分开接入INT0,INT1,T1。
程序按照以下的步骤进行:
1.初始化中断设定,定时器设定。T1为计数,初始值为0xffff,T0为计时,初始值为0x3cb0(计时时间50000)
2.物体经过第一个传感器,引起INT0脚的低电平中断,转到中断子程序后开启定时器0,计时开始,这里必须考虑器件的延时还有中断程序的转跳时间。
3.物体经过第二个传感器,引起INT1脚低电平中断,中断程序读取第一阶段测得的时间,并重新将计时器初始化开启。这里同样要考虑器件的延时还有中断转跳的时间。
4.物体经过第三个传感器,读取第二阶段的时间,计算g值并输出显示,(当然还是要考虑器件的延时还有中断转跳的时间)
用游标卡尺测量红外传感器之间的距离为S1=126.92mm,S2=126.86mm
现在总算可以开始实际的测试了,因为最初制作LCD显示器的时候只使用了一个晶振11.0592Mhz,没有切换开关可以选择其他晶振,当时是考虑和计算机串口的连接,11.0592Mhz的串口波特率设定比12Mhz方便的多。在这个实验中要使实验板测量重力加速度的S51芯片和LCD显示器可以通信显示测量值,只有让其也使用11.0592Mhz晶振。带来的麻烦就是每一个机器周期的对应时间不是恰好1us,而是1.08506944uS。浮点数运算的修正或多或少的会带来一些误差。
第一组的g测量值平均在9.85左右,略微高了一点点,(让物体从三个传感器之间自由落体而不接触到其他东西,实在是一件不容易的事,我花了2个半小时才得到了第一次的50个测量数据。)仔细检查仪器的各项误差之后,确定误差来自传感器距离的测量,因为木板有一定的弹性,我担心会造成形变所以没有将游标卡尺卡的很紧来测量。考虑这一点,我将两个距离值都减去0.5mm作为修正(考虑到物理充满猜测的发展历史,这样的修正在心理上和客观上还是可以接受的)。所以最后所用的距离值为S1=126.42mm,126.36mm。
第二次g的测量值:
9.838498
9.773546
9.78011
9.794054
9.786588
9.782136
9.806236
9.782795
9.807063
9.778265
9.791276
9.778109
9.787209
9.774172
9.817241
9.83887
9.776719
9.808099
9.782123
9.778573
9.847623
9.808319
9.781631
9.807031
9.828405
9.802037
9.850767
9.792334
9.809337
9.796418
9.820665
9.807605
9.793157
9.784277
9.80807
9.81945
9.797653
9.787334
9.779643
9.80017
9.795166
9.788282
9.788924
9.790212
9.774526
9.819472
9.811383
9.780959
9.790766
9.785037
9.808795
9.785756
9.809343
9.845667
9.793387
9.785438
9.803263
9.806215
9.805704
9.818148
9.784783
9.839378
9.816052
9.779141
9.789266
9.791427
最后的平均值是:9.799547,对比9.80665的标准值,考虑到所有的测量仪器都是手工制作,这个结果还是令人相当满意的。当然还可以进一步修正一下距离的测量值,但是再一次这样做已经完全没有意义了。
那么,重力加速度的测量实验到这里结束。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
深度解析红外测距技术
TOF
求问自制光电开关所需哪些零件?
基于手机传感器的动摩擦力因数实验
光电传感器工作原理(红外线光电传感器原理)
用数字万用表测量鉴别红外发射及接收二极管
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服