单摆振动图像演示仪的改进
2018-05-25冯彩仪程敏熙郭可馨
冯彩仪,程敏熙,郭可馨
(华南师范大学 物理与电信工程学院,广东 广州 510006)
人教版高中物理选修(3-4)第11章第4节中“注射器喷墨法”获取单摆振动图像的演示实验,在实际操作中存在诸多不足:1)注射器中的墨水不易控制而流动不止,容易把纸弄脏;2)匀速拖动白纸难以操作,导致图像准确度欠佳;3)教师演示时难以实现描绘的同时让全班学生看清图像的形成过程[1-3];4)振动图像不能方便地重复获取. 基于此,笔者受光电鼠标追踪技术[4]的启发,对该实验装置进行了改进.
1 实验装置和原理
实验装置包括硬件和软件2部分:硬件部分如图1所示,在悬挂的摆球中放置光电鼠标,其无线接收端接入电脑USB端口中,在摆球下方放置感光板(实际为鼠标垫)使光电鼠标得到感应. 当摆球摆动时,鼠标指针在电脑屏幕中移动,从而相当于把摆球的运动轨迹投影到屏幕上. 软件部分是窗体应用程序“Move”,用于描绘单摆振动图像,并同时测量时间.
图1 单摆振动演示仪
2 实验装置的制作
2.1 硬件部分的制作
1) 准备材料:塑料空心吊球(直径为7cm)、002型号指环光电鼠标、鼠标垫、保鲜膜、150g细沙、尼龙绳、泡沫、卡纸.
2) 把沙子装入保鲜膜中制成沙包,均匀地填充塑料球,并在球的中部预留空间放置光电鼠标.
3) 在球的下方开孔,孔的大小稍大于光电鼠标的底面积.
4) 制作合适的空心柱状泡沫,放入球的中部与沙子紧贴,用于固定光电鼠标,如图2所示.
图2 摆球
5) 用2根尼龙绳把做好的摆球悬挂起来形成双线摆(双线可保证摆球在竖直平面内摆动).
6) 取长30cm、宽13cm、高5cm矩形泡沫板,根据摆球摆动的幅度,将泡沫板的一面做成弧面,并铺上鼠标垫或其他感光材料,另外用卡纸对泡沫板进行简单包装,如图3所示.
图3 用卡纸包装后的泡沫板
2.2 软件部分的制作
用C#编写窗体应用程序“Move”[5-7],实现的功能主要包括:
1)画图功能,任意按下鼠标时,可画任意曲线.
2)计时功能,在软件界面右下角同步显示描绘单摆振动图像所用的时间,从而得到摆球振动1次所用时间即周期.
3)在软件上模拟匀速拖动纸板过程的功能,添加时间轴,即鼠标指针按一定速度从左往右平移像素点,设置快捷键“S”和“P”,分别控制时间轴的开启与关闭.
4)擦除功能,设置快捷键“E”,实现擦除已画曲线的功能.
以下是程序代码的主体部分:
namespaceMove
{
publicpartialclassForm1:Form
{
privateboolCanMove=false;
publicPointstartpt,endpt;
[DllImport(“user32”)]
privatestaticexternintmouse_event(intdwFlags,intdx,intdy,intcButtons,intdwExtraInfo);
privateconstintMOUSEEVENTF_MOVE= 0x0001;
privateconstintMOUSEEVENTF_ABSOLUTE=0x8000;
privateintt= 0;
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_MouseDown(objectsender,MouseEventArgse)
{
This.CanMove=true;
Startpt.X=e.X;
Startpt.Y=e.Y;
}
privatevoidForm1_MouseMove(objectsender,MouseEventArgse)
{
if(this.CanMove==true)
{
Graphicsg=this.CreateGraphics();
Endpt.X=e.X;
Endpt.Y=e.Y;
g.DrawLine(newPen(Color.Red, 3),startpt,endpt);
startpt=endpt;
}
}
privatevoidForm1_MouseUp(objectsender,MouseEventArgse)
{
Graphicsg=this.CreateGraphics();
g.DrawLine(newPen(Color.Red,1),this.startpt,newPoint(e.X,e.Y));
this.CanMove=false;
}
privatevoidForm1_Load(objectsender,EventArgse)
{
This.timer1.Enabled=false;
This.timer1 =this.timer1 =newSystem.Windows.Forms.Timer();
This.timer1.Interval= 20;
This.timer1.Tick+=newEventHandler(timer1_Tick);
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
intwidth=Screen.PrimaryScreen.Bounds.Width;
intheight=Screen.PrimaryScreen.Bounds.Height;
intoffsetX= (MousePosition.X+ 3) * 65535 /width;
intoffsetY= (MousePosition.Y+ 1) * 65535 /height;
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,offsetX,offsetY, 0, 0);
}
}
}
3 教学演示
1)演示前,把光电鼠标的无线接收端接入电脑USB端口中,打开开关并放入摆球中,把感光板放到摆球的下方,调节两者距离在2mm范围内,但不接触.
2)调节光电鼠标在摆球中的位置以达到效果:摆球在竖直平面内摆动时,鼠标指针在计算机屏幕中的上下移动.
3)在计算机中选择“控制面板-个性化-更改鼠标指针-指针选项”降低鼠标指针移动的精确度,打开“Move”软件的界面,拖动计算机鼠标使指针移到界面左侧(合适位置).
4)小角度拉开摆球并静止释放,观察到鼠标指针在屏幕中上下移动.
5)按下快捷键“S”以启动时间轴,指针的匀速右移与上下移动相结合,同时按下计算机鼠标左键进行画图,摆球振动一定次数后,按下快捷键“P”以结束指针右移,同时松开鼠标左键,结束画图,得到单摆振动图像如图4所示.可清晰看到,图中的振动图像为正弦函数图像,振动9个周期,界面右下角显示时间为11.75s,从而得到单摆振动周期为1.31s.
图4 单摆振动图像
6)如果操作过程中由于外界干扰使感光出错导致画出的图线欠佳,可以按下快捷键“E”擦除已画的图线,重新进行画图.
4 结束语
该实验仪器的制作取材容易,操作简单,方便携带. 光学感应器高精度的光学引擎使得描绘的振动图像准确度更高,而且对描绘的振动图像进行计时,容易得到较为准确的周期,同时可以方便地探究摆长与周期的关系.
参考文献:
[1] 尹高生. 描绘单摆振动图像的新实验装置[J]. 物理教师,2011,32(3):29.
[2] 江阳,徐胜. 环保节约型单摆振动图像演示仪[J]. 物理教学探讨,2011,29(10):33-34.
[3] 王维民,李金. 单摆振动图像演示器的改进[J]. 教学仪器与实验,2006(6):44-45.
[4] 张晓斌,佐斌,薛孟杰,等. 基于鼠标追踪技术的个体建构过程实时测量[J]. 心理科学进展,2012,20(5):770-781.
[5] 顾洪,李慧. C#语言程序设计[M]. 南京:东南大学出版社,2009:171-182.
[6] 范盛荣. Visual C#2008控件使用范例详解[M]. 北京:清华大学出版社,2009:10.
[7] 田原,李素若,文斌. C#程序设计[M]. 北京:北京交通大学出版社,2005:252-261.
[8] 王占平. 精确测量单摆周期[J]. 物理实验,2006,26(10):27-28,30.