Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Arduino UNO和ZMPT101B监控断电_Arduino - Fatal编程技术网

使用Arduino UNO和ZMPT101B监控断电

使用Arduino UNO和ZMPT101B监控断电,arduino,Arduino,我正在利用Arduino UNO和ZMPT101B单相继电器实施断电报警系统 我的代码如下: #包括//便于计算的库 浮动测试频率=50;//测试信号频率(Hz) 浮动窗口长度=40.0/testFrequency;//对于统计人员来说,平均信号需要多长时间 int传感器=0//传感器模拟输入,这里是A0 浮点截距=-0.04;//根据校准测试进行调整 浮动斜率=0.0405;//根据校准测试进行调整 浮动电流_伏;//电压 无符号长打印周期=1000//刷新率 无符号long-previous

我正在利用Arduino UNO和ZMPT101B单相继电器实施断电报警系统

我的代码如下:

#包括//便于计算的库
浮动测试频率=50;//测试信号频率(Hz)
浮动窗口长度=40.0/testFrequency;//对于统计人员来说,平均信号需要多长时间
int传感器=0//传感器模拟输入,这里是A0
浮点截距=-0.04;//根据校准测试进行调整
浮动斜率=0.0405;//根据校准测试进行调整
浮动电流_伏;//电压
无符号长打印周期=1000//刷新率
无符号long-previousMillis=0;
无效设置(){
Serial.begin(9600);//启动串行端口
}
void循环(){
RunningStatistics inputStats;//简单地说,RMS的实际计算需要大量的编码
inputStats.setWindowSecs(窗口长度);
虽然(正确){
传感器=模拟读取(A0);//读取模拟输入值:
inputStats.input(传感器);//记录到Stats函数
if((无符号长)(millis()-previousMillis)>=打印周期){
previousMillis=millis();//每秒更新时间
串行打印(“\n”);
当前电压=截距+斜率*inputStats.sigma();//偏移和振幅的校准
电流电压=电流电压*(40.3231);//振幅的进一步校准
串行打印(“\t电压:”);
Serial.print(current_Volts);//计算和值显示完成,如果您使用的是OLED显示器,则其余部分完成

如果(电流)\u伏试着用电压表看看A0引脚上的电压是好是坏。你不需要解码电压,只要看看传感器是否按预期工作即可。

感谢Arduino论坛用户:leongjerland

我能够解决这个问题。 代码如下:

if (current_Volts < 229) {
        if (!alarmSent) {
          test_loop();
          alarmSent = true;
        }
      }
      else {
        alarmSent = false;
      }
    }
if(当前电压<229){
如果(!alarmSent){
test_loop();
alarmSent=true;
}
}
否则{
alarmSent=false;
}
}

测试回路内部使用
延迟
不会有任何问题。断电结束后,当前电压的值是多少?你得到的值是否高于
229
?另外,为什么在回路中使用智能延迟?谢谢回答。断电时显示的值较低,但重新通电时仍显示较低的值。我怀疑显示的是较旧的值。我需要检查此延迟GSM模块是否正在发送SMS。没有延迟,GSM模块将不工作,并在断电1秒后发送1000条SMS。您的逻辑似乎正常,我认为您的问题出在过滤器上。请尝试为传感器添加打印语句,并检查数值变化。如果我打印传感器输出,数值将不会是RMS。因为它是模拟输出,我担心数值将毫无用处。我知道,但我的意思是,可能是您使用的过滤器有问题,请打印数值,并检查当传感器变高时它是否升高。