Неинвазивный датчик тока

Несложно мониторить энергопотребление с использованием инвазивных (нужно испортить электрический кабель) способов снятия информации:

  • Сенсоры на основе эффекта Холла. См. статью про использование чипа ACS712. Встраивается в разрыв одного провода в кабеле.
  • Трансформатор напряжения. Провод разрезать не требуется, однако нужно разрезать оболочку кабеля, чтобы повесить трансформатор тока на один проводник. Стоимость трансформатора тока, особенно разъемного, довольно высокая.

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

Очевидно, что в качестве такого сенсора может выступать катушка индуктивности. Наведенное электромагнитное поле, усиленное операционнным усилителем и поданное на АЦП может быть проанализировано микроконтроллером.

На просторах Интернет нашел статью с подробными результатами замеров подобного неинвазивного детектора тока. Поскольку автор в описании упустил ряд моментов, немного дополню его статью и переведу основные моменты.

Схемотехника

В схеме используются следующие компоненты:

  • Операционный усилитель OP07C. Цена 0,8 USD за 10 шт. Заказывал здесь.
  • Неэкранированная катушка индуктивности. Брал набор 50 шт. различных катушек по цене меньше 4,5 USD для тестирования различных вариантов здесь. Из минусов — катушки не маркированные. 🙁
  • АЦП ADS1115 16 bit в данном проекте избыточен, но с ним удобно работать. Приобретен на Aliexpress. Цена порядка 1.5 USD. Использую плату вишневого цвета. Она компактнее.
  • Микроконтроллер MH ET Live Mini ESP32 приобретал на Aliexpress по цене 5 USD с доставкой. Мне нравится этот вариант исполнения, хотя он не пригоден для беспаечных плат прототипирования.
Неинвазивный датчик тока

Замер электромагнитного поля неразделенных проводов фазы и нейтрали — сложная задача, поскольку происходит практически полная взаимная компенсация полей. С одним проводом было бы проще, но не так интересно. При наличии высокочувствительного усилителя задача неинвазивного детектирования потребляемой мощности решаема. Я оттестировал схему автора, мои результаты совпадают с его информацией.

Тесты в статье проводились на кабеле с нагрузкой 230V (переменное напряжение).

Placement of inductor in relation to power cable
Положение катушки индуктивности по отношению к силовому кабелю

Эксперименты

Опущу вводную часть экспериментов. Она подробно рассмотрена в статье.

Для нагрузки 1000 Вт при использовании катушки индуктивности 100 uH. Нагрузка включалась на 20 мс. Отсчеты снимались с интервалом 1 с. Коэффициент усиления Aᵥ=1424.24 .

Results of the second test with a 1000W load. (Aᵥ=1424.24, L=100µH). The Load is turned on for 20 seconds again.
Measurements with a load of 1000W: (1) Aᵥ=470, L=100µH, (2) Aᵥ=1424.24, L=100µH, (3) Aᵥ=1424.24, L=10mH
  • (1) Aᵥ=470, L=100µH,
  • (2) Aᵥ=1424.24, L=100µH,
  • (3) Aᵥ=1424.24, L=10mH

Видно, что наибольший уровень сигнала при использовании индуктивности на 10 mH, но есть сдвиг по фазе.

При оптимальном размещении катушки индуктивности по отношению к кабелю датчик в состоянии определять нагрузку от 15 Вт. Уровень нужно калибровать для каждого прибора, разещения датчика и типа кабеля. Однако после того как датчик жестко закреплен в определенном положении на кабеле показания датчика стабильные.

Показания датчика, к сожалению, не совсем линейно зависят от нагрузки. Так что использовать для точных измерений датчик нельзя. На графике показано выходное напряжение в зависимости от мощности нагрузки именяемой от 4 Вт до 1160 Вт.

Напряжение на выходе неинвазивного датчика тока в зависимости от энергопотребления.  Логарифмическая шкала.
Напряжение на выходе неинвазивного датчика тока в зависимости от энергопотребления. Логарифмическая шкала.

Зависимость от положения датчика

Кау уже упоминалось ранее, от положения датчика на кабеле значительно зависит напряжение на выходе операционного усилителя.

На графике показаны результаты измерения выходного напряжения в зависимости от позиции датчика на кабеле. Производились 10 измерений с шагом в 45 градусов. Нагрузка 1000Вт, Aᵥ=1424.24, L1 = 100µH. Кабельдиаметром 8 мм, с проводами фаза, нейтраль и земля.

Максимальное выходнео напряжение получается при угле в 180°. При 90° результаты наихудшие.

Output of the current detection circuit with the inductor placed in 45° steps around a 3-wire power cable with a 1000W load
Выходное напряжение неинвазивного датчика тока в зависимости от положения датчика на 3-х проводном кабеле.

На диаграмме направленности показан уровень напряжения на выходе операционного усилителя в зависимости от положения катушки индуктивности относительно 3-х проводного кабеля с шагом в 5°.

3-х проводный кабель круглый, поэтому размещение катушки на кабеле несложно. Замеры на 2-х проводном кабеле были более сложные из-заовольной формы кабеля. Этим объясняются некоторые искажения в замерах. Кроме того 2-х проводный кабель запитывался нагрузкой в 20 Вт, а 3-хпроводный — 1000 Вт.

Output of the current detection circuit with the inductor placed in 5° steps around a 3-wire power cable with a 1000W load.
Выходное напряжение (диаграмма направленности) неинвазивного датчика тока в зависимости от положения на 3-х проводном кабеле с шагом 5° при нагрузке 1000 Вт.
Выходное напряжение (диаграмма направленности) неинвазивного датчика тока в зависимости от положения на 2-х проводном кабеле с шагом 5° при нагрузке 20 Вт.

Подключение неинвазивного дачика тока к ADS1115 (16bit ADC)

Схема присоединения несложная. Используется аналоговый вход ADS1115 A0. Питание всей схемы от USB порта микроконтроллера ESP32. На ESP32 вход SCL — GPIO22, SDA — GPIO21.

Программный код несложный. Расчет Vrms и соответствующего тока взят из моей статьи про снятие потребления с помощью ACS712.

Тонкий момент в схеме — приведение показаний АЦП к потребляемому току Irms. Я тестировал схему на электрочайнике с энергопотреблением ~8А, замеренный Uni-T UT61E.

  • Мощность потребления немного скачет, поэтому эта нагрузка не лучший вариант для точной калибровки.
  • У схемы есть шум. Его можно устранять аппаратно (в схему добавлена емкость на вход АЦП) или программно, усреднением и пр. подходами.
  • Величина напряжения зависит от размещения датчика на кабеле. Поэтому только после жесткой фиксации датчика, например, стяжкой, можно проводить калибровку.

Сначала mVperAmp устанавливаем равным 1 и снимаем показания на выходе АЦП. По результатам измерений у меня получилось, что 8А примерно соответствует 668 mV показаний ADC. Соответственно, коэффициент mVperAmp = 668/8.

#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads(0x48);

void setup() {
    Serial.begin(9600);
    ads.setGain(GAIN_ONE); //       +/- 4.096V  1 bit = 0.125mV
    ads.begin();
}

#define ADCSamples        65536.0 //16 bit ADC
#define OneSampleVolt     0.125 //+/- 4.096V  1 bit = 0.125mV//0.1875F;
#define ZeroCorrection    0
float mVperAmp = 668.0/8.0; //8A corresponds 688 mV

double Vrms = 0;
double AmpsRMS = 0;
double Vpeak = 0;

uint32_t start_time = 0;
int readValue = 0;
int maxValue = 0;
int minValue = ADCSamples;

void loop() {
  if (millis() - start_time < 250)
  {
    double readValue = ads.readADC_SingleEnded(0); //16 bits ADC read of input A0
    maxValue = (readValue > maxValue) ? readValue : maxValue;
    minValue = (readValue < minValue) ? readValue : minValue;
  }
  else
  {
    Vpeak = (maxValue - minValue)/2 * OneSampleVolt;
    Vrms = Vpeak * 0.707;
    AmpsRMS = Vrms/mVperAmp - ZeroCorrection;
    Serial.println("Amps RMS: " + String(AmpsRMS));
    maxValue = 0;
    minValue = ADCSamples;
    start_time = millis();
  }
}

Для теста электрочайник включался три раза. На графике видно, что неинвазивный датчик тока хорошо детектирует моменты включения и вполне стабильно показывает энергопотребление в районе 8А.

График энергопотребления построенный с помощью неинвазивного детектора тока.

Полезные ссылки

Spread the love
Запись опубликована в рубрике IT рецепты с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий