云天 发表于 2022-11-17 11:22:55

信息技术与物理学科深度融合案例 用单摆测量重力加速度

本帖最后由 云天 于 2022-11-17 11:25 编辑

信息技术与物理学科深度融合案例实验:用单摆测量重力加速度实验背景“用单摆测量重力加速度”是人教版(2019)高中物理选择性必修第一册第二章第5节的内容。
本节课将通过利用DIS实验技术与传统的实验方法相结合进行“单摆法测重力加速度”。
在日常的中学物理教学中,引导学生建立物理概念和掌握物理规律是教师的主要工作,而以学生分组实验的形式进行教学是一种很好的手段,但是对于一些传统的学生分组实验,实验存在无法克服的系统误差,其实验的数据往往和理论值相差较大。这样,实验的说服力就较弱了,往往让授课教师的处境非常尴尬。在“单摆法测重力加速度”这个学生分组实验中,我们在结合传统的实验基础上,再利用DIS实验技术进行“单摆法测重力加速度”,这样可以取得更明显的实验效果。
                                                   
"DIS" 是英文"DigitalInformation System"的缩写,又称“数字化信息系统”。是由“传感器+数据采集器+实验软件包(教材专用软件、通用扩展软件)+计算机”构成的新型实验系统。在物理学中有很多物理量,如距离、位移、力、速度、温度、压强、电压、电流、等,都可以用DIS进行测量。该系统成功地克服了传统物理实验仪器的诸多弊端,有力地支持了信息技术与物理教学的全面整合。课前准备教师准备:本节课使用国产开源硬件“行空板”,在传统学生分组实验中,“行空板”做为秒表,学生利用此“秒表”手动记录单摆周期。在DIS实验中,采用行空板、光电传感器实验器材,使小球摆动时在最低点通过光电传感器,由行空板直接显示单摆周期,计算重力加速度,并可以将每个周期记录在电子表格中。
实验目的1.测定单摆周期,验证单摆振动的等时性。
2.利用单摆测量当地的重力加速度。
3.了解光电传感器的使用,学习用行空板数字化信息系统获得数据并处理数据的方法。
实验原理当摆角较小时(小于5°),单摆做简谐运动,单摆周期跟单摆的摆线长度和当地的重力加速度有关。根据单摆的周期公式:T=2π√(L/g) 。可得g=4π²L/T²其中,L为摆长。实验仪器实验架台、刻度尺、行空板、光电传感器、按钮、数据线、计算机、摆线、小球、量角器。实验装置做单摆:让线的一端系在小球上,把线的上端结点与量角器中心对齐(用来测量摆角),让摆球自由下垂,在单摆平衡位置处安装光电传感器。做行空板DIS:实物图

光电传感器接行空板引脚22,按钮1、按钮2分别接引脚21、引脚23。电路图物理量的测量1.测摆长(1)方法一:用刻度尺直接侧量小球球心与悬挂点之间的距离作为摆长l。(2)方法二:用游标卡尺测量小球的直径d,用刻度尺测量悬挂点与小球上端之间的距离l′,则摆长l=l′+d/2。(3)方法三:用刻度尺先测量悬挂点与小球上端之间的距离l1,再测量悬挂点与小球下端之间的距离l2,则可得摆长l=( l1+l2)/2。测量本次实验摆线的长度L为0.5361米)。2.测周期         
(1)传统实验方法学生分组实验,用行空板秒表测量单摆的周期。将单摆从平衡位置拉开一个角度,且满足偏角小于5°,然后释放摆球,当单摆摆动稳定后,用行空板秒表测量单摆完成30次(或50次)全振动的时间t。计算出平均摆动一次的时间T=t/n,即为单摆的振动周期T。改变摆长,重复实验多次。将每次实验得到的T代入公式g=4π²L/T²,计算重力加速度。
行空板秒表图形化程序利用行空板实时显示秒表时间,点击引脚23上按钮记录周期时间,并将周期时间保存到列表中。点击引脚21上按钮,可回看保存的周期时间。行空板秒表Python程序

#-*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import GUI
import time
import math

# 自定义函数
def JieMianChuShiHua():
    global 时钟,分,秒,毫秒,序号
    时钟=u_gui.fill_clock(x=120,y=200,r=100,color="#FF0000",fill="#FFFF00")
    分=u_gui.draw_digit(text="00",x=10,y=20,font_size=40, color="#0000FF")
    标签1=u_gui.draw_digit(text=":",x=50,y=20,font_size=40, color="#0000FF")
    秒=u_gui.draw_digit(text="00",x=90,y=20,font_size=40, color="#0000FF")
    标签2=u_gui.draw_digit(text=":",x=130,y=20,font_size=40, color="#0000FF")
    毫秒=u_gui.draw_digit(text="00",x=170,y=20,font_size=40, color="#0000FF")
    时钟.config(h=0,m=0,s=0)
    序号=u_gui.draw_text(text="",x=190,y=70,font_size=20, color="#000000")
def ShiJianXianShiFuWei():
    时钟.config(h=0,m=0,s=0)
    分.config(text="00")
    秒.config(text="00")
    毫秒.config(text="00")
def ShiJianXianShi():
    global YunXingShiJian,HaoMiao,Miao,FenZhong
    HaoMiao = ((time.time() - YunXingShiJian) * 100)
    毫秒.config(text=(math.floor(HaoMiao)))
    if (HaoMiao > 99):
      YunXingShiJian = time.time()
      Miao = (Miao + 1)
      if (Miao < 10):
            秒.config(text=(str("0") + str(Miao)))
      else:
            秒.config(text=Miao)
      时钟.config(h=0,m=FenZhong,s=Miao)
      if (Miao == 60):
            Miao = 0
            FenZhong = (FenZhong + 1)
            if (FenZhong < 10):
                分.config(text=(str("0") + str(FenZhong)))
            else:
                分.config(text=FenZhong)
            时钟.config(h=0,m=FenZhong,s=Miao)
def HuiXianShiJian():
    global JiLuXuHao
    if (JiLuXuHao > (len(LieBiaoFenZhong) - 1)):
      JiLuXuHao = 0
    序号.config(text=(JiLuXuHao + 1))
    LinShiFenZhong = (int(float((LieBiaoFenZhong))))
    LinShiMiao = (int(float((LieBiaoMiao))))
    LinShiHaoMiao = (LieBiaoHaoMiao)
    毫秒.config(text=LinShiHaoMiao)
    if (LinShiMiao < 10):
      秒.config(text=(str("0") + str(LinShiMiao)))
    else:
      秒.config(text=LinShiMiao)
    if (LinShiFenZhong < 10):
      分.config(text=(str("0") + str(LinShiFenZhong)))
    else:
      分.config(text=LinShiFenZhong)
    时钟.config(h=0,m=LinShiFenZhong,s=LinShiMiao)
    JiLuXuHao = (JiLuXuHao + 1)


Board().begin()
u_gui=GUI()
p_p23_in=Pin(Pin.P23, Pin.IN)
p_p21_in=Pin(Pin.P21, Pin.IN)
QiDongBiaoShi = 0
HuiKanBiaoShi = 0
JiLuXuHao = 0
HaoMiao = 0
Miao = 0
FenZhong = 0
LieBiaoFenZhong = []
LieBiaoMiao = []
LieBiaoHaoMiao = []
JieMianChuShiHua()

while True:
    if (p_p23_in.read_digital()==True):
      if (QiDongBiaoShi == 0):
            ShiJianXianShiFuWei()
            QiDongBiaoShi = 1
            YunXingShiJian = time.time()
      else:
            ShiJianXianShi()
    else:
      if (QiDongBiaoShi == 1):
            LieBiaoFenZhong.append(FenZhong)
            LieBiaoMiao.append(Miao)
            LieBiaoHaoMiao.append((math.floor(HaoMiao)))
            序号.config(text=(JiLuXuHao + 1))
            JiLuXuHao = (JiLuXuHao + 1)
            QiDongBiaoShi = 0
            HaoMiao = 0
            Miao = 0
    if (p_p21_in.read_digital()==True):
      if (HuiKanBiaoShi == 0):
            HuiKanBiaoShi = 1
            HuiXianShiJian()
    else:
      if (HuiKanBiaoShi == 1):
            HuiKanBiaoShi = 0
            HuiXianShiJian()


(2)DIS实验过程1)将光电门传感器固定在单摆的平衡位置处并将其接入行空板22引脚。2)在行空板主菜单使用“切换运行程序”,点击“单摆测重力加速度”程序。3)逐步调整传感器的位置和单摆摆长,使摆球通过传感器并能够顺利挡光。4)用手使摆球摆动,点击连接行空板引脚23的按钮,屏幕显示“已启动”,此时,行空板将会自动记录单摆的周期,每一组记录20个周期。再次点击“按钮”,行空板会在完成记录当前组的20个周期后,停止记录数据。显示平均周期及重力加速度,并将数据保存到电子表格文件“单摆测重力加速度.xls”。 5)比较实验中测得的重力加速度与当地实际重力加速度值的差别。(实验地:河北张家口,9.800)行空板DIS系统图形化程序通过光电传感器,判断小球经过最低点,记录单摆周期。并通过扩展xlwt将周期时间记录在电子表格中。行空板DIS系统Python程序

#-*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from unihiker import GUI
import time
import math

# 自定义函数
def ZhouQiBaoCun():
    global XingHao
    global LieHao
    global JiShu
    global QiDongBiaoShi
    global ChuanGanQiBiaoShi
    global ZhouQiLeiJi
    if ((QiDongBiaoShi == 1) or ((LieHao > 0) and (LieHao < 20))):
      if (p_p22_in.read_digital()==True):
            if (ChuanGanQiBiaoShi == 0):
                ChuanGanQiBiaoShi = 1
                JiShu = (JiShu + 1)
                if (JiShu == 2):
                  JiShu = 0
                  ZhouQiJiSuan()
      else:
            ChuanGanQiBiaoShi = 0
    else:
      if (QiDongBiaoShi == 2):
            启动.config(text="已完成")
            组别.config(text="")
            次数.config(text="")
            ZuiZhongZhouQi = round((ZhouQiLeiJi / (XingHao * 20)),2)
            最终周期=u_gui.draw_digit(text=ZuiZhongZhouQi,x=10,y=200,font_size=30, color="#0000FF")
            ZhongLiJiaSuDu = round((((4 * (math.pi**2)) * 0.5361) / (ZuiZhongZhouQi**2)),4)
            重力加速度=u_gui.draw_digit(text=ZhongLiJiaSuDu,x=120,y=240,font_size=30, color="#FF0000")
            fp.save("重力加速度.xls")
def QiDongPanDuan():
    global QiDongBiaoShi
    if (p_p23_in.read_digital()==True):
      if (QiDongBiaoShi == 0):
            启动.config(text="已启动")
            组别.config(text="第1组")
            QiDongBiaoShi = 1
    else:
      if (QiDongBiaoShi == 1):
            QiDongBiaoShi = 2
def ZhouQiJiSuan():
    global YunXingShiJian,ZhouQiShiJian,ZhouQiLeiJi,XingHao,LieHao
    if (YunXingShiJian == 0):
      YunXingShiJian = time.time()
    else:
      ZhouQiShiJian = (time.time() - YunXingShiJian)
      ZhouQiLeiJi = (ZhouQiLeiJi + ZhouQiShiJian)
      周期.config(text=round(ZhouQiShiJian,2))
      YunXingShiJian = time.time()
      table.write(XingHao, LieHao, ZhouQiShiJian, style=mindStyle)
      LieHao = (LieHao + 1)
      次数.config(text=(str("第") + str((str(LieHao) + str("个")))))
      if (LieHao > 19):
            XingHao = (XingHao + 1)
            LieHao = 0
            组别.config(text=(str("第") + str((str((XingHao + 1)) + str("组")))))


u_gui=GUI()
Board().begin()
import xlwt
p_p22_in=Pin(Pin.P22, Pin.IN)
p_p23_in=Pin(Pin.P23, Pin.IN)
YangShi = "font: name Times New Roman, color-index red, bold on"
fp = xlwt.Workbook(encoding="ascii")
mindStyle = xlwt.easyxf(strg_to_parse=YangShi, num_format_str="0.0000")
table = fp.add_sheet(sheetname="重力加速度", cell_overwrite_ok=True)
YunXingShiJian = 0
JiShu = 0
ZhouQiLeiJi = 0
ChuanGanQiBiaoShi = 0
QiDongBiaoShi = 0
XingHao = 0
LieHao = 0
标签1=u_gui.draw_text(text="实时周期:",x=5,y=20,font_size=20, color="#0000FF")
周期=u_gui.draw_text(text="",x=140,y=20,font_size=20, color="#0000FF")
启动=u_gui.draw_text(text="未启动",x=80,y=280,font_size=20, color="#0000FF")
标签2=u_gui.draw_text(text="当前组别:",x=5,y=80,font_size=20, color="#0000FF")
组别=u_gui.draw_text(text="",x=140,y=80,font_size=20, color="#0000FF")
标签3=u_gui.draw_text(text="当前次数:",x=5,y=120,font_size=20, color="#0000FF")
次数=u_gui.draw_text(text="",x=140,y=120,font_size=20, color="#0000FF")

while True:
    QiDongPanDuan()
    ZhouQiBaoCun()

注意事项1.摆线应选择细、轻而且不易伸长的,长度为1m左右的,不要过长或过短,太长测量不方便,太短摆动太快,不易计数。小球应选体积小、密度大的金属球,这样可以减小空气阻力的影响。2.单摆摆线的上端应夹紧,不能卷在铁夹的杆上,以免造成悬点不固定,摆长变化的现象。3.摆长要悬挂好摆球后再测,不要先测摆长再系小球,因为悬挂摆球后细绳会发生形变。测量摆长时应注意是悬点到球心的距离,等于摆线长加上小球半径。注意摆线长与摆长的区别。4.要使单摆在竖直平面内摆动,不要形成圆锥摆。摆角要小于5°(中学阶段实验时不要超过15°),不要过大,因为摆角过大,单摆的振动不再是简谐运动,公式就不再适用。5.计算单摆的振动次数时,应从小球通过最低位置(平衡位置)时开始计时,同方向再次通过最低位置时累加计数。实践活动
师:同学们分组合作讨论,自己设计一个测重力加速度的DIS实验。生:根据自由落体公式:h=1/2gt²,得g=2h/t²。在铁架台顶固定电磁铁吸引金属小球,行空板控制电磁铁断电记时,当小球撞击地面,利用行空板声音传感器接收信号,并停止记时,得自由落体时间t,再结合已测量的下落高度h,根据公式计算重力加速度g。生:结合打点记时器测重力加速度的方法,利用行空板连接USB摄像头,以相同的时间间隔拍摄小球下落过程(背景放置刻度尺),利用图处理技术,将所有照片叠加在一起。根据打点计时器加速度的公式△x=aT²,计算重力加速度。课后反思
DIS实验技术可以准确地描述各个物理量之间的关系,体现现代科学技术准确性高的特点,是以后中学物理教学的常见模式。同时,我们也不可以全盘否定传统的物理实验,本节课就是尝试着将二者相互结合,使二者互相补充。既使学生加深了对实验原理的理解,也提高了实验数据处理的准确性。演示视频https://www.bilibili.com/video/BV1LP411g78H/?share_source=copy_web

木子呢 发表于 2022-11-17 11:51:02

神速!!!!!

rzegkly 发表于 2022-11-19 09:17:43

很好的案例,学习

派大星ym 发表于 2022-11-22 09:25:08

行空板不吃灰系列{:6_213:}

白凡 发表于 2022-11-24 09:16:34

666666{:6_209:}

许培享 发表于 2023-12-2 11:27:21

详细教程

455480921 发表于 2025-2-21 10:33:07

import(time)这个怎么弄出来?
页: [1]
查看完整版本: 信息技术与物理学科深度融合案例 用单摆测量重力加速度