首页
关于物理猫
Geogebra在线
Vpython在线
资源网盘
Search
1
GGB课件制作工具使用说明
1,808 阅读
2
分压电路为什么要用小电阻
1,042 阅读
3
天体简谐运动
1,009 阅读
4
凸透镜成像演示
864 阅读
5
机械振动模型
846 阅读
物理可视化
Geogebra
Vpython
GGB教程
DIS与硬件编程
物理猫
工具分享
物理可视化工具
登录
/
注册
Search
标签搜索
高中物理
物理模型
磁场
DIS
vpython
静电场
GeoGebra
实验仪表
仪器仪表
电路
传感器
esp32
物理游戏
物理仪器
有趣的小程序
几何光学
力与运动
动态平衡问题
恒定电流
物理疑难问题
物理猫
累计撰写
88
篇文章
累计收到
26
条评论
首页
栏目
物理可视化
Geogebra
Vpython
GGB教程
DIS与硬件编程
物理猫
工具分享
物理可视化工具
页面
关于物理猫
推荐
Geogebra在线
Vpython在线
资源网盘
用户登录
登录
注册
搜索到
15
篇与
的结果
2022-12-19
自制DIS实验-力传感器
DIS开发-自制力传感器教程,本文介绍了制作力传感器的教程,附带源代码
2022年12月19日
33 阅读
0 评论
0 点赞
2022-11-07
自制DIS实验-验证牛顿第三定律实验
前言 关于这个验证牛顿第三定律这个实验,前前后后已经做了很长时间了;从硬件和软件方面都进行了比较大的更新。软件方面主要加了著名的卡曼滤波程序,硬件方面则从最初的面包板接线更新到了PCB设计和3D打印的外壳。这个实验目前任然在改进中,没有最完美的实验,只有更完美的实验。我们来学习一下牛顿第三定律的内容: 牛顿第三定律表明,当两个物体相互作用时,彼此施加于对方的力,其大小相等、方向相反。根据第三定律,力是物体与物体之间的相互作用,力必会成双结对地出现,其中一个力称为“作用力”,而另一个力则称为“反作用力”。这两个力的大小相等、方向相反。在这两个力之间,任何一个力都可以被称为作用力,而其对应的力自然成为伴随的反作用力。这成对的作用力与反作用力称为“配对力”。第三定律又称为“作用与反作用定律”。 第三定律以方程表达为:$${\displaystyle \sum \mathbf {F} _{A,B}=-\sum \mathbf {F} _{B,A}}$$ 其中,${\displaystyle \mathbf {F} _{A,B}}$是物体B施加于物体A的力,${\displaystyle \mathbf {F} _{B,A}}$ 是物体A施加于物体B的力。视频操作过程:{bilibili bvid="BV1qK411S7Sd" page=""/}{bilibili bvid="BV11V4y1L7Zs" page=""/}实验内容:组装器材 esp32,3.2V电池,hx711和oled屏幕插入到我设计的PCB板上,再连接到3D打印的外壳上面。通过PhyPhox建立蓝牙通讯启动程序开始实验 作用力和反作用力镜像图像: 作用力和反作用力重合在同一图像上面:
2022年11月07日
126 阅读
0 评论
2 点赞
2022-11-06
自制DIS实验-高精度测距传感器
前言 笔者之前一直使用超声波来测量距离,超声波的精度有点感人,3mm误差。超声波模块受环境的温度湿度影响较大,用来精确测量不是很友好。今天终于找到了精度更高的模块——VL6180x。误差1mm。也勉强够用了,只是频率和量程有点低。超声波模块可以测量4M以内的距离,激光模块只能测量20cm以内的距离,真是鱼和熊掌不可兼得,提高了精度却损失了量程。有没有一种高精度大量程高频率的模块呢? 首先阅读一下激光模块的文档吧,一看竟然有几百页,还是全英文的,对于笔者这样的学渣来说实属困难。好在看到了重要的内容:Typical ranging performance of the VL6180X is shown in Figure 6. This demonstrates the reflectance independence and range accuracy of the VL6180X from 0 to 100 mm for 3%,5%, 17% and 88% reflective targets. The example shown here is with ST cover glass and a 1.0 mm air gap. 理论上来讲,激光测距模块的输出值应该与目标物体之间的距离呈线性关系,但实际上并不是这样。在黑暗环境中,测试激光测距模块与不同反射率的物体之间的距离,真实距离与实际测量距离的输出对比关系如上图所示。大概意思就是激光测距模块和反射物体的光反射率存在一定的关系,而且测量数据和真实值之间会存在数据抖动,也就是数据偏移。其他原理就不介绍了(主要是笔者也没看懂),下面直接上arduino代码吧!不带phyphox的代码:#include <Wire.h> #include "Adafruit_VL6180X.h" Adafruit_VL6180X vl = Adafruit_VL6180X(); void setup() { Serial.begin(115200); // wait for serial port to open on native usb devices while (!Serial) { delay(1); } Serial.println("Adafruit VL6180x test!"); if (! vl.begin()) { Serial.println("Failed to find sensor"); while (1); } Serial.println("Sensor found!"); } void loop() { float lux = vl.readLux(VL6180X_ALS_GAIN_5); Serial.print("Lux: "); Serial.println(lux); uint8_t range = vl.readRange(); uint8_t status = vl.readRangeStatus(); if (status == VL6180X_ERROR_NONE) { Serial.print("Range: "); Serial.println(range); } // Some error occurred, print it out! if ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) { Serial.println("System error"); } else if (status == VL6180X_ERROR_ECEFAIL) { Serial.println("ECE failure"); } else if (status == VL6180X_ERROR_NOCONVERGE) { Serial.println("No convergence"); } else if (status == VL6180X_ERROR_RANGEIGNORE) { Serial.println("Ignoring range"); } else if (status == VL6180X_ERROR_SNR) { Serial.println("Signal/Noise error"); } else if (status == VL6180X_ERROR_RAWUFLOW) { Serial.println("Raw reading underflow"); } else if (status == VL6180X_ERROR_RAWOFLOW) { Serial.println("Raw reading overflow"); } else if (status == VL6180X_ERROR_RANGEUFLOW) { Serial.println("Range reading underflow"); } else if (status == VL6180X_ERROR_RANGEOFLOW) { Serial.println("Range reading overflow"); } delay(50); } 带phyphox的代码:#include <phyphoxBle.h> //使用VL6180X #include <Wire.h> #include "Adafruit_VL6180X.h" Adafruit_VL6180X vl = Adafruit_VL6180X(); float fV = 0.00; void setup() { PhyphoxBLE::start("激光测距仪"); PhyphoxBleExperiment plotVoltage; plotVoltage.setTitle("高精度激光传感器测距"); plotVoltage.setCategory("arduino"); plotVoltage.setDescription("使用VL6180X测微小距离,量程不大于20cm,精度1mm。"); //View PhyphoxBleExperiment::View firstView; firstView.setLabel("MyView"); //Create a "view" //Graph PhyphoxBleExperiment::Graph firstGraph; firstGraph.setLabel("位置-时间 图像"); firstGraph.setUnitX("s"); firstGraph.setUnitY("mm"); firstGraph.setLabelX("time"); firstGraph.setLabelY("displacemet"); //Value PhyphoxBleExperiment::Value firstValue; //Creates a value-box. firstValue.setLabel("距离值:"); //Sets the label firstValue.setPrecision(3); //The amount of digits shown after the decimal point. firstValue.setUnit("mm"); //The physical unit associated with the displayed value. firstValue.setColor("FFFFFF"); //Sets font color. Uses a 6 digit hexadecimal value in "quotation marks". firstValue.setChannel(2); firstValue.setXMLAttribute("size=\"2\""); firstGraph.setChannel(0, 1); firstView.addElement(firstGraph); firstView.addElement(firstValue); //attach value to view plotVoltage.addView(firstView); PhyphoxBLE::addExperiment(plotVoltage); //以下可离开Phyphox使用串口调试 Serial.begin(115200); // wait for serial port to open on native usb devices while (!Serial) { delay(1); } Serial.println("Adafruit VL6180x test!"); if (! vl.begin()) { Serial.println("Failed to find sensor"); while (1); } Serial.println("Sensor found!"); } void loop() { float lux = vl.readLux(VL6180X_ALS_GAIN_5); //Serial.print("Lux: "); Serial.println(lux); uint8_t range = vl.readRange(); uint8_t status = vl.readRangeStatus(); if (status == VL6180X_ERROR_NONE) { Serial.print("Range: "); Serial.println(range); fV = float(range); } else { fV = -1.00; } // Some error occurred, print it out! if ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) { Serial.println("System error"); } else if (status == VL6180X_ERROR_ECEFAIL) { Serial.println("ECE failure"); } else if (status == VL6180X_ERROR_NOCONVERGE) { Serial.println("No convergence"); } else if (status == VL6180X_ERROR_RANGEIGNORE) { Serial.println("Ignoring range"); } else if (status == VL6180X_ERROR_SNR) { Serial.println("Signal/Noise error"); } else if (status == VL6180X_ERROR_RAWUFLOW) { Serial.println("Raw reading underflow"); } else if (status == VL6180X_ERROR_RAWOFLOW) { Serial.println("Raw reading overflow"); } else if (status == VL6180X_ERROR_RANGEUFLOW) { Serial.println("Range reading underflow"); } else if (status == VL6180X_ERROR_RANGEOFLOW) { Serial.println("Range reading overflow"); } PhyphoxBLE::write(fV,fV); delay(10); PhyphoxBLE::poll(); }所有用到的文件我已经放百度网盘了,大家自行下载即可:{cloud title="arduino源文件下载" type="bd" url="https://pan.baidu.com/s/1iJvtCYAtiO3w7ILH91VG_w?pwd=xjp7 " password="xjp7"/}准确性验证: 将esp32和激光模块接入我设计的扩展板,接线很简单,scl接P21,sda接P22即可。 确定物体垂直于桌面, 将直尺0刻度线放在物体初始位置: 传感器读数,初步判断数据可靠:
2022年11月06日
66 阅读
0 评论
0 点赞
2022-06-22
神奇的卫星轨道
卫星轨道微分方程: 卫星运动中的有心力是保守力,机械能守恒定律成立.因此,我们可以采用总能量来讨论卫星轨道的具体形式.在平方反比引力问题中,力$F(r)$的具体形式已知. 因为有心力是保守力,故一定存在势能$V$,有$$F=- \nabla V(1)$$$$V= \int-F(r)dr=\int \frac{k^2m}{r^2}dr(2)$$ (2)式中$k^2=Gm_地$是一个与卫星无关而只和地球有关的量,$r$为卫星和地球之间的距离, $m$为卫星质量.取无穷远处的势能为零,则得质点在距力心为$r$时的引力势能为:$$V(r)=\int_{0}^{r} \frac{k^2m}{r^2}dr=-\frac{k^2m}{r}(3)$$ 我们在研究有心力问题时,如图1所示,通常将机械能守恒定律和动量矩守恒定律结合起来.常用如下两个方程作为基本方程:$$\frac{1}{2}m(\dot{r}^2+r^2 \dot{\theta^2})+V(r)=E(4)$$$$r^2 \dot{\theta}=h(5)$$ 式子中$h$是常数 联立$(3)$和$(4)$式可得:$$\frac{1}{2}m\left( \dot{r}^2+r^2\dot{\theta}^2 \right) -\frac{k^2m}{r}=E(6)$$ 为了消去$(6)$式中的$dt$ ,我们先做如下变换:$$\dot{r}=\frac{dr}{dt}=\frac{drd\theta}{d\theta dt}(7)$$ 将$(5)$带入$(7)$可得:$$ \dot{r}=\frac{dr}{dt}=\frac{drd\theta}{d\theta dt}=\frac{h}{r^2}\frac{dr}{d\theta}(8) $$ 将$(6)和(8)$联立可得:$$ \frac{1}{2}m\left[ \frac{h^2}{r^4}\left( \frac{dr}{d\theta} \right) ^2+\frac{h^2}{r^2}-\frac{2k^2}{r} \right] =E(9) $$ 解出$\frac{dr}{d\theta}$ ,并分离变量并积分可得:$$ \mathrm{arc}\sin \frac{2k^2r-2h^2}{r\sqrt{4k^4+\frac{8Eh^2}{m}}}=\theta +\frac{3}{2}\pi -\theta _0(10) $$$$ r=\frac{h^2/k^2}{1+\sqrt{1+2h^2E/k^4m}\left[ \cos \left( \theta -\theta _0 \right) \right]}(11) $$ 已知极坐标系的标准圆锥曲线方程为:$$ r=\frac{p}{1+e\cos \theta}(12) $$ 令$p=\frac{h^2}{k^2}$ ,$e=\sqrt{1+\frac{2E}{m}\left( \frac{h}{k^2} \right) ^2}$,所以可以将式$(11)$改写成$(12)$式的形式.由式$(12)$可知,因为$\frac{2}{m}\left( \frac{h}{k^2} \right) ^2$的值恒为正,所以总能量 决定了卫星轨道的形状. 下面我们分类讨论:$E<0$ ,则 $e<1$,轨道为椭圆;$E=0$ ,则 $e=1$,轨道为抛物线;$E>0$ ,则 $e>1$,轨道为双曲线.数值模拟1、圆轨道2、椭圆轨道3、抛物线轨道3、双曲线轨道
2022年06月22日
243 阅读
0 评论
5 点赞
2022-05-12
向心加速度公式推导——惠更斯法
向心加速度公式推导——惠更斯法演示说明点击“启动动画”即可观察$t$越来越小时的向心加速度大小变化情况。程序演示
2022年05月12日
234 阅读
0 评论
8 点赞
2022-04-07
手把手教你理解力的平行四边形法则
力的平行四边形法则演示程序。
2022年04月07日
200 阅读
0 评论
4 点赞
2022-03-30
双杆模型(1)- 让复杂的双杆模型变得清晰可见
1、问题导入: 如图所示,两光滑金属导轨水平放置,存在一垂直于导轨平面的匀强磁场,磁感应强度为$B$,左侧导轨的间距为2$L$,右侧导轨的间距为$L$,金属杆$MN$的质量为$m$,电阻为$r$,金属杆$PQ$的质量为$2m$,电阻为$R$。现给导体棒$MN$一个水平向右的初速度$v_0$,金属杆$PQ$一直在左侧的导轨上运动,其余电阻不计,当系统到达稳定时: (1)分析$MN$杆、$PQ$杆的运动状态,并定性画出两金属杆的运动图像;(2)求$MN$杆、$PQ$杆的速度大小;(3)求回路中通过的电荷量;2、答案:(1)两金属杆运动时,回路中的电动势逐渐减小,两金属杆受到的安培力逐渐减小,即运动的加速度逐渐减小,即$MN$做加速度逐渐减小的减速运动,$PQ$杆做加速度逐渐减小的加速运动。(2)电路达到稳定的条件为两杆切割磁感线产生的电动势相等,即:$$2BLv_{PQ}=BLv_{MN}$$对$MN$分析,由动量定理得:$$mv_{MN}-mv_0=-BILt=-BLq$$对$PQ$分析,由动量定理得:$$mv_{PQ}-0=2BILt=2BLq$$$$\therefore v_{MN}=\frac{2}{3}v_0,v_{PQ}=\frac{1}{3}v_0$$(3)$$q=\frac{mv_{0}}{3BL}$$3、演示动画:{ggb class="ggbapplet" src="https://ggb.phycat.cn/unit/unit.php?id=layjbod4" width="1216" height="744"/}
2022年03月30日
448 阅读
0 评论
8 点赞
2022-03-22
动态平衡问题-手把手教你解决烦人的挡板问题
本程序用于演示小球在斜面和挡板共同作用下的动态平衡过程,非常清晰和直观的展示了力的变化过程。
2022年03月22日
338 阅读
1 评论
11 点赞
2022-02-24
波干涉相消时的演示程序
此程序用来演示演示波的干涉相消现象,动画比较直观。
2022年02月24日
249 阅读
0 评论
0 点赞
2022-02-24
波干涉相长时的演示程序
此程序用来演示干涉相长现象。
2022年02月24日
272 阅读
1 评论
0 点赞
1
2