Zum Inhalt springen

← Web API - POST | Inhaltsverzeichnis | Weiter: MQTT-Anleitung →

10. Sensorkalibrierung



Inhaltsverzeichnis




10.1 Übersicht

ACRouter unterstützt Sensorkalibrierung, um genaue Spannungs- und Strommessungen sicherzustellen. Die Kalibrierung erfolgt durch Berechnung eines Multiplikatorkoeffizienten auf Basis von Messungen mit Referenzinstrumenten.


Warum ist eine Kalibrierung erforderlich?

  • Fertigungstoleranzen: Jeder Sensor hat kleine Abweichungen von den Nennwerten
  • Unterschiedliche Netzspannungen: Verschiedene Länder verwenden unterschiedliche Standards (230V, 110V, 220V, 240V usw.)
  • Messgenauigkeit: Die Kalibrierung gewährleistet eine Genauigkeit von ±2 % oder besser


Werkseitige Standardwerte

Beim ersten Start oder nach einem Reset werden folgende Werte verwendet:

Sensor Modell Multiplikator Hinweis
Spannung ZMPT107 328.57 Kalibriert für 230V (0,70V RMS = 230V AC)
Strom SCT-013-030 30.0 Maximal 30A



10.2 ZMPT107 Spannungssensor-Kalibrierung


Ab Version 2.0 unterstützt ACRouter die automatische Kalibrierung des Spannungssensors. Das System misst automatisch den Sensorausgang (VDC RMS) und berechnet den Kalibrierungsmultiplikator.

Ablauf der automatischen Kalibrierung

Schritt 1: Netzspannung messen

Messen Sie mit einem Multimeter die tatsächliche Netzspannung:

python
Example:
Multimeter shows: 232.5V AC

Schritt 2: Auto-Kalibrierung starten

Geben Sie den Befehl mit der gemessenen Spannung ein:

bash
hardware-voltage-calibrate 232.5

Schritt 3: Das System führt automatisch durch:

  1. Messung des aktuellen Sensorausgangs (VDC RMS) — z. B. 0,72V
  2. Berechnung des Multiplikators: 232.5 / 0.72 = 322.92
  3. Speicherung der Kalibrierungsdaten im NVS

Beispielausgabe:

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

Schritt 4: Neustart

bash
reboot

Vorteile der automatischen Kalibrierung:

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

Über 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}'

Über Web-Oberfläche:

  1. Öffnen Sie http:///settings/hardware
  2. Find "Voltage Sensor Auto-Calibration" section
  3. Geben Sie die gemessene Netzspannung (VAC) ein
  4. Click "Calibrate" button
  5. Starten Sie das Gerät neu


Manuelle Kalibrierung (Legacy-Methode)

Für Kompatibilität mit älteren Versionen oder Spezialfälle kann die manuelle Berechnung verwendet werden.

Kalibrierungsprinzip

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

Ablauf der manuellen Kalibrierung

Schritt 1: Vorbereitung

  1. Schließen Sie ACRouter an die Netzspannung an
  2. Verbinden Sie sich mit der seriellen Schnittstelle (115200 Baud)
  3. Stellen Sie sicher, dass der ZMPT107-Sensor mit dem konfigurierten GPIO verbunden ist

Schritt 2: Netzspannung messen

Messen Sie mit einem Multimeter die tatsächliche Netzspannung:

python
Example:
Multimeter shows: 232.5V AC

Schritt 3: Sensorausgang prüfen

Führen Sie den Befehl aus, um den Roh-VDC-Wert anzuzeigen:

bash
hardware-voltage-show

Beispielausgabe:

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

Schritt 4: Multiplikator berechnen

Verwenden Sie die Formel mit dem tatsächlichen Sensor-VDC-Wert:

python
multiplier = V_measured / V_sensor_vdc

Für das obige Beispiel (232,5V / 0,72V):

python
multiplier = 232.5 / 0.72 = 322.92

Schritt 5: Kalibrierung anwenden

Über Konsole:

bash
hardware-voltage-config-multiplier 322.92

Über 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
      }
    ]
  }'

Schritt 6: Neustart

bash
reboot


Wichtige Hinweise

⚠️ 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 Stromsensor-Kalibrierung


Kalibrierungsprinzip

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

Formel: multiplier = I_measured / V_adc


Kalibrierungsvorgang

Schritt 1: Vorbereitung

  1. Schließen Sie eine bekannte Last an (z. B. 2000W Elektroheizung)
  2. Messen Sie den Strom mit einer Stromzange
  3. Stellen Sie sicher, dass der SCT-013-Sensor korrekt am Kabel installiert ist

Schritt 2: Strom messen

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

Schritt 3: ADC-Stromwert prüfen

Befehl ausführen:

bash
status

Stromwerte suchen:

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

Schritt 4: Multiplikator berechnen

Verwenden Sie die Formel:

python
multiplier_new = multiplier_old × (I_measured / I_current)

Für das obige Beispiel:

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

Schritt 5: Kalibrierung anwenden

Über Web API:

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

Schritt 6: Überprüfung

Neustart und Überprüfung:

bash
reboot
bash
status

Der Strom sollte nun korrekt angezeigt werden:

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


Wichtige Hinweise

  • Für eine genaue Kalibrierung verwenden Sie eine stabile ohmsche Last (Heizung, Glühlampen)
  • Nicht verwenden für die Kalibrierung: Schaltnetzteile oder Motoren (hoher Einschaltstrom)
  • Mindeststrom für die Kalibrierung: 5A (unterhalb dieser Schwelle beeinträchtigt ADC-Rauschen die Messwerte)



10.4 Kalibrierung speichern

Alle Konfigurationsänderungen werden automatisch im NVS (Non-Volatile Storage) gespeichert und bleiben nach einem Neustart erhalten.


Speicherung überprüfen

Führen Sie nach dem Neustart folgenden Befehl aus:

bash
hardware-config

Sie sollten aktualisierte multiplier-Werte sehen.




10.5 Werkseinstellungen zurücksetzen


Über Konsole

bash
hardware-reset

Dann Neustart:

bash
reboot


Über Web API

Senden Sie einen POST-Request an http:///api/hardware/config/reset:

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



Referenztabelle: Typische Multiplikatorwerte


Spannungssensoren

Modell Netz Kalibrierung Multiplikator
ZMPT107 230V AC 0,70V = 230V 328.57
ZMPT107 220V AC 0,70V = 220V 314.29
ZMPT107 240V AC 0,70V = 240V 342.86
ZMPT107 110V AC 0,70V = 110V 157.14


Stromsensoren

Modell Bereich Ausgang Multiplikator
SCT-013-030 0–30A 1V bei 30A 30.0
SCT-013-050 0–50A 1V bei 50A 50.0
SCT-013-100 0–100A 1V bei 100A 100.0



Nützliche Befehle

bash
# Show current measurements
status

# Show sensor configuration
hardware-config

# Reset to factory defaults
hardware-reset

# Reboot
reboot

← Web API - POST | Inhaltsverzeichnis | Weiter: MQTT-Anleitung →