Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Medición Precisa de Corriente Alterna con Sensor ACS712 en Arduino

Componentes y Suministros

Sobre este Proyecto

⚠ PRECAUCIÓN: CUIDADO AL TRABAJAR CON LÍNEA DE RED (220V/110V).

Tutorial para medir corriente alterna (CA) usando el sensor ACS712 (efecto Hall) con Arduino. Se cubren tres métodos: visualización de señal, cálculo RMS simple (solo senoidal) y cálculo TRMS real (cualquier forma de onda) usando librería Filters.h.

Selección del Sensor ACS712

Existen versiones 5A, 20A, 30A. No compres el de 30A "por seguridad" para uso doméstico: su sensibilidad es menor (66 mV/A vs 185 mV/A del 5A), dando mayor ruido y fluctuaciones en corrientes bajas. Para electrodomésticos típicos, 5A o 20A son ideales. El rango afecta la calibración (pendiente/intercepto).

Montaje de Prueba

Bombilla incandescente 75W + dimmer (triac) en serie con multímetro de referencia y módulo ACS712. Alimentación 230VAC/50Hz.

Test 1: Visualizar Señal del Sensor

Cableado (Wiring 1)

Código (Code_1.ino)

#define CURRENT_SENSOR A0
float i;
void setup() {
  Serial.begin(9600);
  pinMode(CURRENT_SENSOR, INPUT);
}
void loop() {
  i = analogRead(CURRENT_SENSOR);
  Serial.println(i);
  delay(100); // Ajustar para ver forma de onda clara en Serial Plotter
}

Resultado: En Serial Plotter se ve senoide. Al bajar dimmer, la onda se distorsiona (corte de fase por triac).

Test 2: Método Pico a Pico (Solo Señal Senoidal)

Mismo cableado. Código Code_2.ino calcula pico a pico y aplica factor 0.3536 (√2/2 × 0.5) para RMS teórico de senoide. Funciona bien con dimmer al máximo (onda sinusoidal pura). Falla con dimmer bajo: mide 0.36A vs 0.21A real (multímetro TRMS), porque la onda ya no es senoidal.

Test 3: Cálculo TRMS Real (Cualquier Forma de Onda) – Librería Filters.h

La librería Filters.h implementa estadísticas en ventana deslizante (media, sigma/desviación estándar) para calcular valor eficaz real (TRMS) mediante cálculo integral discreto.

Código (Code_3.ino)

#include <Filters.h>
#define ACS_PIN A0
float testFrequency = 50;
float windowLength = 40.0 / testFrequency;
float intercept = 0;      // Calibrar: offset a 0A
float slope = 0.0752;     // Calibrar: factor de escala
float Amps_TRMS;
unsigned long printPeriod = 1000;
unsigned long previousMillis = 0;

void setup() {
  Serial.begin(9600);
  pinMode(ACS_PIN, INPUT);
}

void loop() {
  RunningStatistics inputStats;
  inputStats.setWindowSecs(windowLength);
  while (true) {
    float ACS_Value = analogRead(ACS_PIN);
    inputStats.input(ACS_Value);
    if (millis() - previousMillis >= printPeriod) {
      previousMillis = millis();
      Amps_TRMS = intercept + slope * inputStats.sigma();
      Serial.print("\t Amps: "); Serial.println(Amps_TRMS);
    }
  }
}

Calibración (Imprescindible)

  1. Sin carga (0A): observa inputStats.sigma(). Si no es 0, ajusta intercept para que Amps_TRMS = 0.
  2. Carga conocida (ej. bombilla 75W a 230V → 0.326A teórico): mide Amps_TRMS sin calibrar. Calcula slope = teórico / medido.
  3. Actualiza intercept y slope en el código.

Test con Pantalla LCD u OLED

Mismo principio, salida a display. Código Code_ACS712_LCD.ino (usa LiquidCrystal_I2C.h) y Code_ACS712_OLED.ino (usa Adafruit_SSD1306.h + Adafruit_GFX.h).

  • LCD I²C: Dirección típica 0x27 (escanear con I2C scanner). Pines: En=2, Rw=1, Rs=0, D4-D7=4-7.
  • OLED 128x32: Dirección 0x3C, reset pin -1 (compartido).

Esquemáticos

  • Wiring 1: Sensor standalone + Arduino (para Tests 1-3).
  • Wiring_LCD: Añade LCD I²C (SDA→A4, SCL→A5 en UNO).
  • Wiring_OLED: Añade OLED I²C (SDA→A4, SCL→A5).

Enlaces Útiles

Proceso de manufactura

  1. Medición de la Calidad del Aire con OpenSensors: Guía para Arduino y Python
  2. Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
  3. Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
  4. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  5. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  6. Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
  7. Proyecto HMI Interactivo con Nextion, Arduino Mega y Múltiples Sensores
  8. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
  9. Anima tu Pez Billy Bass con Cualquier Fuente de Audio: Guía Paso a Paso
  10. Medición Precisa de Radiación Solar con Arduino UNO y Shield Ethernet
  11. Sistema Radar Compacto con Arduino Nano, Sensor HC-SR04 y Pantalla 1.8"