Passa al contenuto

← Web API - POST | Indice | Avanti: Guida MQTT →

10. Calibrazione dei sensori



Indice




10.1 Panoramica

ACRouter supporta la calibrazione dei sensori per garantire misurazioni precise di tensione e corrente. La calibrazione viene eseguita calcolando un coefficiente moltiplicatore basato su misurazioni effettuate con strumenti di riferimento.


Perché è necessaria la calibrazione?

  • Tolleranze di produzione: ogni sensore presenta piccole deviazioni dai valori nominali
  • Differenze nella tensione di rete: i diversi paesi utilizzano standard differenti (230V, 110V, 220V, 240V, ecc.)
  • Precisione di misura: la calibrazione garantisce una precisione di ±2% o migliore


Valori predefiniti di fabbrica

Al primo avvio o dopo un ripristino, vengono utilizzati i seguenti valori:

Sensore Modello Moltiplicatore Nota
Tensione ZMPT107 328.57 Calibrato per 230V (0,70V RMS = 230V AC)
Corrente SCT-013-030 30.0 Massimo 30A



10.2 Calibrazione del sensore di tensione ZMPT107


A partire dalla versione 2.0, ACRouter supporta la calibrazione automatica del sensore di tensione. Il sistema misura automaticamente l'uscita del sensore (VDC RMS) e calcola il moltiplicatore di calibrazione.

Procedura di calibrazione automatica

Passo 1: Misurare la tensione di rete

Utilizzare un multimetro per misurare la tensione di rete effettiva:

python
Example:
Multimeter shows: 232.5V AC

Passo 2: Avviare la calibrazione automatica

Inserire il comando con la tensione misurata:

bash
hardware-voltage-calibrate 232.5

Passo 3: Il sistema esegue automaticamente:

  1. Misurazione dell'uscita attuale del sensore (VDC RMS) — es. 0,72V
  2. Calcolo del moltiplicatore: 232.5 / 0.72 = 322.92
  3. Salvataggio dei dati di calibrazione nel NVS

Esempio di output:

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

Passo 4: Riavvio

bash
reboot

Vantaggi della calibrazione automatica:

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

Tramite 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}'

Tramite interfaccia web:

  1. Aprire http:///settings/hardware
  2. Find "Voltage Sensor Auto-Calibration" section
  3. Inserire la tensione di rete misurata (VAC)
  4. Click "Calibrate" button
  5. Riavviare il dispositivo


Calibrazione manuale (Metodo legacy)

Per compatibilità con versioni precedenti o casi particolari, è possibile utilizzare il calcolo manuale.

Principio di calibrazione

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

Procedura di calibrazione manuale

Passo 1: Preparazione

  1. Collegare ACRouter alla rete elettrica
  2. Connettersi alla porta seriale (115200 baud)
  3. Verificare che il sensore ZMPT107 sia collegato al GPIO configurato

Passo 2: Misurare la tensione di rete

Utilizzare un multimetro per misurare la tensione di rete effettiva:

python
Example:
Multimeter shows: 232.5V AC

Passo 3: Verificare l'uscita del sensore

Eseguire il comando per visualizzare il VDC grezzo:

bash
hardware-voltage-show

Esempio di output:

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

Passo 4: Calcolare il moltiplicatore

Utilizzare la formula con il VDC effettivo del sensore:

python
multiplier = V_measured / V_sensor_vdc

Per l'esempio sopra (232,5V / 0,72V):

python
multiplier = 232.5 / 0.72 = 322.92

Passo 5: Applicare la calibrazione

Tramite console:

bash
hardware-voltage-config-multiplier 322.92

Tramite 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
      }
    ]
  }'

Passo 6: Riavvio

bash
reboot


Note importanti

⚠️ 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 Calibrazione del sensore di corrente SCT-013


Principio di calibrazione

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

Formula: multiplier = I_measured / V_adc


Procedura di calibrazione

Passo 1: Preparazione

  1. Collegare un carico noto (es. riscaldatore elettrico da 2000W)
  2. Misurare la corrente con una pinza amperometrica
  3. Verificare che il sensore SCT-013 sia correttamente installato sul cavo

Passo 2: Misurare la corrente

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

Passo 3: Verificare la lettura ADC della corrente

Eseguire il comando:

bash
status

Cercare le correnti:

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

Passo 4: Calcolare il moltiplicatore

Utilizzare la formula:

python
multiplier_new = multiplier_old × (I_measured / I_current)

Per l'esempio sopra:

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

Passo 5: Applicare la calibrazione

Tramite Web API:

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

Passo 6: Verifica

Riavviare e verificare:

bash
reboot
bash
status

Ora la corrente dovrebbe essere visualizzata correttamente:

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


Note importanti

  • Per una calibrazione accurata, utilizzare un carico resistivo stabile (riscaldatore, lampade a incandescenza)
  • Non utilizzare per la calibrazione: alimentatori switching o motori (elevata corrente di spunto)
  • Corrente minima per la calibrazione: 5A (al di sotto di questa soglia, il rumore ADC influisce sulle letture)



10.4 Salvataggio della calibrazione

Tutte le modifiche alla configurazione vengono salvate automaticamente nel NVS (Non-Volatile Storage) e persistono dopo il riavvio.


Verificare il salvataggio

Dopo il riavvio, eseguire:

bash
hardware-config

Dovreste vedere i valori multiplier aggiornati.




10.5 Ripristino delle impostazioni di fabbrica


Tramite console

bash
hardware-reset

Poi riavviare:

bash
reboot


Tramite Web API

Inviare una richiesta POST a http:///api/hardware/config/reset:

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



Tabella di riferimento: Valori tipici del moltiplicatore


Sensori di tensione

Modello Rete Calibrazione Moltiplicatore
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


Sensori di corrente

Modello Range Uscita Moltiplicatore
SCT-013-030 0–30A 1V a 30A 30.0
SCT-013-050 0–50A 1V a 50A 50.0
SCT-013-100 0–100A 1V a 100A 100.0



Comandi utili

bash
# Show current measurements
status

# Show sensor configuration
hardware-config

# Reset to factory defaults
hardware-reset

# Reboot
reboot

← Web API - POST | Indice | Avanti: Guida MQTT →