Ir al contenido

← Web API - POST | Contenido | Siguiente: Guía MQTT →

10. Calibración de sensores



Contenido




10.1 Descripción general

ACRouter admite la calibración de sensores para garantizar mediciones precisas de voltaje y corriente. La calibración se realiza calculando un coeficiente multiplicador a partir de mediciones con instrumentos de referencia.


¿Por qué es necesaria la calibración?

  • Tolerancias de fabricación: cada sensor presenta pequeñas desviaciones respecto a los valores nominales
  • Diferencias en el voltaje de red: distintos países utilizan diferentes estándares (230V, 110V, 220V, 240V, etc.)
  • Precisión de medición: la calibración garantiza una precisión de ±2 % o mejor


Valores predeterminados de fábrica

En el primer arranque o tras un restablecimiento, se utilizan los siguientes valores:

Sensor Modelo Multiplicador Nota
Voltaje ZMPT107 328.57 Calibrado para 230V (0,70V RMS = 230V AC)
Corriente SCT-013-030 30.0 Máximo 30A



10.2 Calibración del sensor de voltaje ZMPT107


A partir de la versión 2.0, ACRouter admite la calibración automática del sensor de voltaje. El sistema mide automáticamente la salida del sensor (VDC RMS) y calcula el multiplicador de calibración.

Procedimiento de calibración automática

Paso 1: Medir el voltaje de red

Utilice un multímetro para medir el voltaje real de la red:

python
Example:
Multimeter shows: 232.5V AC

Paso 2: Ejecutar la calibración automática

Introduzca el comando con el voltaje medido:

bash
hardware-voltage-calibrate 232.5

Paso 3: El sistema realiza automáticamente:

  1. Medición de la salida actual del sensor (VDC RMS) — p. ej., 0,72V
  2. Cálculo del multiplicador: 232.5 / 0.72 = 322.92
  3. Almacenamiento de los datos de calibración en NVS

Ejemplo de salida:

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

Paso 4: Reiniciar

bash
reboot

Ventajas de la calibración automática:

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

Vía 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}'

Vía interfaz web:

  1. Abra http:///settings/hardware
  2. Find "Voltage Sensor Auto-Calibration" section
  3. Introduzca el voltaje de red medido (VAC)
  4. Click "Calibrate" button
  5. Reinicie el dispositivo


Calibración manual (Método heredado)

Para compatibilidad con versiones anteriores o casos especiales, se puede usar el cálculo manual.

Principio de calibración

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

Procedimiento de calibración manual

Paso 1: Preparación

  1. Conecte ACRouter a la red eléctrica
  2. Conéctese al puerto serie (115200 baudios)
  3. Asegúrese de que el sensor ZMPT107 esté conectado al GPIO configurado

Paso 2: Medir el voltaje de red

Utilice un multímetro para medir el voltaje real de la red:

python
Example:
Multimeter shows: 232.5V AC

Paso 3: Verificar la salida del sensor

Ejecute el comando para ver el VDC sin procesar:

bash
hardware-voltage-show

Ejemplo de salida:

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

Paso 4: Calcular el multiplicador

Utilice la fórmula con el VDC real del sensor:

python
multiplier = V_measured / V_sensor_vdc

Para el ejemplo anterior (232,5V / 0,72V):

python
multiplier = 232.5 / 0.72 = 322.92

Paso 5: Aplicar la calibración

Vía consola:

bash
hardware-voltage-config-multiplier 322.92

Vía 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
      }
    ]
  }'

Paso 6: Reiniciar

bash
reboot


Notas importantes

⚠️ 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 Calibración del sensor de corriente SCT-013


Principio de calibración

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

Fórmula: multiplier = I_measured / V_adc


Procedimiento de calibración

Paso 1: Preparación

  1. Conecte una carga conocida (p. ej., calefactor eléctrico de 2000W)
  2. Mida la corriente con una pinza amperimétrica
  3. Asegúrese de que el sensor SCT-013 esté correctamente instalado en el cable

Paso 2: Medir la corriente

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

Paso 3: Verificar la lectura ADC de corriente

Ejecute el comando:

bash
status

Busque las corrientes:

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

Paso 4: Calcular el multiplicador

Utilice la fórmula:

python
multiplier_new = multiplier_old × (I_measured / I_current)

Para el ejemplo anterior:

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

Paso 5: Aplicar la calibración

Vía Web API:

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

Paso 6: Verificación

Reinicie y verifique:

bash
reboot
bash
status

Ahora la corriente debería mostrarse con precisión:

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


Notas importantes

  • Para una calibración precisa, utilice una carga resistiva estable (calefactor, lámparas incandescentes)
  • No utilizar para la calibración: fuentes de alimentación conmutadas o motores (alta corriente de arranque)
  • Corriente mínima para la calibración: 5A (por debajo de este umbral, el ruido ADC afecta las lecturas)



10.4 Guardar la calibración

Todos los cambios de configuración se guardan automáticamente en NVS (Non-Volatile Storage) y se mantienen tras el reinicio.


Verificar el guardado

Después del reinicio, ejecute:

bash
hardware-config

Debería ver los valores multiplier actualizados.




10.5 Restablecer valores de fábrica


Vía consola

bash
hardware-reset

Luego reinicie:

bash
reboot


Vía Web API

Envíe una solicitud POST a http:///api/hardware/config/reset:

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



Tabla de referencia: Valores típicos de multiplicador


Sensores de voltaje

Modelo Red Calibración Multiplicador
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


Sensores de corriente

Modelo Rango Salida Multiplicador
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



Comandos útiles

bash
# Show current measurements
status

# Show sensor configuration
hardware-config

# Reset to factory defaults
hardware-reset

# Reboot
reboot

← Web API - POST | Contenido | Siguiente: Guía MQTT →