Medidor de Energía con ESP32 y Sensor SCT-013: Calibración y Precisión para Auditorías Energéticas
Escrito por: Alex R.La medición precisa del consumo eléctrico es fundamental en cualquier auditoría energética, ya sea para identificar ineficiencias, dimensionar sistemas de autoconsumo o simplemente para tomar conciencia del gasto real de cada dispositivo. En este contexto, el microcontrolador ESP32 y el sensor de corriente SCT-013 se han convertido en una de las combinaciones más populares entre aficionados y profesionales gracias a su bajo coste, versatilidad y la enorme comunidad que respalda su uso. Sin embargo, obtener lecturas fiables no es tan sencillo como conectar el sensor y leer un valor: la calibración es un paso crítico que determina la validez de los datos recogidos. En este artículo, exploraremos en profundidad cómo calibrar un medidor de energía con ESP32 y SCT-013, abordando desde los principios físicos subyacentes hasta los errores más comunes, pasando por una guía práctica de configuración y una comparativa detallada con otros métodos de medición.
Fundamentos de la Medición de Corriente con SCT-013
El SCT-013 es un transformador de corriente (CT) de tipo abierto que permite medir corriente alterna sin necesidad de interrumpir el circuito. Su funcionamiento se basa en la inducción electromagnética: el conductor por el que circula la corriente a medir actúa como primario, y la bobina interna del sensor, con un número elevado de espiras, genera una corriente proporcional en el secundario. Esta corriente secundaria es muy pequeña (típicamente 1V o 50mA a corriente nominal), por lo que debe ser acondicionada antes de ser leída por el ADC del ESP32.
Existen varias versiones del SCT-013: el SCT-013-000 (salida de corriente, 0-1V), el SCT-013-010 (salida de tensión, 0-1V) y el SCT-013-020 (salida de tensión, 0-20A). Para este artículo nos centraremos en el modelo más común, el SCT-013-000, que requiere un circuito de carga para convertir la corriente en tensión. La relación de vueltas típica es 1000:1, es decir, por cada amperio en el primario, circula 1mA en el secundario. Con una resistencia de carga de 33 ohmios, se obtiene una tensión de 33mV por amperio, que es una señal muy débil para el ADC del ESP32 (que tiene un rango de 0-3.3V). Por ello, es habitual añadir un circuito de acondicionamiento con un amplificador operacional o, más sencillamente, utilizar un módulo que ya lo incorpora, como el módulo de corriente SCT-013 con salida de tensión.
El ADC del ESP32 y sus Limitaciones
El ESP32 integra un convertidor analógico-digital (ADC) de 12 bits (0-4095) que puede operar en varios rangos de tensión, siendo el más común el de 0-3.3V. Sin embargo, el ADC del ESP32 no es lineal en toda su gama, especialmente en los extremos, y su impedancia de entrada puede afectar a la medición si el circuito de acondicionamiento no tiene una impedancia de salida baja. Además, el ADC tiene un ruido considerable y una precisión de ±6% en el peor de los casos, según la hoja de datos. Esto significa que, sin calibración, las lecturas pueden desviarse significativamente de la realidad.
Para mejorar la precisión, se recomienda utilizar el modo de atenuación de 11dB (que permite medir hasta 3.6V) y realizar múltiples lecturas para promediar. Pero la calibración es imprescindible para corregir tanto el offset (tensión en reposo) como el factor de escala (relación entre corriente real y tensión medida). En este artículo, te enseñaremos a calibrar tu medidor de forma sencilla y efectiva.
Guía Paso a Paso para la Calibración
La calibración de un medidor de energía con ESP32 y SCT-013 implica dos ajustes principales: el offset (cero) y el factor de calibración (ganancia). El offset compensa la tensión residual que existe en la salida del sensor cuando no hay corriente circulando (debido a la polarización del circuito). El factor de calibración ajusta la relación entre la tensión medida y la corriente real, teniendo en cuenta las tolerancias del sensor y del circuito.
Paso 1: Conexión del Hardware
Antes de calibrar, asegúrate de tener el hardware correctamente conectado. Para el SCT-013-000, necesitarás un circuito de carga como el siguiente: conecta el sensor a tierra y a una resistencia de carga (por ejemplo, 33 ohmios) en paralelo con un condensador de filtro (10µF) y un divisor de tensión para centrar la señal en 1.65V (la mitad de 3.3V). Este divisor se puede hacer con dos resistencias de 10kΩ. La salida del divisor se conecta al pin ADC del ESP32 (por ejemplo, GPIO34). Si usas un módulo ya preparado (como el que se vende en Amazon), la conexión es directa: VCC a 3.3V, GND a GND y OUT al pin ADC.
Es fundamental que el sensor esté correctamente orientado: la flecha del SCT-013 indica la dirección del flujo de corriente (de la fuente a la carga). Si lo colocas al revés, las lecturas serán negativas (aunque en AC no importa el signo para la magnitud, sí para el cálculo de potencia si se usa factor de potencia).
Paso 2: Código Base para la Lectura
El siguiente código de Arduino lee el valor del ADC y calcula la corriente RMS. Utiliza una muestra de 1000 lecturas para calcular el valor RMS y obtener una buena precisión. A continuación, se muestra una función para leer la corriente:
float readCurrent() {
const int numSamples = 1000;
float sumSquares = 0;
float offset = 0;
// Primero, calcular el offset (valor promedio)
for (int i = 0; i < numSamples; i++) {
offset += analogRead(ADC_PIN);
delayMicroseconds(100);
}
offset /= numSamples;
// Ahora, calcular la suma de cuadrados de las desviaciones
for (int i = 0; i < numSamples; i++) {
float sample = analogRead(ADC_PIN) - offset;
sumSquares += sample * sample;
delayMicroseconds(100);
}
float rms = sqrt(sumSquares / numSamples);
// Convertir a voltios (0-3.3V) y luego a amperios
float volts = (rms / 4095.0) * 3.3;
float amps = (volts - 0.5) * factor; // Ajustar según el circuito
return amps;
}En este código, el offset se calcula en tiempo real, lo que ayuda a eliminar la deriva térmica. El factor de calibración se introduce manualmente después de la calibración.
Paso 3: Medición del Offset
Con el sensor instalado pero sin corriente circulando (carga desconectada), ejecuta el código y anota el valor promedio del ADC (offset). En teoría, debería ser 2048 (mitad de 4096), pero debido a las tolerancias, puede variar. Este valor se usará como referencia para la calibración del cero. En el código, ya se calcula automáticamente, pero es útil conocerlo para depurar.
Paso 4: Calibración con una Carga Conocida
Para calibrar la ganancia, necesitas una carga resistiva de valor conocido, como una lámpara incandescente de 100W o un calefactor de 1000W. Conecta la carga y mide la corriente real con una pinza amperimétrica de calidad (o un multímetro de verdadero RMS). Luego, ejecuta el código y anota la corriente medida por el ESP32. Calcula el factor de calibración como: factor = corriente_real / corriente_medida. Por ejemplo, si la corriente real es 0.45A y el ESP32 mide 0.40A, el factor sería 1.125. Actualiza el valor de 'factor' en el código y vuelve a probar.
Paso 5: Verificación y Ajuste Fino
Después de aplicar el factor, verifica con varias cargas de diferentes potencias (por ejemplo, 60W, 100W, 200W) y asegúrate de que las lecturas sean lineales. Si observas desviaciones no lineales, puede ser debido a la no linealidad del ADC o del sensor. En ese caso, puedes implementar una tabla de corrección o utilizar una regresión lineal con varios puntos. Para la mayoría de las aplicaciones de auditoría, una precisión del 2-5% es aceptable.
Errores Comunes y Limitaciones
A pesar de su popularidad, el uso del SCT-013 con ESP32 tiene varias trampas que pueden arruinar la precisión de tus mediciones. Conocerlas te ayudará a evitarlas.
Error 1: No Utilizar un Circuito de Acondicionamiento Adecuado
Muchos tutoriales simplifican la conexión conectando el sensor directamente al ADC, lo que produce lecturas erráticas y no lineales. El SCT-013-000 entrega una corriente, no una tensión, por lo que es imprescindible una resistencia de carga. Además, el ADC del ESP32 tiene una impedancia de entrada relativamente baja (alrededor de 100kΩ), que puede cargar el circuito si la impedancia de salida del sensor es alta. El uso de un amplificador operacional como seguidor de tensión resuelve este problema, pero no es imprescindible si se usa una resistencia de carga baja (33Ω) y un divisor de tensión de baja impedancia.
Error 2: Ignorar el Offset
El offset (tensión en reposo) puede variar con la temperatura y la tensión de alimentación. Si no se calcula dinámicamente, las lecturas de corriente se desplazarán, especialmente a corrientes bajas. En el código proporcionado, se calcula el offset en cada lectura, lo que mejora la estabilidad. Sin embargo, si el circuito tiene un offset fijo (por ejemplo, debido a la polarización), puedes restarlo manualmente.
Error 3: No Tener en Cuenta la No Linealidad del ADC
El ADC del ESP32 tiene una no linealidad integral (INL) que puede ser de ±6 LSB, y su ganancia puede variar hasta un 10% entre diferentes chips. Esto significa que el factor de calibración puede variar de un dispositivo a otro, por lo que es necesario calibrar cada unidad individualmente. Además, el ADC tiene un error de ganancia que puede corregirse con una calibración de dos puntos (por ejemplo, midiendo una tensión de referencia de 1V y 2V).
Error 4: Medir Corriente sin Medir Tensión
Para calcular la potencia real (vatios), necesitas medir tanto la corriente como la tensión y el factor de potencia. Si solo mides corriente, solo obtienes la corriente aparente (VA). En una auditoría energética, la potencia activa (W) es la que factura la compañía eléctrica, por lo que necesitas un medidor de tensión y un cálculo de fase. El ESP32 puede medir tensión con un transformador o un divisor resistivo, pero la sincronización de las muestras es crucial. En este artículo nos centramos en la calibración de corriente, pero ten en cuenta esta limitación.
Tabla Comparativa: SCT-013 vs. Otros Métodos de Medición
Para contextualizar la precisión del SCT-013, comparamos este sensor con otras soluciones comunes para medir energía en proyectos de domótica y auditoría.
| Método | Precisión | Coste | Instalación | Ideal para |
|---|---|---|---|---|
| SCT-013 + ESP32 | ±2-5% | Bajo (10-15€) | No invasivo | Proyectos DIY, monitorización básica |
| Pinza amperimétrica profesional | ±1% | Alto (100-500€) | No invasivo | Auditorías profesionales |
| Medidor de energía con pinza (ej. Shelly EM) | ±1-2% | Medio (30-60€) | No invasivo | Domótica, integración con plataformas |
| Medidor de energía con shunt (ej. INA219) | ±0.5% | Bajo (5-10€) | Invasivo (serie) | DC, baja corriente |
| Contador eléctrico con salida de pulsos | ±0.5% | Medio (20-40€) | Invasivo (instalación) | Medición oficial, alta precisión |
Como se observa, el SCT-013 es una opción económica y no invasiva, pero su precisión es inferior a la de soluciones comerciales. Para auditorías energéticas informales o para monitorizar el consumo en tiempo real en una vivienda, es más que suficiente. Para aplicaciones profesionales, se recomienda invertir en equipos certificados.
Preguntas Frecuentes
¿Qué precisión puedo esperar después de una calibración cuidadosa?
¿Puedo usar el SCT-013 para medir corriente en un circuito trifásico?
¿Qué hago si mis lecturas son inestables o fluctúan demasiado?
¿Es necesario usar un amplificador operacional para el SCT-013?
¿Cómo mido la potencia activa (vatios) con el ESP32?
Conclusión y Plan de Acción
La calibración de un medidor de energía con ESP32 y sensor SCT-013 es un proceso esencial para obtener datos fiables en auditorías energéticas. A lo largo de este artículo, hemos desglosado los fundamentos técnicos, los pasos necesarios para una calibración precisa, los errores más comunes y las limitaciones del sistema. Hemos visto que, aunque el SCT-013 no es un instrumento de precisión profesional, con una calibración cuidadosa puede ofrecer una precisión aceptable para la mayoría de los usos domésticos y de investigación.
Si estás pensando en implementar un sistema de monitorización energética en tu hogar o proyecto, te recomendamos seguir el siguiente plan de acción:
1Selecciona el hardware adecuado
Compra un SCT-013-000 (o el módulo con salida de tensión) y un ESP32 (cualquier placa, como el DevKit). Asegúrate de tener una fuente de alimentación estable y los componentes electrónicos necesarios (resistencias, condensadores, etc.).
2Monta el circuito con cuidado
Sigue las conexiones descritas en la guía. Si no tienes experiencia, utiliza un módulo ya preparado para evitar errores. Presta atención a la orientación del sensor.
3Implementa el código base
Sube el código proporcionado y verifica que las lecturas varíen al conectar una carga. Ajusta el número de muestras y los retardos según tu aplicación.
4Calibra con una carga conocida
Utiliza una lámpara incandescente o un calefactor para calibrar el factor de escala. Mide la corriente real con una pinza amperimétrica y ajusta el factor hasta que las lecturas coincidan.