Перейти к содержимому

← Web API - POST | Содержание | Далее: Руководство MQTT →

10. Калибровка датчиков



Содержание




10.1 Обзор

ACRouter поддерживает калибровку датчиков для обеспечения точных измерений напряжения и тока. Калибровка выполняется путём расчёта калибровочного коэффициента на основе измерений эталонными приборами.


Зачем нужна калибровка?

  • Производственные допуски: каждый датчик имеет небольшие отклонения от номинальных значений
  • Различия в напряжении сети: в разных странах используются разные стандарты (230 В, 110 В, 220 В, 240 В и т.д.)
  • Точность измерений: калибровка обеспечивает точность ±2% или выше


Заводские значения по умолчанию

При первой загрузке или после сброса используются следующие значения:

Датчик Модель Коэффициент Примечание
Напряжение ZMPT107 328.57 Откалиброван для 230 В (0.70 В RMS = 230 В AC)
Ток SCT-013-030 30.0 Максимум 30 А



10.2 Калибровка датчика напряжения ZMPT107


Начиная с версии 2.0, ACRouter поддерживает автоматическую калибровку датчика напряжения. Система самостоятельно измеряет выход датчика (VDC RMS) и рассчитывает калибровочный коэффициент.

Процедура автоматической калибровки

Шаг 1: Измерьте напряжение сети

Измерьте реальное напряжение сети мультиметром:

python
Example:
Multimeter shows: 232.5V AC

Шаг 2: Запустите автоматическую калибровку

Введите команду с измеренным значением:

bash
hardware-voltage-calibrate 232.5

Шаг 3: Система автоматически:

  1. Измеряет текущий выход датчика (VDC RMS) — например, 0.72 В
  2. Рассчитывает коэффициент: 232.5 / 0.72 = 322.92
  3. Сохраняет данные калибровки в NVS

Пример вывода:

python
Auto-calibrating voltage sensor...
Measured grid voltage (from multimeter): 232.5 V
Raw sensor VDC output: 0.72 V
Calculated multiplier: 322.92
Sensor type: ZMPT107

Configuration updated:
  nominal_vdc = 0.72 V (measured)
  multiplier = 322.92

Calibration saved to NVS. Please reboot to apply: reboot

Шаг 4: Перезагрузите устройство

bash
reboot

Преимущества автоматической калибровки:

No need to adjust sensor potentiometer manually
Works with any sensor output voltage (0.5V, 0.7V, 1.0V, etc.)
Automatically updates nominal_vdc to actual measured value
More accurate and faster calibration

Через Web API:

bash
curl -X POST http://192.168.4.1/api/hardware/voltage/calibrate \
  -H "Content-Type: application/json" \
  -d '{"measured_vac": 232.5}'

Через веб-интерфейс:

  1. Открыть http:///settings/hardware
  2. Find "Voltage Sensor Auto-Calibration" section
  3. Ввести измеренное напряжение сети (VAC)
  4. Click "Calibrate" button
  5. Перезагрузить устройство


Ручная калибровка (устаревший метод)

Для совместимости со старыми версиями или в особых случаях можно использовать ручной расчёт.

Принцип калибровки

The ZMPT107 sensor is factory-calibrated so that:
- Nominal grid voltage0.70V RMS output (may vary ±0.1V)
- Formula: multiplier = V_measured / V_sensor_vdc

Процедура ручной калибровки

Шаг 1: Подготовка

  1. Подключите ACRouter к сети питания
  2. Подключитесь к Serial-порту (115200 бод)
  3. Убедитесь, что датчик ZMPT107 подключён к настроенному GPIO

Шаг 2: Измерьте напряжение сети

Измерьте реальное напряжение сети мультиметром:

python
Example:
Multimeter shows: 232.5V AC

Шаг 3: Проверьте выход датчика

Выполните команду для просмотра сырого значения VDC:

bash
hardware-voltage-show

Пример вывода:

python
Voltage Sensor Configuration:
  GPIO: 35
  Type: ZMPT107
  Nominal VDC: 0.70 V (factory default)
  Multiplier: 328.57
  Current reading: 232.5 V (from 0.72 V raw)
                           ^^^^^^ ← use this value

Шаг 4: Рассчитайте коэффициент

Используйте формулу с реальным VDC датчика:

python
multiplier = V_measured / V_sensor_vdc

Для примера выше (232.5 В / 0.72 В):

python
multiplier = 232.5 / 0.72 = 322.92

Шаг 5: Примените калибровку

Через консоль:

bash
hardware-voltage-config-multiplier 322.92

Через Web API:

bash
curl -X POST http://192.168.4.1/api/hardware/config \
  -H "Content-Type: application/json" \
  -d '{
    "adc_channels": [
      {
        "gpio": 35,
        "type": 1,
        "multiplier": 322.92,
        "offset": 0.0,
        "enabled": true
      }
    ]
  }'

Шаг 6: Перезагрузите устройство

bash
reboot


Важные замечания

⚠️ WARNING: The ZMPT107 sensor uses a voltage divider circuit:
- DC bias center: 1.65V DC
- Maximum peak voltage: 3.06V (for 230V AC)
- This is very close to ESP32 ADC maximum input (3.3V)!

Recommendations:
- Do not use with grid voltage above 250V AC
- For voltages above 240V, consider factory recalibration of ZMPT107 (reduce output to 0.60V = 240V)




10.3 Калибровка датчика тока SCT-013


Принцип калибровки

SCT-013 sensors are available in different variants:
- SCT-013-030: 0-30A, output 0-1V
- SCT-013-050: 0-50A, output 0-1V
- SCT-013-100: 0-100A, output 0-1V

Формула: multiplier = I_measured / V_adc


Процедура калибровки

Шаг 1: Подготовка

  1. Подключите известную нагрузку (например, электрический нагреватель 2000 Вт)
  2. Измерьте ток токоизмерительными клещами
  3. Убедитесь, что датчик SCT-013 правильно установлен на проводе

Шаг 2: Измерьте ток

python
Example:
Load: 2000W heater
Grid voltage: 230V
Expected current: 2000W / 230V = 8.7A
Clamp meter shows: 8.65A

Шаг 3: Проверьте показания ADC тока

Выполните команду:

bash
status

Найдите значения тока:

python
Power Measurements:
  Voltage:     230.0 V
  Current (Load):   7.2 A    ← Uncalibrated current
  Current (Grid):   0.0 A
  ...

Шаг 4: Рассчитайте коэффициент

Используйте формулу:

python
multiplier_new = multiplier_old × (I_measured / I_current)

Для примера выше:

python
multiplier_old = 30.0  (factory default SCT-013-030)
I_measured = 8.65A (clamp meter reading)
I_current = 7.2A (ACRouter reading)

multiplier_new = 30.0 × (8.65 / 7.2) = 36.04

Шаг 5: Примените калибровку

Через Web API:

json
{
  "adc_channels": [
    {
      "gpio": 39,
      "type": 2,
      "multiplier": 36.04,
      "offset": 0.0,
      "enabled": true
    }
  ]
}

Шаг 6: Проверка

Перезагрузите и проверьте:

bash
reboot
bash
status

Теперь ток должен отображаться корректно:

python
Power Measurements:
  Current (Load):   8.65 A    ← Accurate value!


Важные замечания

  • Для точной калибровки используйте стабильную активную нагрузку (нагреватели, лампы накаливания)
  • НЕ используйте для калибровки: импульсные блоки питания или электродвигатели (высокий пусковой ток)
  • Минимальный ток для калибровки: 5 А (при более низких значениях шум ADC влияет на показания)



10.4 Сохранение калибровки

Все изменения конфигурации автоматически сохраняются в NVS (Non-Volatile Storage) и сохраняются после перезагрузки.


Проверка сохранения

После перезагрузки выполните:

bash
hardware-config

Вы должны увидеть обновлённые значения multiplier.




10.5 Сброс до заводских значений


Через консоль

bash
hardware-reset

Затем перезагрузите:

bash
reboot


Через Web API

Отправьте POST-запрос на http:///api/hardware/config/reset:

bash
curl -X POST http://192.168.4.1/api/hardware/config/reset



Справочная таблица: типичные значения коэффициентов


Датчики напряжения

Модель Напряжение сети Калибровка Коэффициент
ZMPT107 230 В AC 0.70 В = 230 В 328.57
ZMPT107 220 В AC 0.70 В = 220 В 314.29
ZMPT107 240 В AC 0.70 В = 240 В 342.86
ZMPT107 110 В AC 0.70 В = 110 В 157.14


Датчики тока

Модель Диапазон Выход Коэффициент
SCT-013-030 0–30 А 1 В при 30 А 30.0
SCT-013-050 0–50 А 1 В при 50 А 50.0
SCT-013-100 0–100 А 1 В при 100 А 100.0



Полезные команды

bash
# Show current measurements
status

# Show sensor configuration
hardware-config

# Reset to factory defaults
hardware-reset

# Reboot
reboot

← Web API - POST | Содержание | Далее: Руководство MQTT →