光电门与电压放大器做电磁感应定律验证实验

news2024/9/20 16:29:19

根据上述原理可知,实验需要测量的量有两个:挡光时间间隔和挡光时的电压平均值。挡光时间可通过Arduino的数字输入端口采集光电门信号并计算得到,电压值可以通过Arduino的模拟信号输入端口采集。但是由于Arduino的模拟信号输入端只能精确到5mV,而本实验中感应电动势大概为100mV左右,误差太大。所以需要将采集到的感应电动势的值线性放大后再输入Arduino。

放大电路使用Lm358P集成运放,加上电阻构建一个电压线性放大模块,原理图如图2,自制电压放大模块实物图如图3所示。

电压放大模块中的R1用1千欧姆电阻,R2用10千欧姆电阻,这样放大倍数为11。因为输入的感应电动势大概为100mV,经过放大后达到1000mV,用精度为5mV的Arduino模拟信号输入端来采集,误差大概0.5%,达到实验要求。

以下为Arduino端的主要代码,通过这些代码可以看到具体的数据采集过程。

……省略变量定义部分,以下主程序循环执行,大概10微秒执行一遍。

void loop () {

if(digitalRead(inputPin1) ==HIGH)//如果光电门输入信号为1,即挡光时

{  if(i1==0)                     //如果同时i1变量等于0

  {  t1=micros();                //令变量t1等于此刻时间,精确到1微秒

  i1=1;    }                     //令变量i1等于1,下次循环不再执行上面程序

   if(i1==1)                       //如果变量i1等于1,即挡光的过程中

  {  v1=analogRead(A0);    //每执行一次程序采集一个电压值,大概每10微秒采集一次

  vv+=v1;                   //变量vv为对电压进行累加的值

  i++;    }}                  //令变量i每执行一次增加1

if(digitalRead(inputPin1) ==LOW&&i1==1) 

//如果光电门输入信号为0并且i1等于1,即挡光刚结束时

{ tt1=micros();              //令变量tt1等于此刻时间,精确到1微秒

  t1=tt1-t1;                 //通过tt1与t1想减计算得到时间间隔

  i1=0;                      //令变量i1等于0,即此次挡光计算结束

  v1=vv/i;                   //累加的电压除于累加次数得到平均电压值

  vv=0;

  i=0;

   Serial.print(t1);         //发送时间间隔

   Serial.print("t ");       //发送分割字母

   Serial.print(v1);         //发送平均电压值

   Serial.print(0,BYTE);     //发送结束字符

   delay(100);}   }

通过以上代码可以计算得到光电门挡光时间,以及对挡光时间内大概每10微秒采集一次的电压求平均得到的平均电压。因为程序每执行一遍会有100微秒左右的延时,所以计算得到的挡光时间间隔也会有约20微秒的误差。由于每次挡光时间大概有几十毫秒,所以挡光时间间隔的误差大概有0.5%左右,达到实验精度。图4为实验装置实物图。

软件部分利用Adobe Flash来开发,最后生成swf动画课件。因为具体代码较多,这里不再列出。图为课件界面。


 

当移动小车正向通过光电门时,课件中的小车也会移动。当Arduino端发送数据时,课件中会实时显示在对应的方框内。点击记录数据按钮,可以将此次数据记录在表格中。当移动小车反向通过光电门时,课件中的小车也会回到原来位置,并且方框中的数据同时清零。移动小车反复经过光电门,就可以记录多组时间间隔和感应电动势的数据。

记录完后,将表格中的数据复制,并粘贴到Excel表格中,利用Excel来进行数据处理,图6为某此实验数据。



从实验数据中可以看到,在同样匝数下,感应电动势和挡光时间的乘积为一定值。如果将线圈匝数增大一倍,感应电动势和挡光时间的乘积也增大一倍。由此可以得到法拉第电磁感应定律。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微信小程序开发】如何定义公共的js函数,其它页面可以调用

在微信小程序开发中,可以通过以下步骤定义和使用公共的 JS 函数,使得其它页面可以调用: 1. 创建一个公共的 JS 文件:在项目的 utils 目录下创建一个 JS 文件,例如 utils/util.js。 2. 定义公共函数:在 uti…

【Python从入门到进阶】60、Pandas中DataFrame对象的操作(一)

接上篇《59、Pandas库中Series对象的操作(二)》 上一篇我们讲解了Series对象的运算、函数应用、时间序列操作,以及Series的案例实践。本篇我们来讲解Pandas中DataFrame对象的操作。 一、DataFrame对象的基本概念及特点 在Pandas库中,DataFrame是一种非…

基于Python+Django+MySQL的心理咨询预约系统

心理咨询预约系统 DjangoMySQL 基于PythonDjangoMySQL的心理咨询预约系统 项目主要依赖Django3.2,MySQL 支持随机验证码生成与登录验证 简介 基于PythonDjangoMySQL的心理咨询预约系统通过连接数据库获取数据,登录新增随机数字验证码验证。具体可以看…

网络请求优化:如何让你的API飞起来

网络请求优化:如何让你的API飞起来 亲爱的开发者朋友们,你是否曾经遇到过这样的场景:用户疯狂点击刷新按钮,你的服务器却像老年人散步一样慢吞吞地响应。或者,你的应用像个贪吃蛇,疯狂吞噬用户的流量包。如果你对这些情况再熟悉不过,那么恭喜你,你正需要…

【Linux】进程间通信(IPC)——匿名管道

目录 为什么要进行进程间通信? 匿名管道的具体实现 pipe创建内存级文件形成管道 pipe的简单使用 匿名管道的四种情况和五种特性 四种情况 五种特性 PIPE_BUF 命令行管道 | 功能代码:创建进程池 为什么要进行进程间通信? 1.数据传输&…

1.27、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实现对非线性关系的拟合。 RBFNN的基本原理是将输入空…

opencascade AIS_InteractiveContext源码学习8 trihedron display attributes

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

Hash表(C++)

本篇将会开始介绍有关于 unordered_map 和 unordered_set 的底层原理,其中底层实现其实就是我们的 Hash 表,本篇将会讲解两种 Hash 表,其中一种为开放定址法,另一种为 hash 桶,在unordered_map 和 unordered_set 的底层…

【Git从入门到精通】——Git常用命令总结

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

火星全球彩色影像图介绍(中分辨率相机)

一、数据基本信息 该数据是利用天问一号轨道器中分辨率相机获取的影像经光度校正、几何校正、全球制图等制作而成的全火星地图数据DOM,每个数据包含一个tif数据文件。该影像图分辨率为76米。 任务型号:天问一号 搭载平台:环绕器 数据获…

批量提取网页表格内容至excel文件

问题背景 将网页的表格内容(5237个股票信息)复制粘贴到excel文件中 网址:A股上市公司名单-A股上市公司名录-A股上市公司大全-商业计划书-可研报告-中商产业研究院数据库-中商情报网 实现代码 # 导入包 import pandas as pd import time# 创…

[安洵杯 2019]easy_web1

知识点: 1.base64加解密 2.md5加解密 3.md5碰撞绕过强类型比较 4.Linux命令绕过 进入页面发现url地址中存在 img参数和一个cmd参数,img参数看上去像是base64编码,可以去尝试一下解码. 进行了两次base64解密得到3535352e706e67看着像16进制那么…

SSM整合--笔记总结

1.概述 ssm(springmvc spring mybatis)这三个框架的整合。 spring和springmvc他们隶属于一家公司,他们无需整合。 spring和mybatis框架的整合。 spring把mybatis中的配置内容放到自己的配置文件中。因为我们可以让tomcat加载spring配置文件。 思考:mybatis配置文件…

SD card知识学习

一、基础知识 1、简介 SD Card 全称(Secure Digital Memory Card),日本电子公司松下(Panasonic)、瑞典公司爱立信(Ericsson)、德国公司西门子(Siemens)共同开发的,于1999年发布根…

Java中如何发送短信?(荣耀典藏版)

大家好,我是月夜枫~~ 本来是没计划写这方面的文章,奈何粉丝经常私信要求整理一篇发短信的文章,今天他来了。 很多业务场景里,我们都需要发送短信,比如登陆验证码、告警、营销通知、节日祝福等等。 这篇文章&#xf…

JavaSE——集合框架二(4/6)-Map集合的遍历方式(键找值,键值对,Lambda)、Map集合案例(需求与分析,问题解决)

目录 Map集合的遍历方式 键找值 键值对 Lambda Map集合案例 需求与分析 问题解决 Map集合的遍历方式 键找值 先获取Map集合全部的键,再通过遍历键来找值。 键值对 把“键值对”看成一个整体进行遍历(较为复杂) Lambda JDK 1.8 开…

C嘎嘎:函数模版和类模版

目录 泛型编程 函数模版 函数模版概念 函数模版的格式 函数模版的原理 函数模版的实例化 函数参数的匹配原则 类模版 类模版的定义格式 类模版的实例化 泛型编程 如何实现一个通用的交换函数呢 void Swap(int& left, int& right) {int temp left;left rig…

【每日一练】python之sum()求和函数实例讲解

在Python中, sum()是一个内置函数,用于计算可迭代对象(如列表、元组等)中所有元素的总和。如下实例: """ 收入支出统计小程序 知识点:用户输入获取列表元素添加sum()函数,统计作用 "&…

快捷:通过胶水语言实现工作中测试流程并行、加速

通过胶水语言实现工作中测试流程并行、加速 通过胶水语言实现工作中测试流程并行、加速工作场景(背景)问题抽象(挑战)如何做(行动)获得了什么(结果)后记相关资源 通过胶水语言实现工…

Oracle 性能诊断包收费依据

Which Data Dictionary or Dynamic Performance Views Require Purchase of the Diagnostics and / or Tuning Pack? (Doc ID 2082355.1)​编辑To Bottom In this Document Goal Solution References APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.5 …