top of page

ECO&ING

CONSULTORES

Medir Corriente AC - Arduino

Para la medición de la corriente se puede hacer uso del sensor ACS712 de Allegro, es un sensor de corriente por efecto hall, que provee un solución económica y precisa para medir corriente en AC o DC, ya sea en ambientes industriales o comerciales. Este Sensor funciona transformando un campo magnético surgido del paso de la corriente por un alambre de cobre interno en el sensor, y convirtiendo este campo en un voltaje variable. Esto significa que a mayor cantidad de corriente que tengamos, mayor voltaje vamos a tener en un pin.hasta 5A, el ACS712ELCTR-20A-T que mide hasta 20A y el ACS712ELCTR-30A-T que mide hasta 30A. Las diferencias entre cada uno de los modelos es que las variaciones de voltaje en su pin de salida es siempre la misma, por ende para cualquier modelo su salida analógica variara entre 0 y 5V. (Allegro MicroSystems)

 

 

 

 

En la imagen se muestra el chip ACS712 ya ensamblado en un módulo comercial que permite su conexión al sistema de medición de una forma sencilla y segura, de un lado del módulo se tiene un conector de tornillos al cual deben conectarse las terminales de cable de la red de entrada de corriente.

 

El siguiente código muestra la medición de la corriente en un pin analógico 0 y en una pantalla LCD Display de 16x2.

 

// Sensor de corriente Alterna

// Jeison Altamirano

 

#include <LiquidCrystal.h>

 

LiquidCrystal lcd(12,11,5,4,3,2);

 

int analogPin = 0;      // el pin analógico 3 conectado al OUT del sensor de corriente

                                     // los terminales exteriores del potenciómetro conectados a +5V y masa respectivamente

double val = 0;           // declaración de la variable en la que se almacenará el valor leído por el coversor.

int maxvalue = 512;

int minvalue = 512;

 

void setup()

{

  Serial.begin(9600);          // inicializa la comunización serial a 9600 baudios

  analogReference(DEFAULT);

   // establecer en la LCD de 16x2 las filas y columnas.

  lcd.begin(16, 2);

  // imprimir en la pantalla LCD un texto:

  lcd.print("ArduoSensor_1.0");

  delay(1500); // retardo

  }

 

void loop()

{

val =0;

maxvalue = 511;

minvalue = 511;

  for ( int i=0; i<2000; i++) {

  val = analogRead(analogPin);    // lee el valor de corriente del pin

  if ( val > maxvalue) { maxvalue =  val;}

  if ( val < minvalue ) { minvalue = val;}

  }

  val = ((maxvalue - minvalue) * 0.03) /1.4142 ;

  Serial.print("\n" );

  Serial.print("\n==================================================" );

  Serial.print("\n *** Sensor de corriente: Jeison Altamirano *** " );

  Serial.print("\n==================================================\n" );

  Serial.print("Irms= " );

  Serial.print(val-0.16);  // imprime el valor leído con una calibración de -0.16

  Serial.print(" [A] ");

  Serial.print("\n--------------------------------------------------\n" );

  delay(1000);

                           //coloca el cursor en la columna 0, la línea 1

                           // (Nota: la línea 1 es la segunda fila, ya que el recuento comienza con 0):

  lcd.setCursor(0, 1);

                           // imprimir el número de segundos desde reinicio:

  lcd.print(val-0.16);

  lcd.print(" A.");

  delay(250);

 

}

// Fin del sketch

 

bottom of page