声波的干涉

声波的干涉

 

进行声波干涉实验一般用两个声源。设两个声源到接收点的距离分别是r1和r2,声波的波长为λ,当|r2-r1|=kλ(k为整数)时,合振动最

在实验中先根据声音的传播速度和声音的频率计算出声音的波长,选择合适的位置,实验比较容易成功。实验可分为两大类,一类是声源移动,接收装置不动;另一类是声源不动,接收装置移动,都可以检测出合振动最强和合振动最弱的位置。

方法一

器材 附共鸣箱的音叉,金属杆(粗细与音叉柄相同),铁架台等。

操作

(1)将音叉从共鸣箱上拔下,把金属杆插入共鸣箱的孔中,然后用铁架台将共鸣箱固定起来,其开口保持在竖直面内。

(2)手持音叉,让音叉臂下垂,置于共鸣箱开口附近。用橡皮槌敲击音叉后,缓缓转动音叉柄,可清楚地听见声音强弱的变化,即声波的干涉现象(如图)。

(3)将音叉转到声音最轻的位置时停止转动,用纸筒套住一个音叉臂,遮断这个臂产生的声波,立刻听到声音增强,抽去纸筒,声音又减弱,可进一步表明声波的干涉作用。

方法二

器材 500—1000ml量筒,两头开口玻璃管,音叉等。

操作

(1)将发声音叉如图放在开口的玻璃管上方,缓慢上下移动盛水量筒中的玻璃管的位置(保持音叉与玻璃管的位置不变),当听到音叉发声最大时,将玻璃管固定。

(2)将发声的音叉在玻管上方开口处缓缓转动,可以听到声音忽强忽弱变化,这就是声音的干涉。

建议 实验前可以根据声速、频率、算出声波的波长,再选择长短

方法三

器材 音频信号发生器,音频功率放大器,同种型号(2.5、0.5VA)扬声器2只,长木板(长1m、宽0.1m),导线,转动支架等。

音箱的制作方法

根据扬声器的尺寸制作小音箱,要求使扬声器的后部完全封闭起来,以提高声波的辐射效率。小音箱后面四周垫入吸音材料如腈纶棉等,用以吸收声波(图a)。

操作

(1)将长木板中点固定在转动支架上,木板两端各放置一个音箱(图b)。两个扬声器并联(注意+、-极)后接到音频功率放大器的输出端,音频信号发生器输出的正弦信号接到音频功率放大器的输入端。

(2)接通电源,使音频信号发生器发出频率为1000Hz的信号。调整功率放大器,逐渐增大输出功率,使扬声器发出音量适当的1000Hz的声音。

(3)转动木板,房间里每个人都能感受到声响起伏变化的声波干涉现象。

(4)木板固定不动,人侧身站在木架前约5m处,一只耳朵对着扬声器,另一只耳朵用手堵住,沿着与木板平行的方向慢慢走动,可明显地感觉到在空间不同位置声音的响度不同,呈周期性的变化。

(5)人走到声音最弱处停下,断开一个扬声器的信号,反而感到声音响了;再接通信号,声音又轻了,可进一步说明声波的干涉现象。

注意 尽量选用回声小一些的房间,扬声器的音量也不宜太大,以减少反射声波的干扰。

方法四

器材 示波器,小型驻极体话筒,6.8k电阻,3V电源,音叉等。

操作

按图连接器材。敲击音叉发声,将话筒围绕音叉转圈,(也可固定话筒,转动音叉)即可看到某些区域振动加强,某些区域振动减弱的声波干涉现象。

注意

(1)示波器用最灵敏一档,输入连线用屏蔽线。

(2)电阻阻值可作适当调整,取得最大灵敏度。

(3)连接驻极体话筒要注意极性,接反了不能工作。

方法五

器材 自制叉形声波干涉仪,录音机,规格相同的扬声器(4Ω)2个,话筒,示波器等。

叉型声波干涉仪的制作方法

用内径约2cm的硬塑料管制成“人”字型通道(图a),AP段和BP段的长度都是68cm,其中AP段可在M处拆开,AM段长34cm,CP段长15cm。AP与CP的夹角小于20°。A、B端各装有一个喇叭型接口,口径与扬声器相同。

操作

(1)将500Hz的正弦声波录在录音磁带上。

(2)将两只扬声器S1和S2串联后[一定要顺串,如图(b)所示],接在录放机的外接喇叭插孔内,将话筒m插入干涉仪的CP段导管或对准C口,话筒的两根线接到示波器的接地端与y输入端(图c)。

(3)将一只扬声器S1对准干涉仪的A端接口(S2不要对准B端接口),开启录音机,调节示波器,使屏上出现三至四个正弦波,记下它的幅度。

(4)将S2也同时对准干涉仪的B端接口,可看到屏上波形的幅度增加了约一倍,说明两列声波由于相位相同,合振动得到加强。

(5)将干涉仪的AM段硬管取下,将喇叭型接口套在MP管上,再将S1扬声器对准干涉仪的接口M端,可看到屏上波形的幅度明显减小(如果两只扬声器选择得好,波形可接近一条直线),说明两列声波由于相位相反,合振动被减弱。

(6)将S2扬声器从干涉仪的B端接口处移开,可看到波形又恢复了原先的大小,但相位相反,可进一步说明声波的干涉作用。

说明

(1)500Hz的声波在常温下的波长约为68cm,因此将AM管的长度做成波长的一半34cm。如果用频率高一些的声波进行实验,则AM管的长度还应做得短一些。

(2)用下述方法可判断两个扬声器的同名端:将扬声器的音圈与一灵敏电流计接成一个闭合回路(图d),用手迅速将扬声器纸盆向里按一下,记住电流计指针的偏转方向。然后用同样方法测试另一个扬声器。如果两次指针偏转的方向相同,则前后两次接到电流计A端上的是同名端;如果两次指针偏转的方向相反,则第一次接电流计A端和第二次接电流计B端的是同名端。

方法六

器材 自制环型声波干涉仪,音频信号发生器,音频功率放大器,小型扬声器等。

环形声波干涉仪的制作方法

如图所示,用两根T形玻璃管、三根直玻璃管(其中右边两根粗细稍有不同,恰能互相套进)和四段厚壁软管(如听诊器软管)构成。由于右边两根玻璃管要上、下调节,因此右边两段软管要长一些。在右边较细的管壁上面刻上刻度。

操作

(1)将音频信号发生器输出的音频信号接到音频功率放大器的输入端,再将小型扬声器接在音频功率放大器的输出端上。开启两台仪器,扬声器中就能发出一定频率的正弦声波,其频率由音频信号发生器控制,响度由音频功率放大器控制。

(2)将扬声器扣在干涉仪的A端(如两者口径不一样,还要做一个喇叭形接口),适当地调节音频功率放大器的输出功率,人耳就可以在干涉仪的B端听到声音。

(3)在1000Hz到4000Hz的范围内,连续调节音频信号发生器输出信号的频率,可在干涉仪B端听到周期性轻、响变化的声音。当左右两条通道的长度差△x是声波波长的整数倍时,两列声波互相加强,听到最响的声音;当△x是声波半波长的奇数倍时,两列声波互相抵消,听到最弱的声音。

(4)固定音频(如3000Hz),改变右通道的长度,也同样能听到周期性轻、响变化的声音。

(5)从右通道玻璃管的刻度上,读出连续四个轻、响、轻、响的点的坐标x1,x2,x3和x4,则可算出声波的波长。

 

windows下通过dos命令行将文件由utf-8变为ansi编码

大excel文件导出的时候程序搞不定,只好用csv导出,打开csv的时候excel不能认utf8,只好导入,但导入操作繁琐。我在想,如果有命令行工具或脚本,可以把结果打包成压缩包,下载完后让用户点击可执行的命令行把csv转一下码。然后就可以直接打开了。

上网搜了半天,发现原来微软自己提供了一个脚本,其实也不过是用标准API存取文件而已。不过奇怪的是:这vbs代码报错,搞半天还没搞清楚问题在哪里。

一、Copy a Unicode File to an ANSI File

WiToAnsi.vbs文件:

复制代码代码如下:
‘ Utility to rewrite a Unicode text file as an ANSI text file
‘ For use with Windows Scripting Host, CScript.exe or WScript.exe
‘ Copyright (c) 1999, Microsoft Corporation

Option Explicit’ FileSystemObject.CreateTextFile and FileSystemObject.OpenTextFile
Const OpenAsASCII   = 0
Const OpenAsUnicode = -1

‘ FileSystemObject.CreateTextFile
Const OverwriteIfExist = -1
Const FailIfExist      = 0

‘ FileSystemObject.OpenTextFile
Const OpenAsDefault    = -2
Const CreateIfNotExist = -1
Const FailIfNotExist   = 0
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Dim argCount:argCount = Wscript.Arguments.Count
If argCount > 0 Then If InStr(1, Wscript.Arguments(0), “?”, vbTextCompare) > 0 Then argCount = 0
If (argCount = 0) Then
Wscript.Echo “Utility to copy Unicode text file to an ANSI text file.” &_
vbNewLine & “The 1st argument is the Unicode text file to read” &_
vbNewLine & “The 2nd argument is the ANSI text file to write” &_
vbNewLine & “If the 2nd argument is omitted, the Unicode file will be replaced”
Wscript.Quit 1
End If

Dim inFile, outFile, inStream, outStream, inLine, FileSys, WshShell
If argCount > 1 Then
outFile = Wscript.Arguments(1)
inFile  = Wscript.Arguments(0)
Else
outFile = Wscript.Arguments(0)
inFile  = outFile & “.tmp”
Set WshShell = Wscript.CreateObject(“Wscript.Shell”)
WshShell.Run “cmd.exe /c copy ” & outFile & ” ” & inFile, 0, True
End If

Set FileSys = CreateObject(“Scripting.FileSystemObject”)
Set inStream  = FileSys.OpenTextFile(inFile, ForReading, FailIfNotExist, OpenAsDefault)
Set outStream = FileSys.CreateTextFile(outFile, OverwriteIfExist, OpenAsASCII)
Do
inLine = inStream.ReadLine
outStream.WriteLine inLine
Loop Until inStream.AtEndOfStream
inStream.Close
outStream.Close
If argCount = 1 Then WshShell.Run “cmd.exe /c del ” & inFile, 0

批处理中调用:

复制代码代码如下:
cscript WiToAnsi.vbs [path to Unicode file][path to ANSI file]

二、Copy a ANSI File to an Unicode File

只需对OpenTextFile和CreateTextFile的打开方式做调整即可。

三、参考

http://msdn.microsoft.com/en-us/library/aa368046%28VS.85%29.aspx

四、OpenTextFile和CreateTextFile的使用

CreateTextFile 方法

创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。

复制代码代码如下:
object.CreateTextFile(filename[, overwrite[, unicode]])

参数

object

必选项。应为 FileSystemObject 或 Folder 对象的名称。

filename

必选项。字符串表达式,指明要创建的文件。

overwrite

可选项。Boolean 值指明是否可以覆盖现有文件。如果可覆盖文件,该值为 True;如果不能覆盖文件,则该值为 False 。如果省略该值,则不能覆盖现有文件。

unicode

可选项。Boolean 值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;如果以 ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。

OpenTextFile 方法

打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。

复制代码代码如下:
object.OpenTextFile(filename[, iomode[, create[, format]]])

参数

object

必选项。应为 FileSystemObject 对象的名称。

filename

必选项。字符串表达式,指明要打开的文件名称。

iomode

可选项。输入/输出模式,是下列三个常数之一:ForReading,ForWriting,或 ForAppending。

create

可选项。Boolean 值,指出当指定的 filename 不存在时是否能够创建新文件。允许创建新文件时为 True,否则为 False。默认值为 False。

format

可选项。三个 Tristate 值之一,指出以何种格式打开文件。若忽略此参数,则文件以 ASCII 格式打开。

设置

iomode 参数可为下列设置之一:

描述
ForReading 1 以只读模式打开文件。不能对此文件进行写操作。
ForWriting 2 以只写方式打开文件。不能对此文件进行读操作。
ForAppending 8 打开文件并在文件末尾进行写操作。

format 参数可为下列设置之一:

常数 描述
TristateUseDefault -2 以系统默认格式打开文件。
TristateTrue -1 以 Unicode 格式打开文件。
TristateFalse  0 以 ASCII 格式打开文件。