用Phyphox绘制探究电源输出功率与外电阻的关系
用Phyphox绘制探究电源输出功率与外电阻的关系
这个实验本来是说来简单的,但在Phyphox做起来却不如想象的简单。前后差不多经历了近两周的时间。
很多时候物理实验就是如此,人们总是以为简单,那是因为并没真正实操过,操作时往往都不简单。
一. 电动势恒定、内阻确定的电池的获得
使用ESP32的5V输出脚作为电动势,在GND引脚上串联一个定值电阻作为内阻,从定值电阻上再输出电压,这个电压就可以看成路端电压了。
二. 器材、电路和ESP32、Phyphox
1. 器材:
1K电位器和470Ω定值电阻、ESP32和Phyphox,面包板、跳线若干。
2. 电路:
3. ino文件:
/*
对定值内阻的电源,演示电源的输出功率与外电阻的关系
*/
#include <phyphoxBle.h>
int pin33 = 33; //用来测内阻上的电压
float r = 470; //内阻
void setup()
{
//显示信息使用
String Mir = "北京市和平街第一中学,梅晓璇.";
String acle = "探究电源(内阻确定)输出功率与外电阻的关系.";
String M = Mir + acle;
char sArr[M.length() + 1];
M.toCharArray(sArr, M.length() + 1);
PhyphoxBLE::start("MyVoltage");
PhyphoxBleExperiment plotVoltage;
plotVoltage.setTitle("探究电源输出功率");
plotVoltage.setCategory("Arduino Experiments");
plotVoltage.setDescription(sArr);
//View
PhyphoxBleExperiment::View firstView;
firstView.setLabel("MyView"); //Create a "view"
//Graph
PhyphoxBleExperiment::Graph firstGraph;
firstGraph.setLabel("P-R曲线");
firstGraph.setUnitX("Ω");
firstGraph.setUnitY("mW");
firstGraph.setLabelX("外电路电阻R");
firstGraph.setLabelY("电源输出功率P");
firstGraph.setChannel(1, 2);
firstView.addElement(firstGraph);
plotVoltage.addView(firstView);
PhyphoxBLE::addExperiment(plotVoltage);
Serial.begin(9600);//用于调试
}
void loop()
{
float ur = analogRead(pin33) * 5.0 / 1024.0 / 4.0; //内电压
float i = ur / r; //干路电流
float R = 5.0 * r / ur - r; //计算外电阻,并显示
float P = 1000.0 * ((5.0 - ur) * i); //输出功率
PhyphoxBLE::write( R, P);
delay(500);
Serial.println(ur);//内电压,用于调试
Serial.println(R);//外电阻,用于调试
Serial.println(P);//输出功率,用于调试
PhyphoxBLE::poll();
}
4. 实物图:
5.测量效果:
效果1:
效果2:
效果3:
三. 几点经验
1. 注意多试几个ESP32板上的GND。
注意5V引脚紧邻的GND引脚,如果连接电路时使用这个引脚,电路不能正常工作,IO33总是测出5V电压,如果使用IO12和IO13之间的GND,则正常工作。原因未知。
2. 注意电位器精度、阻值的选择。
三脚电位器1K或者1K以下的不多见,常见10K,需使用1K或者1K以下的,主要是调节的时候,阻值又可连续变化,同时电路总阻值也不会因为太少而有大的电流。电阻跳变太大时,图象规律不明显。另外delay()可以设为100,曲线会进一步细腻,但杂点也会增加。
3. 注意串口调试和蓝牙不能同时进行。
当串口调试时,蓝牙不能被发现和连接。最终烧录后,所有针对串口的代码行,不用理会,因为它们并不被蓝牙传送。
四. 一个可能的设想
作为探究性实验,应该让电池的内阻改变几个值来观察,这里使用的是470Ω电阻。有一种简易性质的可编程电阻板,可以精细调节需要的电阻,可供使用。