直接用手机做电容器充放电实验-第三个Phyphox-ESP32实验
直接用手机做电容器充放电实验
第三个Phyphox-ESP32实验
几年之前认为电容器充放电实验非专门配置的传感器实验不可能进行,后来随着学习和研究,改变了看法,发现有非常多的办法能够实现电容器充放电实验,定性的和定量的。
用Phyphox来做电容器充放电实验,也不是新探索,以前大家已经用Phyphox磁力计作为电流表观察过。只是现在是更加规范的测电流。
充电放电差不多,放电简单,5分钟就能结束,所以试了试放电。
电路非常简单,图1,用ESP32自带的+5V引出直接给2200μF的电解电容器充电,电容器与200Ω电阻并联。当把图中的K断开时,电容器即开始放电,用IO33和GND测出R上的电压,就得到了放电电流。
图1
Phyphox得到的放电曲线,很完美,图2。
图2
可以看到两件明显的事情:一个,是大约1.50s时间里,放电电流减为零。因为时间常数RC之积大约0.45秒,3倍即1.40秒,我们一般认为电容放电时3至5个时间常数,或者最多不超过10个时间常数,电容放电就结束了。这条曲线证实了这个说法,这可以迁移到汽车起动问题里减免一些争议,图3;另一个,在曲线上取出来大约0.45时间的最大值到某一值,可见电流之差0.017/0.025大约为0.68,与1-1/e的0.63相差不多,很好地解释了时间常数的物理意义。如图4。
图3
图4
实际实验器材,图5。
图5
程序代码。没有进一步改进,只是简单而又简单的。
/*
放电电路:
电解电容2200μF并联于+5V和GND之间,R=200Ω并联于电容器
先充电至5V,放电观察
充电电路与此类似。
*/
#include <phyphoxBle.h>
int Pin = 33;
int iV = 0;
float R=200.0;//采样电阻
void setup()
{
PhyphoxBLE::start("Capacitor");
PhyphoxBleExperiment plotCapacitor;
plotCapacitor.setTitle("Phyphox电容器充放电实验");
plotCapacitor.setCategory("Arduino Experiments");
plotCapacitor.setDescription("北京市和平街第一中学,梅晓璇,电容器充放电实验。");
//View
PhyphoxBleExperiment::View firstView;
firstView.setLabel("MyView"); //Create a "view"
//Graph
PhyphoxBleExperiment::Graph firstGraph;
firstGraph.setLabel("Current-time curve");
firstGraph.setUnitX("s");
firstGraph.setUnitY("A");
firstGraph.setLabelX("time");
firstGraph.setLabelY("Current");
firstGraph.setChannel(0, 1);
firstView.addElement(firstGraph);
plotCapacitor.addView(firstView);
PhyphoxBLE::addExperiment(plotCapacitor);
}
void loop()
{
iV = analogRead(Pin);
float cur = iV * 5.0 / 1024.0 / 4.0/R;
PhyphoxBLE::write(cur);
delay(50);
PhyphoxBLE::poll();
}