Amperímetro ACS712
El ACS712 es un sensor de corriente tanto alterna como continua, que permite medir la intensidad eléctrica que atraviesa un conductor. Podemos emplear el ACS712 junto con un procesador como Arduino para medir la intensidad o potencia consumida por una carga.
Internamente el ACS712 consiste en un sensor hall de precisión y bajo offset junto con un canal de conducción localizado cerca de la superficie del integrado. Cuando la corriente fluye por el canal de cobre genera un campo magnético que es detectado por el sensor Hall y es convertido en una tensión.
La salida del sensor es una tensión proporcional a la corriente, y altamente independiente de la temperatura. El sensor viene calibrado desde fábrica, aunque para una medición de precisión hará falta un ajuste de la calibración.
El camino conductor está aislado galvánicamente del IC garantizado un mínimo 2.1 kVRMS Su resistencia es muy baja, 1.2 mO, lo que se traduce en pequeñas pérdidas.
Existen modelos para rangos de 5A, 20A, 30A. El sensor soporta corrientes hasta 5x el rango de medición del sensor. Sobrepasar el límite dañara el ACS712.
La mayor desventaja del ACS712 es que es un sensor intrusivo, es decir, es necesario insertarlo en un conductor lo cual puede suponer que tengamos que cortar un cable. Es una gran desventaja frente a sensores no intrusivos como el transformador de intensidad STC-013.
Aplicaciones típicas del ACS712 incluyen control de motores, control de cargas, fuentes de alimentación, y protecciones contra sobretensiones.
Nosotros podemos usarlo en nuestros proyectos de electrónica casera y Arduino, por ejemplo, para medir la intensidad que alimenta una carga, para medir su consumo, o como protección de dispositivos tales como motores.
ESQUEMA DE MONTEJE
Los módulos con el ACS712 son muy sencillos de conectar. Precisamente esta es una de sus grandes ventajas. Al ACS712 proporciona una salida de tensión proporcional a la intensidad que atraviesa el sensor.
Por tanto, simplemente alimentamos el módulo conectando Gnd y Vcc, respectivamente, a Gnd y 5V en Arduino, y conectamos la salida del sensor a una entrada analógica de Arduino.

Mientras que la conexión, vista desde Arduino, sería la siguiente.

Como hemos comentado, la tensión en la salida del ACS712 es proporcional a la intensidad que atraviesa sensor. Se incluye un offset de 2.5V de forma que la referencia está centrada, lo que permite medir intensidades positivas y negativas.
El sensor nos entrega un valor de 2.5 voltios para una corriente de 0A y a partir de allí incrementa proporcionalmente de acuerdo a la sensibilidad, teniendo una relación lineal entre la salida de voltaje del sensor y la corriente.
Dicha relación es una línea recta en una gráfica Voltaje vs Corriente donde la pendiente es la sensibilidad y la intersección en el eje Y es 2.5 voltios. La ecuación de la recta seria la siguiente
Donde la pendiente es K y equivale a la Sensibilidad. Seria la resistencia interna del sensor, según la ley de ohm.
El factor de proporcionalidad y la resolución dependen del modelo del sensor, para rango de 5A, 20 y 30.
| Max Intensidad | Sensibilidad | Tensión salida | Resolucion |
|---|---|---|---|
| ±5A | 185 mV/A | 1,575V a 3,425V | 26mA |
| ±20A | 100 mV/A | 0,5V a 4,5V | 49mA |
| ±30A | 66 mV/A | 0,52V a 4,48V | 74mA |
// Sensibilidad del sensor en V/A
float SENSIBILITY = 0.185; // Modelo 5A
//float SENSIBILITY = 0.100; // Modelo 20A
//float SENSIBILITY = 0.066; // Modelo 30A
int SAMPLESNUMBER = 100;
void setup()
{
Serial.begin(9600);
}
void printMeasure(String prefix, float value, String postfix)
{
Serial.print(prefix);
Serial.print(value, 3);
Serial.println(postfix);
}
void loop()
{
float current = getCorriente(SAMPLESNUMBER);
float currentRMS = 0.707 * current;
float power = 230.0 * currentRMS;
printMeasure("Intensidad: ", current, "A ,");
printMeasure("Irms: ", currentRMS, "A ,");
printMeasure("Potencia: ", power, "W");
delay(1000);
}
float getCorriente(int samplesNumber)
{
float voltage;
float corrienteSum = 0;
for (int i = 0; i < samplesNumber; i++)
{
voltage = analogRead(A0) * 5.0 / 1023.0;
corrienteSum += (voltage - 2.5) / SENSIBILITY;
}
return(corrienteSum / samplesNumber);
}
Referencias en el blog de Luis LLamas: https://www.luisllamas.es/arduino-intensidad-consumo-electrico-acs712/
No hay comentarios:
Publicar un comentario