自制光电门做物理实验,本文主要内容关键词为:电门论文,物理实验论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
光电门是物理实验室的标准配置,利用光电门与毫秒计时器配合可以测量物体速度。本人在教学中发现,利用淘汰的串行接口鼠标,我们可以自制一个光电门,通过计算机读取数据,简单方便,成本也很低。
一、电路原理
如图1所示,为红外线发光二极管,为红外线接收二极管,R为限流电阻,IC为鼠标控制芯片,典型的型号为SC83702B,该芯片16脚为电源,8脚为地,10脚为鼠标中键信号输入端。
图1
二、制作方法
找一个使用串行接口的鼠标,拆开鼠标,拿出电路板,你很容易找到鼠标的控制芯片,串行接口鼠标一般只使用两键,但预留了中键位置。到电子市场(或电视机维修店)购买一对红外线发光(接收)二极管,按图1连接好电路,把红外线接收管密闭在一个盒子里,留一个小孔接收红外线,实验的时候把红外发光二极管放在其对面就可以了。只要用导线把与连接到鼠标控制芯片对应的引脚就可以了,其他引脚保持不变。
三、软件编程
VisualBasic是微软开发的一款简单易用的可视化编程工具。微软提供的MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。利用MSComm控件的On-Comm事件捕获并处理通讯事件(比如按下或释放鼠标左键)。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。下面以测试单摆周期为例来介绍。具体的操作步骤如下:
(1)打开VB,创建一个新的工程,将其命名为gdm.vbp工程。
(2)添加MSComm控件。菜单:工程→部件,在弹出的对话框中选择部件:Microsoft Comm Control5.0。这时,在常用控件栏中新增了一个图标像电话机的控件,这个就是MSComm控件了。
(3)在窗体中创建如下对象(见表1)。
表1 对象和属性表
(4)代码编写。在代码框中输入如下代码。
在通用声明中定义程序所用变量:
Dim ac As Byte
Dim av As Variant‘用来从接收缓冲区读取数据
Dim n As Long
Dim i As Integer
Dim w As Integer‘用来存储用户输入的全振动次数
在Forml窗口的MSComm1-OnComm处理程序中加入以下代码:
Private Sub MSComm1-OnComm()
With MSComm1
Select Case.CommEvent‘判断MSComm1通信事件
Case comEvReceive‘收到Rthreshold个字节产生的接收事件
av=.Input
ac=av(0)‘读取一个接收字节
If ac=135 Then‘判断是否放开中键,即是否有物体挡住光电门
Timerl.Enabled=True‘如果有,开始计时
i=i-1
If i<0 Then‘判断是否完成全振动次数
Timer1.Enabled=False‘如果完成,停止计时
.Port Open=False‘关闭串口
Labe15.Caption=n/(100*w)‘显示周期
Start.Enabled=True
End If
End If
End Select
End With
End Sub
在Forml窗口的start_Click处理程序中加入以下代码:
Private Sub start_Click()‘开始按钮
w=Textl.Text
i=2*w+1
MSComml.PortOpen=True‘打开串口
n=0‘计时器清零
Labe13.Caption=n
start.Enabled=False‘测试期间不允许按“开始”
End Sub
在Forml窗口的Timerl-Timer处理程序中加入以下代码:
Private Sub Timer1-Timer()
n=n+1
Labe13.Caption=n/100‘Timer的计时周期为10ms,除以100,转成s
End Sub
四、使用及改进意见
本人利用该装置实际测试了摆长为47.5cm的单摆的周期为1.385s与理论值1.383s非常地接近。利用相同的原理,对程序进行适当的修改,就可以用来测量加速度了。限于文章篇幅,在此不记述。有意者可以来信索取原程序(E-mail:muse82@sina.com.cn).
标签:红外线论文;