基尔霍夫定律与Arduino应用 | AI生成和翻译

Home 2025.03

使用 Arduino 验证基尔霍夫定律——特别是基尔霍夫电流定律(KCL)和基尔霍夫电压定律(KVL)——是融合电子学理论与动手实验的绝佳方式。KCL 指出,流入节点的总电流等于流出节点的总电流;而 KVL 则指出,闭合回路中电压降的总和等于电源电压。下面将介绍如何设计简单电路,并使用 Arduino 测量电流和电压来验证这些定律。

由于 Arduino 无法直接测量电流,我们将通过测量电阻两端的电压(使用欧姆定律:\( I = V/R \))来间接计算电流,并通过其模拟引脚(0-5V 范围)测量电压。接下来,我将概述两个实验——一个用于 KCL,一个用于 KVL——包含分步说明、接线图和代码。


实验一:验证基尔霍夫电流定律(KCL)

目标

证明流入节点的电流等于流出节点的电流。

电路设置

理论

Arduino 代码

void setup() {
  Serial.begin(9600); // 启动串行通信
}

void loop() {
  // 读取电压值(0-1023 映射到 0-5V)
  int sensorValue1 = analogRead(A0); // R1 两端的电压
  int sensorValue2 = analogRead(A1); // R2 两端的电压
  int sensorValue3 = analogRead(A2); // R3 两端的电压

  // 转换为电压值(5V 参考电压,10 位 ADC)
  float V1 = sensorValue1 * (5.0 / 1023.0);
  float V2 = sensorValue2 * (5.0 / 1023.0);
  float V3 = sensorValue3 * (5.0 / 1023.0);

  // 电阻值(单位:欧姆)
  float R1 = 330.0;
  float R2 = 470.0;
  float R3 = 680.0;

  // 计算电流(I = V/R)
  float I1 = V1 / R1;
  float I2 = V2 / R2;
  float I3 = V3 / R3;

  // 流入节点的总电流(假设电源电压为 5V)
  float totalResistance = 1.0 / ((1.0/R1) + (1.0/R2) + (1.0/R3)); // 并联电阻
  float Iin = 5.0 / totalResistance;

  // 输出结果
  Serial.print("I1 (mA): "); Serial.println(I1 * 1000);
  Serial.print("I2 (mA): "); Serial.println(I2 * 1000);
  Serial.print("I3 (mA): "); Serial.println(I3 * 1000);
  Serial.print("Iin (mA): "); Serial.println(Iin * 1000);
  Serial.print("I1+I2+I3 之和 (mA): "); Serial.println((I1 + I2 + I3) * 1000);
  Serial.println("---");

  delay(2000); // 等待 2 秒
}

验证


实验二:验证基尔霍夫电压定律(KVL)

目标

证明闭合回路中电压降的总和等于电源电压。

电路设置

理论

Arduino 代码

void setup() {
  Serial.begin(9600);
}

void loop() {
  // 读取电压值
  int sensorValueSource = analogRead(A0); // 5V 到 GND 之间的电压
  int sensorValueR1 = analogRead(A1);     // R1 两端的电压
  int sensorValueR2 = analogRead(A2);     // R2 两端的电压

  // 转换为电压值
  float Vsource = sensorValueSource * (5.0 / 1023.0);
  float VR1 = sensorValueR1 * (5.0 / 1023.0);
  float VR2 = sensorValueR2 * (5.0 / 1023.0);

  // 输出结果
  Serial.print("Vsource (V): "); Serial.println(Vsource);
  Serial.print("VR1 (V): "); Serial.println(VR1);
  Serial.print("VR2 (V): "); Serial.println(VR2);
  Serial.print("VR1 + VR2 (V): "); Serial.println(VR1 + VR2);
  Serial.println("---");

  delay(2000);
}

验证


提示与注意事项

这些实验简化了实际条件,但有效地演示了基尔霍夫定律。想要调整这些设置或需要特定部分(如接线或代码)的帮助吗?请告诉我!


Back Donate