Датчик тока ACS712 не изменяет свое значение даже при включенной лампочке

Моя задача состоит в том, чтобы определить величину тока, потребляемого лампочкой, с этой целью я использовал датчик тока ACS712 30A, правильно подключил все соединения, как показано на схеме ниже

Я перепробовал все доступные коды для расчета тока...

Код Arduino :

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



void loop(){
  int rVal = 0;
  int sampleDuration = 100;       // 100ms
  int sampleCount = 0;
  unsigned long rSquaredSum = 0;
  int rZero = 511;                // Только в иллюстративных целях - должно быть измерено для калибровки датчика.

  uint32_t startTime = millis();  // take samples for 100ms
  while((millis()-startTime) < sampleDuration)
  {
    rVal = analogRead(A0) - rZero;
    rSquaredSum += rVal * rVal;
    sampleCount++;
  }

  double voltRMS = 5.0 * sqrt(rSquaredSum / sampleCount) / 1024.0;

  // x 1000 для преобразования вольт в милливольты
  // разделите на количество милливольт на ампер, чтобы определить измеренные амперы
  // модуль 20A 100 мВ/А (так что в этом случае АМПЕРСРМ = 10 * Вольт,
  double ampsRMS = voltRMS * 10.0;
  Serial.println(ampsRMS);
  Serial.println(analogRead(A0));
}

Выход

Выход остается прежним, даже когда лампочка все еще горит.

Заранее благодарю Вас :)

, 👍1

Обсуждение

выведите значения rSquaredSum / sampleCount и voltRMS., @Juraj

Сколько тока на самом деле использует ваша лампочка? Или по-другому: какой это процент от 30А?, @timemage

@timemage, на картинке это 230 В / 100 Вт.Это должно иметь значение в моем опыте. но это может быть потеряно в расчетах, @Juraj

Отчасти это то, о чем я думаю, но также и для того, чтобы убедиться, что его ожидания соответствуют тому, что на самом деле будет делать датчик., @timemage

сделайте 10 показаний с интервалом менее 100 мс между показаниями ... не делайте никаких вычислений со значениями ... храните их в массиве ... после завершения считывания выведите значения в serial, @jsotola

Попробуйте рассказать нам о различных типах кода и учебных пособиях, которым вы следовали, чтобы мы могли лучше сузить ответ., @DragonflyRobotics


1 ответ


1

В комментарии о rZero = 511;вы написали:

Только в иллюстративных целях - должны быть измерены для калибровки датчика.

Это вполне может быть причиной вашей проблемы. Если вместо 511 “ноль” вашего измерения составляет около 445, то в конечном итоге вы измеряете несуществующий постоянный ток около 3,23 А. Когда вы включаете лампочку, вы добавляете примерно 435 мА (100 Вт / 230 В) переменного тока. Тогда общий среднеквадратичный ток, который вы видите, равен:

√(3.232 + 0.4352) ≈ 3.26 А

Едва заметен при разрешении, с которым вы печатаете результат. И это при условии, что вы используете лампочку мощностью 100 Вт, как показано на схеме. Эти лампочки становится все труднее достать. Если вы используете что-либо менее мощное, вы можете не увидеть никаких изменений в отображаемом значении.

В качестве быстрого и грязного исправления вы можете заменить 511 на 445. Лучшим решением было бы вычислить среднее квадратичное значение только части переменного тока сигнала. Другими словами, вычислите:

√(среднее(текущее2) − среднее(текущее)2)

,

как вы пришли к выводу, что ноль равен 445? время между этими измерениями составляет более 100 миллисекунд. он мог просто поймать одну и ту же часть волны, @Juraj

@Juraj: Постоянное значение, дающее 3,23 А, должно быть 511±66, но значения, показанные на последовательном мониторе, соответствуют только 511-66., @Edgar Bonet