Construcción de un monitor de corriente para recolector de polvo con ESP32
Objetivo y caso de uso
Qué construirás: Un monitor de corriente no invasivo para un recolector de polvo que registra el consumo de energía de CA del sistema de recolección de polvo de tu taller para establecer un perfil base de uso eléctrico y detectar anomalías operativas.
Por qué es importante / Casos de uso
- Monitorización de equipos: Detectar un impulsor atascado o rodamientos de motor defectuosos mediante la identificación de picos de corriente de funcionamiento anormales (por ejemplo, una sobretensión repentina muy por encima de la línea base).
- Detección de filtros/obstrucciones: Identificar disminuciones graduales o caídas inesperadas en el consumo de corriente base que indican un flujo de aire restringido o un filtro de recolector de polvo obstruido (ya que los ventiladores centrífugos consumen menos corriente cuando el flujo de aire está restringido).
- Perfilado de energía: Registrar el uso eléctrico continuo a lo largo del tiempo para calcular con precisión los costos de energía de hacer funcionar el recolector de polvo durante las horas de taller.
Resultado esperado
- El ESP32 muestreará la forma de onda analógica de corriente alterna (CA) a alta velocidad para calcular la corriente eficaz (RMS) matemáticamente, sin depender de bibliotecas externas.
- La salida del monitor serie mostrará el consumo de corriente en tiempo real en amperios para el recolector de polvo.
- El sistema filtrará activamente el ruido eléctrico base para evitar lecturas de falsos positivos durante los estados de inactividad de la máquina.
Audiencia: Estudiantes de electrónica básica y programación que buscan interconectar sensores analógicos e implementar matemáticas de procesamiento de señales; Nivel: Intermedio
Arquitectura/flujo: Sensor de corriente TC no invasivo → ADC del ESP32 → Procesamiento de señales RMS personalizado → Salida del monitor serie
Nota educativa de validación
Antes de publicar este caso, el contenido pasó la puerta automática de validación de Prometeo con estado PASS. Para este perfil ESP32 DevKitC, el proyecto se comprobó como proyecto PlatformIO: el validador extrajo platformio.ini y src/main.cpp, creó un proyecto temporal y ejecutó pio run contra platform = espressif32, board = esp32dev y framework = arduino. También revisó la estructura del artículo, que los comandos sean copiables con guiones ASCII, y que no aparezcan stacks no soportados como ESP-IDF directo o placas ESP32 no acotadas.
Evidencia de validación publicada
- Resultado automático: PASS.
- Estructura parseada: 3 apartados, 3 tablas y 2 bloques de código detectados antes de publicar.
- Código comprobado: 1 PlatformIO config + 1 ESP32 source/pio run.
- Catálogo soportado: el texto se contrastó contra los perfiles de dispositivo validables de Prometeo y los stacks no soportados bloquean la publicación.
- Hallazgos del informe: sin hallazgos bloqueantes.
Esta validación confirma compatibilidad sintáctica y de herramientas para el código publicado, pero no sustituye la prueba física sobre tu placa ESP32 DevKitC exacta, tu cableado, alimentación y entorno WiFi local.
Nota educativa de seguridad
ADVERTENCIA: ALTO VOLTAJE. Este tutorial implica la monitorización de electrodomésticos de red de CA. El SCT-013 es un transformador de corriente no invasivo. Nunca debes cortar, pelar ni exponer cables desnudos de la red de CA para usar este sensor. La pinza solo debe colocarse sobre cables con aislamiento intacto clasificado de fábrica.
Además:
* Nunca intentes conectar el SCT-013 directamente al ESP32 sin la resistencia de carga (burden) de 33Ω en su lugar. Sin una resistencia de carga, un transformador de corriente desconectado puede generar voltajes peligrosamente altos en sus pines de salida cuando se sujeta sobre un cable con corriente.
* Este prototipo es una herramienta educativa. No lo utilices como una desconexión de seguridad principal o mecanismo de monitorización industrial.
* Asegúrate siempre de que tus circuitos de microcontrolador de bajo voltaje estén físicamente aislados y a una distancia segura de las líneas de CA de alto voltaje.
Diagrama de bloques conceptual
Vista de alto nivel: qué entra, qué procesa cada bloque y qué sale del sistema.
Arquitectura funcional
Flujo conceptual: detección de humedad, decisión local y aviso al usuario.
Ruta de validación
Resumen conceptual de las herramientas usadas para comprobar el proyecto ESP32 publicado.
Requisitos previos
Para completar con éxito este tutorial, necesitas:
* Un ordenador con Visual Studio Code y la extensión PlatformIO IDE instalada.
* Familiaridad básica con el uso de protoboards y conexiones de cables puente.
* Comprender la diferencia entre señales de CA y CC (específicamente, que los pines analógicos del ESP32 solo pueden leer voltajes positivos de CC entre 0V y 3.3V).
* Un electrodoméstico de prueba (como una lámpara de escritorio o un ventilador pequeño) enchufado a un divisor de CA donde los cables de fase y neutro estén separados físicamente, antes de pasar al recolector de polvo real.
Nota de configuración de hardware: Si tu ordenador no reconoce automáticamente el ESP32 DevKitC, es posible que necesites instalar los controladores USB a UART CP210x o CH34x específicos para el chip serie de tu placa.
Materiales
Necesitarás los siguientes componentes exactos para este montaje:
* ESP32 DevKitC (Placa de desarrollo estándar de 38 o 30 pines).
* Módulo transformador de corriente SCT-013 (Específicamente el SCT-013-000, que es un transformador de tipo corriente de 100A/50mA).
* Resistencia de carga (burden): 1x resistencia de 33Ω (1/4 de vatio es suficiente).
* Componentes de polarización de CC: 2x resistencias de 10kΩ y 1x condensador electrolítico de 10µF (necesarios para desplazar la onda de CA al rango de CC legible por el ESP32).
* Placa de adaptación para conector de audio (Breakout): Una placa de adaptación TRS hembra de 3.5mm (para conectar fácilmente el enchufe del SCT-013 a la protoboard).
* Protoboard y cables puente.
Configuración/Conexión
El SCT-013-000 emite una corriente de CA proporcional a la corriente que fluye a través del cable sujeto. Debido a que el convertidor analógico a digital (ADC) del ESP32 solo puede medir voltajes de CC positivos de hasta 3.3V, debemos hacer dos cosas:
1. Convertir la salida de corriente del sensor en un voltaje utilizando una resistencia de carga.
2. Desplazar la forma de onda de CA (que se vuelve positiva y negativa) por completo al rango positivo utilizando una red de polarización de CC (un divisor de voltaje).
Polarización de CC y cableado del sensor
- Conecta las dos resistencias de 10kΩ en serie entre el pin
3V3del ESP32 yGND. La unión entre estas dos resistencias es tu «punto medio», que reposa exactamente a 1.65V. - Conecta la pata positiva (ánodo) del condensador de 10µF a este punto medio de 1.65V, y la pata negativa (cátodo) a
GND. Esto suaviza el ruido de la fuente de alimentación. - Conecta la malla (Tierra/Blindaje – Sleeve) de la placa de adaptación del conector de audio de 3.5mm al punto medio de 1.65V.
- Conecta la punta (Tip) de la placa de adaptación del conector de audio de 3.5mm al pin
34del ESP32 (un pin ADC de solo entrada). - Coloca la resistencia de carga de 33Ω directamente a través de las conexiones de la punta (Tip) y la malla (Sleeve) de la placa de adaptación del conector de audio.
Tabla de mapeo de pines
| Pin del ESP32 DevKitC | Conexión del componente | Función |
|---|---|---|
3V3 | Resistencia de 10kΩ #1 (Arriba) | Proporciona energía de 3.3V para el divisor de polarización de CC. |
GND | Resistencia de 10kΩ #2 (Abajo), Condensador (-) | Referencia de tierra común. |
34 (ADC1_CH6) | Punta del conector de audio, Lado A de la resistencia de carga | Lee el voltaje de CA fluctuante. |
| N/A (Punto medio) | Malla del conector de audio, Lado B de la resistencia de carga | Proporciona un desplazamiento de tierra virtual de 1.65V. |
Sujeción del sensor
Para medir la corriente, el SCT-013 debe sujetarse alrededor de un solo cable (ya sea el cable de fase/vivo O el cable neutro) del cable de alimentación del recolector de polvo. Si lo sujetas alrededor de un cable de alimentación estándar que contiene ambos cables, los campos magnéticos de las corrientes de salida y retorno se cancelarán entre sí, y el sensor leerá 0 amperios.
Código completo
El siguiente código calcula la corriente RMS matemáticamente muestreando el ADC rápidamente, calculando la varianza de la forma de onda y derivando el verdadero componente de CA. Esto evita dependencias de bibliotecas externas y garantiza la compilación. Crea un nuevo proyecto de PlatformIO para el ESP32 DevKitC y reemplaza los archivos predeterminados con el código a continuación.
platformio.ini
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
src/main.cpp
Vista pública parcial del archivo validado. El código completo se muestra a miembros y en PDF/Print.
#include <Arduino.h>
// ---------------------------------------------------------
// Configuration & Constants
// ---------------------------------------------------------
const int ADC_PIN = 34; // Analog input pin connected to the SCT-013
const float V_REF = 3.3; // ESP32 ADC reference voltage
const int ADC_RESOLUTION = 4095; // 12-bit ADC maximum value
const float BURDEN_RESISTOR = 33.0; // Burden resistor value in Ohms
const float CT_TURNS_RATIO = 2000.0; // For SCT-013-000: 100A / 0.050A = 2000
void setup() {
Serial.begin(115200);
while (!Serial) {
; // Wait for serial port to connect
}
Serial.println("Dust Collector Current Monitor Initializing...");
// Configure the ADC pin
analogReadResolution(12);
pinMode(ADC_PIN, INPUT);
Serial.println("Initialization Complete. Monitoring Current...");
}
void loop() {
unsigned long startMillis = millis();
double sum = 0;
double sumSquared = 0;
int samples = 0;
// Sample the waveform for 200ms (captures 10-12 full AC cycles)
while (millis() - startMillis < 200) {
int raw = analogRead(ADC_PIN);
sum += raw;
sumSquared += ((double)raw * raw);
samples++;
// Small delay to prevent FreeRTOS watchdog starvation
delayMicroseconds(100);
}
// ...#include <Arduino.h>
// ---------------------------------------------------------
// Configuration & Constants
// ---------------------------------------------------------
const int ADC_PIN = 34; // Analog input pin connected to the SCT-013
const float V_REF = 3.3; // ESP32 ADC reference voltage
const int ADC_RESOLUTION = 4095; // 12-bit ADC maximum value
const float BURDEN_RESISTOR = 33.0; // Burden resistor value in Ohms
const float CT_TURNS_RATIO = 2000.0; // For SCT-013-000: 100A / 0.050A = 2000
void setup() {
Serial.begin(115200);
while (!Serial) {
; // Wait for serial port to connect
}
Serial.println("Dust Collector Current Monitor Initializing...");
// Configure the ADC pin
analogReadResolution(12);
pinMode(ADC_PIN, INPUT);
Serial.println("Initialization Complete. Monitoring Current...");
}
void loop() {
unsigned long startMillis = millis();
double sum = 0;
double sumSquared = 0;
int samples = 0;
// Sample the waveform for 200ms (captures 10-12 full AC cycles)
while (millis() - startMillis < 200) {
int raw = analogRead(ADC_PIN);
sum += raw;
sumSquared += ((double)raw * raw);
samples++;
// Small delay to prevent FreeRTOS watchdog starvation
delayMicroseconds(100);
}
if (samples > 0) {
// Calculate the statistical variance of the samples
// Variance = E[X^2] - (E[X])^2
double mean = sum / samples;
double meanSquared = sumSquared / samples;
double variance = meanSquared - (mean * mean);
// Prevent negative variance due to floating point inaccuracies
if (variance < 0) {
variance = 0;
}
// RMS of the AC component is the square root of the variance
double rmsAdc = sqrt(variance);
// Convert ADC units to Voltage
double rmsVoltage = (rmsAdc / ADC_RESOLUTION) * V_REF;
// Convert Voltage to Primary Current using burden resistor and turns ratio
double rmsCurrent = (rmsVoltage / BURDEN_RESISTOR) * CT_TURNS_RATIO;
// Noise suppression: clamp extremely low floating values to 0
if (rmsCurrent < 0.15) {
rmsCurrent = 0.0;
}
// Print the calculated RMS current to the Serial Monitor
Serial.print("Samples: ");
Serial.print(samples);
Serial.print(" | Dust Collector Current Draw: ");
Serial.print(rmsCurrent, 2); // Print with 2 decimal places
Serial.println(" A");
}
// Delay before the next sampling window
delay(800);
}
Comandos de compilación/flasheo/ejecución
Utiliza la interfaz de línea de comandos (CLI) de PlatformIO para compilar, subir y monitorizar el proyecto.
| Comando | Descripción |
|---|---|
pio run | Compila el proyecto para verificar la sintaxis. |
pio run --target upload | Flashea el firmware compilado en el ESP32. |
pio device monitor | Inicia el monitor serie a 115200 baudios. |
Flujo de trabajo de ejecución:
1. Conecta el ESP32 DevKitC a tu ordenador mediante un cable USB con capacidad de datos.
2. Abre tu terminal en el directorio del proyecto de PlatformIO.
3. Ejecuta pio run para verificar que no haya errores de sintaxis.
4. Ejecuta pio run --target upload para escribir el código en el ESP32. (Si la carga agota el tiempo de espera, mantén presionado el botón «BOOT» en el ESP32 cuando aparezca el mensaje «Connecting…»).
5. Ejecuta pio device monitor para ver las lecturas de corriente en tiempo real.
Validación paso a paso
Utiliza este procedimiento para verificar que tu prototipo funciona correctamente antes de implementarlo en el recolector de polvo.
- Verificar el rechazo del ruido base
- Acción: Enciende el ESP32 con el SCT-013 conectado pero completamente suelto de cualquier cable.
- Observación esperada: El monitor serie debería mostrar
Dust Collector Current Draw: 0.00 A. Condición de aprobación: La lógica de supresión de ruido (
if (rmsCurrent < 0.15)) fuerza con éxito el ruido flotante menor a cero.Verificar el punto medio de compensación de CA
- Acción: Usando un multímetro digital, mide el voltaje de CC entre el pin
GNDdel ESP32 y el punto medio de las dos resistencias de 10kΩ. - Observación esperada: El multímetro lee aproximadamente 1.65V.
Condición de aprobación: El voltaje está entre 1.6V y 1.7V, lo que confirma que el circuito de polarización está empujando correctamente la onda de CA al rango legible por el ESP32.
Prueba de baja potencia (Monitorización base)
- Acción: Sujeta el SCT-013 alrededor del cable de fase de un cable de extensión de CA dividido específicamente para pruebas. Enchufa un electrodoméstico de baja potencia (por ejemplo, una lámpara incandescente de 60W) y aplica energía.
- Observación esperada: El monitor serie lee aproximadamente
0.50 A(para una bombilla de 60W a 120V). Condición de aprobación: La lectura de corriente aumenta proporcionalmente a la carga y se mantiene estable.
Prueba de alta potencia (Simulación de carga del recolector de polvo)
- Acción: Sujeta de forma segura el sensor en el cable de fase que alimenta el recolector de polvo real (o una carga de prueba de alta potencia como una pistola de calor de 1000W) y suministra energía.
- Observación esperada: El monitor serie lee una carga sostenida (por ejemplo, >
8.00 A). - Condición de aprobación: La consola refleja con precisión el alto consumo de corriente, validando que las matemáticas se escalan correctamente con cargas más grandes.
Solución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
| La lectura se mantiene en 0.00A cuando la máquina está en marcha | Sujeto sobre los cables de fase y neutro. | Asegúrate de que el SCT-013 esté sujeto SOLAMENTE alrededor del cable de fase. Usa un divisor de línea de CA. |
| Lecturas que fluctúan descontroladamente (ej., 5A, 0A, 12A) | Condensador de derivación de 10µF faltante o desconectado. | Verifica que el condensador esté firmemente asentado entre el punto medio de 1.65V y GND. |
| Lectura alta constante (ej., 30A+) cuando la máquina está apagada | La resistencia de carga está desconectada o tiene un valor incorrecto. | Revisa la conexión de la resistencia de 33Ω a través de la punta y la malla del conector de audio. |
| El monitor serie imprime caracteres sin sentido | Discrepancia en la tasa de baudios. | Asegúrate de que la terminal esté configurada a 115200 baudios, coincidiendo con Serial.begin(115200). |
Mejoras
Una vez que el monitor de corriente básico funcione de manera confiable, considera estas mejoras para una instalación permanente en el taller:
Integración inalámbrica y de IoT
* Publicación MQTT: Conecta el ESP32 a Wi-Fi y publica pasivamente la corriente RMS en un broker MQTT. Un servidor central puede suscribirse a este tema para registrar datos en un panel de Grafana y obtener un perfil de energía a largo plazo del recolector de polvo.
* Actualizaciones inalámbricas (OTA): Implementa ArduinoOTA para que puedas ajustar las constantes de calibración sin retirar físicamente el ESP32 de su carcasa a prueba de polvo.
Hardware y robustez
* Filtrado por hardware: Agrega un pequeño condensador de 10nF en paralelo con la resistencia de carga para que actúe como un filtro de paso bajo por hardware, suavizando aún más el ruido eléctrico de alta frecuencia del taller antes de que llegue al ADC.
Lista de verificación
- [ ] Circuito de polarización de CC en protoboard construido (dos resistencias de 10kΩ, un condensador de 10µF).
- [ ] Resistencia de carga de 33Ω asegurada a través de las líneas de salida del SCT-013.
- [ ] Punta del SCT-013 conectada al pin 34 del ESP32; Malla conectada al punto medio de 1.65V.
- [ ]
platformio.iniconfigurado correctamente. - [ ] Código flasheado con éxito usando
pio run --target upload. - [ ] SCT-013 sujeto de forma segura alrededor de un solo cable de CA aislado (fase o neutro, no ambos).
- [ ] El monitor serie muestra >0A y se escala con precisión cuando se suministra energía al electrodoméstico de prueba.
Encuentra este producto y/o libros sobre este tema en Amazon
Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.




