交直流数字电流表代码
时间: 2024-02-03 15:12:25 浏览: 22
下面是一个简单的交直流数字电流表的 Arduino 代码示例:
```
const int AC_PIN = A0; // 交流电压输入引脚
const int DC_PIN = A1; // 直流电压输入引脚
const int CURRENT_PIN = A2; // 电流输入引脚
const float VOLTAGE_DIVIDER_RATIO = 0.5; // 电压分压比例
const float CURRENT_SENSITIVITY = 0.185; // 电流传感器灵敏度(A/V)
void setup() {
Serial.begin(9600); // 打开串口通信
}
void loop() {
float acVoltage = readVoltage(AC_PIN, true); // 读取交流电压
float dcVoltage = readVoltage(DC_PIN, false); // 读取直流电压
float current = readCurrent(CURRENT_PIN); // 读取电流
// 输出电压和电流值到串口
Serial.print("AC Voltage: ");
Serial.print(acVoltage);
Serial.print(" V, DC Voltage: ");
Serial.print(dcVoltage);
Serial.print(" V, Current: ");
Serial.print(current);
Serial.println(" A");
delay(1000); // 延时 1 秒
}
// 读取电压值
float readVoltage(int pin, bool isAC) {
int samples = 100; // 采样次数
float sum = 0;
for (int i = 0; i < samples; i++) {
int reading = analogRead(pin);
float voltage = (reading / 1024.0) * 5.0;
if (isAC) {
voltage *= 1.414; // 交流电压峰值转换为有效值
}
sum += voltage;
delay(1);
}
float average = sum / samples;
float voltage = average / VOLTAGE_DIVIDER_RATIO;
return voltage;
}
// 读取电流值
float readCurrent(int pin) {
int samples = 100; // 采样次数
float sum = 0;
for (int i = 0; i < samples; i++) {
int reading = analogRead(pin);
float voltage = (reading / 1024.0) * 5.0;
float current = voltage / CURRENT_SENSITIVITY;
sum += current;
delay(1);
}
float average = sum / samples;
return average;
}
```
这个代码示例使用了一个交流电压输入引脚(AC_PIN)、一个直流电压输入引脚(DC_PIN)和一个电流输入引脚(CURRENT_PIN)。它通过采样并计算电压和电流来显示交流电压、直流电压和电流的值。注意,这只是一个简单的例子,实际应用中可能需要更多的处理和校准。