Настройка частоты считывания кода датчика тока SCT013 с помощью Arduino Uno
Я нашел этот код ниже для платформы Arduino, чтобы получить измерения тока с датчика SCT013, и мне интересно, как я могу определить «задержку» или «частоту» моих показаний? Я бы искал 200 Гц.
Код:
//
#include "EmonLib.h" // Включить библиотеку Emon
EnergyMonitor emon1; // Создать экземпляр
void setup()
{
Serial.begin(9600);
emon1.current(5, 60); // Ток: входной контакт, калибровка.
//калибровка описана ниже
}
void loop()
{
double Irms = emon1.calcIrms(1480); // Рассчитать только Irms
Serial.print(Irms*230.0); // Полная мощность
Serial.print(" ");
Serial.println(Irms); // Irms
}
//
@Lorena Moreira, 👍0
2 ответа
▲ 1
Вы пропускаете чтение, если последнее чтение было менее 1000/200 = 5 мс назад.
unsigned long lastRead;
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - lastRead >= 5){
double Irms = emon1.calcIrms(1480); // Рассчитать только Irms
Serial.print(Irms*230.0); // Полная мощность
Serial.print(" ");
Serial.println(Irms); // Irms
lastRead = currentMillis;
}
}
,
@ratchet freak
▲ 0
Если вам нужна частота дискретизации 200 Гц, этот код вам не подойдет.
В этой строке:
double Irms = emon1.calcIrms(1480);
вы делаете 1480 выборок так быстро, как только может Arduino.
Если вам нужна частота дискретизации 200 Гц, считывайте аналоговый пинг каждые 5 мс с помощью функции millis(). И когда у вас будет достаточно выборок, вы сможете вычислить среднеквадратичный ток https://en.wikipedia.org/wiki/Root_mean_square
Это пример кода:
unsigned int sample_time = 0;
int readings[200]; //число выборок 200
int i = 0;
setup() {
}
loop() {
if (millis() - sample_time > 5){
readings[i] = readAnalog(A0);
i++;
sample_time = millis();
}
if (i > 200)
Caculate_Irms();
i = 0;
}
,
@jecrespo
Смотрите также:
- Датчик тока ACS712 не изменяет свое значение даже при включенной лампочке
- Датчик чтения с текущим выходом с Arduino
- Могу ли я запустить 3 датчика движения с регулятором напряжения?
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как получить данные о весе с датчиков стеклянных электронных весов для ванной?
- Как подключить более 10 датчиков к Arduino uno r3