我想测量交流电压信号的峰峰值电压。电压本身约为 220V 和 60Hz。当通过连接到 Arduino 的传感器进行测量时,它会缩小到 5V 到 0V。
几年前我用我在互联网上找到的代码实现了这个。
float getVPP(const uint8_t sensorIn)
{
float result = 0;
int readValue = 0;
int maxValue = 0;
int minValue = 4096;
uint32_t start_time = millis();
while ((millis() - start_time) < 1000)
{
readValue = analogRead(sensorIn);
Serial.println(readValue);
if (readValue > maxValue)
{
maxValue = readValue;
}
if (readValue < minValue)
{
minValue = readValue;
}
}
result = ((maxValue - minValue) * 5.0) / 4096.0;
return abs(result);
}
我不确定这是否是最好的方法。对于初学者来说,我想完全摆脱它,但这不是重点。我想知道的是,有没有更好的方法来读取交流电源电压?我的最终目标是计算功率。我使用相同的函数来计算电流的峰峰值,将两者除以0.707
得到 RMS 值,然后将它们相乘。
任何帮助将不胜感激。
编辑: 电气测量电源电压和电流本身的行为是完全安全的,并且已使用相关传感器完成。我所指的“信号”处于安全的 5V 电平。所以这个问题纯粹与信号分析有关。