Haga clic para más productos.
No se encontraron productos.
Búsqueda de blogs
Artículos Recientes
Categorías del blog
Últimos comentarios
No hay artículos
Artículos relacionados

Tutorial sensor de corriente ACS712

155948

El sensor de corriente ACS712 es una solución económica para medir corriente, internamente trabaja con un sensor de efecto Hall que detecta el campo magnético que se produce por inducción de la corriente que circula por la línea que se está midiendo. EL  sensor nos entrega una salida de voltaje proporcional a la corriente, dependiendo la aplicación podemos usar el ACS712-05A, ACS712-20A o el ACS712-30A, para rangos de 5, 20 o 30 amperios respectivamente

El ACS712 podemos encontrarlo en módulos, los cuales nos facilitan sus conexión, traen una bornera para conectar la línea que queremos medir y 3 pines, dos para conectar la alimentación y un pin para la salida analógica.

Sensor de Corriente ACS712

El rango de corriente que podemos medir y sensibilidad varían dependiendo del modelo del integrado, existen tres modelos los cuales detallamos a continuación:

Modelo

Rango

Sensibilidad

ACS712ELCTR-05B-T

-5 a 5 A

185 mV/A

ACS712ELCTR-20A-T

-20 a 20 A

100 mV/A

ACS712ELCTR-30A-T

-30 a 30 A

66 mV/A

 

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

ecuacion V vs I en ACS712

Donde la pendiente es m y equivale a la Sensibilidad

Despejando tendremos la ecuación para hallar la corriente a partir de la lectura del sensor:

ecuacion para la corriente ACS712

Con esta ecuación podemos pasar a realizar los ejemplos con Arduino:

 

Conexiones entre Arduino y módulo ACS712

  

 

Conexiones entre ACS712 y Arduino

 

Para las conexiones en el módulo guiarse por los nombres de los pines, en algunos modelos vienen en diferente orden, en la bornera ingresa la línea de la cual se desea medir, para medir la corriente se  debe conectar en serie con el dispositivo o carga, nunca conectar en paralelo a la fuente de voltaje.

 

Ej.1 Realizando medidas de corriente con el ACS712

Para realizar la lectura de corriente simplemente se necesita leer la entrada analógica y con la formula antes expuesta obtener la corriente.

A continuación se muestra el código para un realizar la lectura de corriente:

float Sensibilidad=0.185; //sensibilidad en Voltios/Amperio para sensor de 5A

void setup() {
  
  Serial.begin(9600);
}

void loop() {
  
  float voltajeSensor= analogRead(A0)*(5.0 / 1023.0); //lectura del sensor   
  float I=(voltajeSensor-2.5)/Sensibilidad; //Ecuación  para obtener la corriente
  Serial.print("Corriente: ");
  Serial.println(I,3); 
  delay(200);     
}

En nuestro caso estamos trabajando con un sensor de 5A por eso usamos el valor de sensibilidad de 0.185V/A que es el equivalente 185mV/A que nos da el fabricante, si están trabajando con el sensor de 20A, reemplazar el valor de la sensibilidad por 0.100 V/A.

A continuación mostramos los resultados obtenidos del monitor serial:

 

lectura de corriente ACS712

 

La Imagen anterior es para una lectura de una corriente de 0A, notar que existe ruido en la lectura, si para su aplicación el ruido presente no tiene mucha importancia, podrían trabajar con el programa de este ejercicio, sino se tendrá que aplicar un filtro, que se muestra a continuación.

 

Ej.2 Aplicando Filtro a las lecturas del ACS712

Existen varios tipos de filtros, que dependiendo de la complejidad pueden consumir recursos en la programación de nuestro Arduino, en nuestro caso  simplemente usaremos la media aritmética de varias lecturas consecutivas, implementar el promedio de las lecturas en Arduino es sencillo y fácil de entender, simplemente hay que sumar la lecturas y dividirlas en el número de muestras.
La cantidad de muestras para calcular el promedio depende del nivel de ruido que tengan.

EL programa seria el siguiente:

float Sensibilidad=0.185; //sensibilidad en Voltios/Amperio para sensor de 5A

void setup() {
  
  Serial.begin(9600);
}

void loop() {
  
  float I=get_corriente(200);//obtenemos la corriente promedio de 500 muestras 
  Serial.print("Corriente: ");
  Serial.println(I,3); 
  delay(100);     
}

float get_corriente(int n_muestras)
{
  float voltajeSensor;
  float corriente=0;
  for(int i=0;i<n_muestras;i++)
  {
    voltajeSensor = analogRead(A0) * (5.0 / 1023.0);////lectura del sensor
    corriente=corriente+(voltajeSensor-2.5)/Sensibilidad; //Ecuación  para obtener la corriente
  }
  corriente=corriente/n_muestras;
  return(corriente);
}

En nuestro caso debido a que hay bastante ruido trabajamos con 200 muestras, mientras mayor sea la cantidad de muestras obtendremos un mejor resultado pero también mayor será el tiempo que se demora el Arduino para realizar la medición, para 200 muestras Arduino se demora alrededor de 35 milisegundos que se lo puede considerar despreciable en la mayoría de aplicaciones.

 

lectura de corriente ACS712 con filtro

 

Notar que ahora el ruido es de amplitud 10mA en comparación al ejemplo anterior que era superior a 100mA, No confundir el ruido con el error del offset que en este caso es de aproximadamente +150 mA , este último error si es representativo podemos restar al resultado en la ecuación de la corriente.

El siguiente resultado es para una carga de aproximadamente 1.2A

  lectura 2 de corriente ACS712 con filtro

 

Del sensor obtenemos una medida de 1.02A aproximadamente, pero si medimos con un multitester o amperímetro el valor de la corriente es de 1.15, en nuestro caso esto nos da un error de -130 mA que es diferente al offset o el error para una corriente de 0A. Si sus resultados también son como el nuestro,  significa que la ecuación que estamos usando para calcular la corriente no es la adecuada, para corregir esto es necesarios calibrar nuestro sensor y hallar los nuevos valores de sensibilidad y el voltaje equivalente a los 0A, valores que necesitamos para la ecuación.

 

Ej.3 Calibrando nuestro ACS712

Si el error que obtenemos con los ejemplos anteriores es grande, debemos de recalibrar y hallar los valores reales puesto que los valores que nos da el fabricante no son exactos.

Recordemos la ecuación que usamos para hallar la corriente:

ecuacion para la corriente ACS712

En esta ecuación solo tenemos dos constantes: los 2.5 que es el voltaje del sensor cuando la corriente es 0V y la sensibilidad, que equivale a la pendiente de la recta Voltaje Vs Corriente; tenemos que calcular los valores reales de estas dos constantes.


Al ser una recta, basta con obtener dos puntos y con estos podemos calcular constantes. Para esto necesitamos un multitester o amperímetro, el cual debe ser de buena precisión, ya que este será la herramienta para calibrar. El amperímetro, el ACS712 y la carga deben de conectarse en serie.

Después de conectar el amperímetro y el  sensor, debemos de tomar lecturas de voltaje del sensor, esto se hace con el siguiente programa.

void setup() {
  
  Serial.begin(9600);
}

void loop() {
  
  float voltajeSensor =get_voltage(10000);//obtenemos voltaje del sensor(10000 muestras) 
  Serial.print("Voltaje del sensor: ");
  Serial.println(voltajeSensor ,3);     
}


float get_voltage(int n_muestras)
{
  float voltage=0;
  
  for(int i=0;i<n_muestras;i++)
  {
    voltage =voltage+analogRead(A0) * (5.0 / 1023.0);    
  }
  voltage=voltage/n_muestras;
  return(voltage);
}

El primer punto que debemos medir es para una corriente de 0 amperios:

 

ACS712 lectura de voltaje para 0A

 

Esta es una de las constantes, en nuestro caso 2.527, que corresponde al punto P1(2.527,0)

Para hallar la segunda constante necesitamos una segunda medida, se recomienda que no sea cercano al valor de la primera medida, en nuestro caso usaremos una carga cuya corriente es superior a 1 amperio.

 

ACS712 lectura de voltaje para 1A

 

Como se observa el sensor tiene un voltaje de 2.687, y en el amperímetro medimos 1.155A, este sería nuestro segundo punto P2(2.687,1.155) , para calcular la sensibilidad simplemente calculamos la pendiente.

Teniendo estos dos valores la ecuación para calcular la corriente es:

ecuacion de sensibilidad

Donde sensibilidad=0.139 V/A

Con estos nuevos valores debemos trabajar los ejemplos anteriores

Tener en cuenta que cada sensor tiene su propia característica

Otra forma puede ser en tomar varios puntos y al final aplicar regresión y hallara la ecuación de la recta.

 

Ej.4 Vatímetro y Amperímetro de corriente  alterna usando el módulo ACS712

En este ejemplo realizaremos mediciones de intensidad corriente alterna y con esto calcular la potencia.

Cuando realizamos una lectura del ACS712 obtenemos el valor de la corriente en ese instante, dicho valor estará oscilando a una frecuencia de 60Hz, los valores máximo en los que oscila son las corrientes picos, nuestro programa entonces deberá poder obtener los valores pico de la onda de corriente, Teniendo el valor de la corriente Pico podemos calcular la corriente eficaz o RMS y con esto la potencia.

A continuación mostramos el código de este ejemplo:

float Sensibilidad=0.139; //sensibilidad en V/A para nuestro sensor
float offset=0.100; // Equivale a la amplitud del ruido
void setup() {
  
  Serial.begin(9600);
}

void loop() {
  
  float Ip=get_corriente();//obtenemos la corriente pico
  float Irms=Ip*0.707; //Intensidad RMS = Ipico/(2^1/2)
  float P=Irms*220.0; // P=IV watts
  Serial.print("Ip: ");
  Serial.print(Ip,3);
  Serial.print("A , Irms: ");
  Serial.print(Irms,3);
  Serial.print("A, Potencia: ");
  Serial.print(P,3);  
  Serial.println("W");
  delay(500);     
}

float get_corriente()
{
  float voltajeSensor;
  float corriente=0;
  long tiempo=millis();
  float Imax=0;
  float Imin=0;
  while(millis()-tiempo<500)//realizamos mediciones durante 0.5 segundos
  { 
    voltajeSensor = analogRead(A0) * (5.0 / 1023.0);//lectura del sensor
    corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad); //Ecuación  para obtener la corriente
    if(corriente>Imax)Imax=corriente;
    if(corriente<Imin)Imin=corriente;
  }
  return(((Imax-Imin)/2)-offset);
}

El algoritmos consiste en realizar mediciones durante medio segundo, lo cual equivale a realizar medidas durante 30 ciclos (señal de 60Hz), durante este tiempo obtenemos las lecturas máximas y minimas que corresponden a +Ip y –Ip, la correinte Ip será el promedio de estas. A este resultado le restamos la amplitud del ruido que está presente cuando la corriente es 0.

Notar que para disminuir un poco el ruido aplicamos un filtro pasa bajos, que es similar a realizar un promedio de 10 muestras.

    corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad); //Ecuación  para obtener la corriente

Con estos pesos amortiguamos un poco el ruido sin afectar la señal de 60Hz

A continuación se muestra el resultado cundo no tenemos ninguna carga conectada (0 amperios)

 

corriente AC 0 watts con ACS712

 

En nuestro caso la Corriente Ip es cercano a 0, puesto que nosotros ya hemos calculado el offset, en su caso deberán poner el offset en 0, y relizar la lectura sin carga, el valor del Ip será el valor del offset que deben remmplazar en su código.


Para ver si su amperímetro está bien calibrado deben contrastar con un amperímetro, vatímetro, o verificar con una carga conocida. Por ejemplo en  continuación mostramos el resultado al trabajar con una carga de 20W (foco ahorrador)

 

corriente AC 20 watts con ACS712

 

Si su resultado no son los adecuados deberán de volver a calibrar su sensor, primero con corriente DC y encontrar la ecuación correcta para calura la corriente usando los ejemplos anteriores y posteriormente trabajarlo con AC.

Productos relacionados
Artículos relacionados
79 Comentarios
  • Fernando

    Fernando 24/05/2021 Responder

    Hola muy buen material, sin embargo tengo una duda como puedo usar el mismo sensor en la ESP8266, porque he probado el código usando en vez de 5 he puesto 3.3v/1024 y la mitad 1.65v, pero no me funciona, Sabe que podría ser?
  • Fernando

    Fernando 09/09/2020 Responder

    ¿Qué sucede, si se produce un cortocircuito en el circuito monitorizado y la corriente sube de forma exagerada por encima de los Amperios para los que está dimensionado el circuito?
    Por ejemplo, en el caso de un motor que se trilla el cable de fase con el de tierra o neutro y se produce un sobreconsumo de muchos amperios hasta que saltan las protecciones, fusibles, guardamotor, limitadores de cuadro, etc.
    ¿Se puede dañar el sensor de efecto hall o también el chip, ACS712-20A/100A?
    Saludos y gracias por vuestra formación accesible de forma libre :))
  • Carlos Macherione

    Carlos Macherione 14/06/2020 Responder

    Geniooo!!! Por fin alguien en la web que explica Bien y Calro como calibrar este módulo. Excelente información.
    Felicitaciones!!!!!
  • Joel

    Joel 05/06/2020 Responder

    Lo mas conveniente es usa un amplificador de señal análogo que permita ajustar mejor la señal, 185mv/Amp para 5 amperios son 0.925 voltios.. si el conversor del ardunio es de 1024 pasos a 5 voltios.. quiere decir que en 0.925 voltios solo hay 189 pasos.. es decir 5amp/189 escalones cada escala es de 0.026 amperios una resolución muy mala. ahora si se una un ADC tipo ADS1115 ( 65535 16 BITS) todo cambia serian 12124 escalones para 5 amperios es decir cada paso equivale a 0.0004 amperios. algo mucho mas decente. Yo usaria un modulo LM358
  • cesar

    cesar 09/04/2020 Responder

    disculpe amigo como puedo hacer un limitador de corriente para un celular
  • Rul

    Rul 04/12/2019 Responder

    Como podría usarlo con Raspberry pi 3?
  • Omar Pay

    Omar Pay 10/07/2019 Responder

    ¡hola!
    Estoy trabajando con este sensor y estoy tiniendo algunos problemas. Quiero minimizar el ruido pero de manera más robusta usando la mediana, pero no encuentro la manera de guardar los datos medidos en un mismo vector. Con la media era más sencillo ya que simplemente se sumaban. ¿Alguno puede auxiliarme?

    GRACIAS
  • Jaime Morales

    Jaime Morales 01/07/2019 Responder

    hola alguien podria mandar una foto de alguna prueba la conexion debe ser en serie o en paralelo ?
  • Dario

    Dario 03/06/2019 Responder

    Creo que para obtener el mínimo debería inicializar (float Imin=1024;) nó =0
    de otra forma no se detectan los valores
  • Juan Diego

    Juan Diego 20/05/2019 Responder

    ¿Se puede utilizar en un motor trifasico de 440VAC?
  • felipe

    felipe 08/05/2019 Responder

    el ultimo codigo quedi calibrado en mi caso a 0.110 0.534 mi voltimetro0 .531 a 0.537 fluctuando entre esas cifras y con picos de 0.529 a 0.543 ocasional mente para ser de 20 ampr lo considero mi modulo considero muy buen resultado para ser enviado por cayenne via ethernet
    muchas gracias desde queretaro mexico
  • Aguero Luis

    Aguero Luis 29/03/2019 Responder

    Quisiera saber como se obtuvo este filtro paso bajo, el cual hace mención "corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad);"???
  • JUAN

    JUAN 26/02/2019 Responder

    el mejor tutorial que he encontrado excelente gracias y felicitaciones
  • Miller

    Miller 05/01/2019 Responder

    Antes que nada felicitarte por este tutoríal muy completo y bien explicado. Mi pregunta es . Podría usar este sensor para medir la corriente consumida por un motor 220vac de un compresor ?
  • Diego

    Diego 04/06/2018 Responder

    Hola muy buen tutorial me gustaria saber como puedo agregar 3 leds indicadores con los cuales tenga como verde un estado natural de operacion (de 0A a 2A) y un amarillo cuando la corriente sea (>2A) y un rojo que nos muestre cuando es (>10A)
  • Fernando

    Fernando 23/05/2018 Responder

    Amigo como es el proceso de calibración que mencionas, que se hace primero con DC y luego en AC..
  • Victor Perez

    Victor Perez 21/05/2018 Responder

    Buenas tarde podria ayudarme poniendo el sensor el voltaje a referencia de 3.3V
  • Victor

    Victor 30/04/2018 Responder

    Buenas amigo como estas,
    ¿Como podría hacer para qué el sensor me mande una alerta de cuando hay cambios de corriente debido a cortes de electricidad?
  • jose alfredo

    jose alfredo 05/04/2018 Responder

    Buenas tardes mi estimado una pregunta si quiero instalar elsensor de 30 amp. solo tengo que cambiar el valor de sensibilidad al programa solo eso o algo mas
  • Carlos Garcia

    Carlos Garcia 02/03/2018 Responder

    Estimado leyendo tu articulo yo tengo este sensor ACS712-30 y estoy corriendo una prueba que durara 30 dias y necesito medir la corriente, tengo un shut en la medición de corriente y tengo oscilaciones debidas a la temperatura. La adquisición de la medición la estoy haciendo por medio de registrador de señales analógicas en mV de CD.
    La pregunta es posible realizar esta medición por medio del ACS712-30 .
    Gracias
  • Joaquin

    Joaquin 21/02/2018 Responder

    Hola, soy de argentina y la alimentacion es 220v a 50hz y esto haciendo un medidor de consumo y mi problema es el siguiente cuando lo mido sin cargar osea no conecto nada a ip+ y ip- me da una lectura cercana a 1 (0,991 , 0,890, 1,02 etc)
    como soluciono eso ??'
  • DAVID HERAS

    DAVID HERAS 14/02/2018 Responder

    Disculpa, a que te refieres en el Amperimetro con
    if(corriente>Imax)Imax=corriente;
    if(corriente Como saber cuando es Imax o Imin,
    Gracias.
  • Alexis

    Alexis 30/01/2018 Responder

    Excelente tutorial!
  • lol

    lol 11/01/2018 Responder

    tu explicacion no sirve ni para limpiarse el culo, es como explicarle a un mono como se folla a un elefante. tonta besos <3
  • Oscar

    Oscar 31/12/2017 Responder

    Cpn este sensor puedo medir corriente en dc de tension entre 60 y 600 voltios?
  • JOSE

    JOSE 29/11/2017 Responder

    Disuculpa, tendras la libreria del sensor para poder hacer la simulacion con un microcontrolador en PROTEUS?
  • Jorge Gonzales

    Jorge Gonzales 10/11/2017 Responder

    porque se multiplica *5/1023 el valor de la entrada analogica A0 ?
    Lo correcto no sería 5/1024 ?
    Muy buen proyecto
  • renato

    renato 18/10/2017 Responder

    hola quiero hacer un proyecto, consiste en como saber si las luces de mi casa estan encendidas o si estan malogradas las bombillas, pero todo esto via wifi, osea yo encontrandome en un lugar lejos de casa como por decir controlar esto desde mi centro de trabajo. como seria la coneccion'
  • Andres

    Andres 07/09/2017 Responder

    Quisiera saber como se obtuvo este filtro paso bajo, el cual hace mención "corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad);"???
  • elio

    elio 07/08/2017 Responder

    hola muy buenas, quiero medir la coriente a un panel solar sin carga con este sensor, el panel genera su propio voltaje como haria en este caso para medirlo con este sensor.
    • Naylamp

      Naylamp 29/08/2017 Responder

      Hola Elio, sin carga la corriente del panel siempre va a ser 0mA, Si lo que deseas es medir su voltaje usa un simple divisor de voltaje con dos resistencias para estar a un rango de 5V y conéctalo a un pin analógico de tu arduino.
  • Wil

    Wil 27/07/2017 Responder

    hola buenas noches tengo un sensor ACS712 y necesito mirar la corriente que genera un panel solar de 5V. ¿ como hago para conectar el panel solar ?
    • Naylamp

      Naylamp 29/08/2017 Responder

      Hola Wil, la corriente del panel va a depender de la carga que tengas conectada al panel, lo que va a variar en el panel va a ser la corriente máxima. Salvo quieras medir la corriente en Corto puedes conectar ambas líneas del sensor al panel, sino tienes que conectar en serie con una carga, si quieres medir la corriente máxima tiene que ser una carga grande.
  • Gerald

    Gerald 21/07/2017 Responder

    Conectar el sensor para medir es a un brazo de la línea de 220 vac
  • Gilber

    Gilber 14/06/2017 Responder

    Amigo, estoy midiendo corriente con el sensor ACS712 de 5A, pero antes de conectar una carga en sensor ya me mide una corriente de 0.12, cual seria el inconveniente o que estoy haciendo mal. Agradezco mucho por su ayuda.
    • Naylamp

      Naylamp 23/06/2017 Responder

      Hola Gilber, si es por ruido con el ejemplo 2 debe de disminuir o desaparecer los 0.12, sino tienes que calibrar tu sensor usando el ejemplo 3.
  • Fabian

    Fabian 06/06/2017 Responder

    Hola amigo, te felicito por el tutorial, excelente pagina!

    Sabes estaba guiandome de tu ejemplo numero 4 y quería saber si utilizaste una diferente sensibilidad, ya que veo que tienes 0.139... Y en la tabla que definiste al principio no corresponde esa sensibilidad a ninguno de los 3 sensores hechos.

    Quizas me estoy perdiendo de algo que no se, tienes alguna razon para utilizar esa sensibilidad?

    Yo trato de realizarlo con lecturas del ACS712 de 30 Amps para leer corriente en A.

    Muchas gracias
    • Naylamp

      Naylamp 23/06/2017 Responder

      Hola Fabián en el Ejemplo 3 calculamos el valor de la sensibilidad de 0.139.
  • Juan F

    Juan F 23/05/2017 Responder

    hola, primero felicitarlos por el excelente tutorial, pero he tenido unos problemas con la calibración del sensor, sin carga a veces me da 2.5V otras veces 2.7V .. etc quisiera que me ayuden con ese problema por favor
    • Naylamp

      Naylamp 30/05/2017 Responder

      Hola Juan, Lo más probable es que se trate ruido, aumenta las muestras unas 10 veces más, si disminuye la variación entonces es ruido. Agrega un condensador a tu fuente y de igual manera en el Vcc y GND del módulo.
  • Jhonathan De La Hoz

    Jhonathan De La Hoz 10/05/2017 Responder

    Muy buenas, he hecho lo que el tutorial recomienda realizar, necesito medir unas cargas en AC, tengo un sensor de 20A pero sólo requiero medir cargas de 1A para abajo, pero no puedo utilizar el sensor de 5A porque las cargas que pasan por el cable son de hasta 15 amperios por lo que podría dañar el sensor. He hecho la respectiva calibración pero el valor del cálculo me dió bastante cerca al ya establecido 0.104 para ser exactos y ps aún así cuando mido cargas en AC me mide un consumo de 600 miliamperios aproximadamente y en realidad está consumiendo 800 miliamperios, entonces el error es bastante grande. Hay otra posibilidad para arreglar esto?.

    Muchas gracias.
    • Naylamp

      Naylamp 30/05/2017 Responder

      Hola Jhonathan, en el caso de AC, nuestro método es válido si la carga es resistiva, o que la corriente mantenga su forma sinusoidal, para que la fórmula del Irms sea válido. También nosotros calculamos el Ipico midiendo la corriente mayor, pero si hay algún ruido o pico de corriente tendremos lecturas incorrectas, sobre todo si estamos midiendo corrientes pequeñas. Lo mejor es integrar y calcular el Irms. Similar a como lo hacemos en nuestro Tutorial sensor de corriente AC no invasivo SCT-013
  • Marisol

    Marisol 20/04/2017 Responder

    Buenas tardes, he realizado el experimento de medir el voltaje de la salida del sensor con tu código para calibrarlo, mi problema es que en una corriente de 0A, el multímetro me arroja 2.48V (lo cual es teóricamente correcto, ya que el voltaje de entrada es exactamente 4.96V), sin embargo, en el monitor serial me arroja 2.58V. Pensé que quizá era un problema con el código, pero al medir el voltaje de entrada, el monitor serial me arroja exactamente los 4.96V, después intenté medir un voltaje de 3.33V, y el monitor arroja 3.56V. Cambié de pin y seguía igual.
    • Naylamp

      Naylamp 30/04/2017 Responder

      Hola Marisol, en el ejemplo tomamos 1000 muestras y sacamos el promedio, si durante la toma de las muestras desconectas el sensor o conectas el multímetro podría afectar la lectura, Puedes también probar el ejemplo del arduino en Archivo>Ejemplos>Basics>ReadAnalogVoltage, si allí las lecturas también son incorrectas, podría ser que los 5V de tu arduino no sean estables.
  • luis

    luis 15/03/2017 Responder

    buenas noches como puedo comprar en colombia este producto ACS712T
  • Wirtz

    Wirtz 20/02/2017 Responder

    Hola Naylamp!.
    Gracias por tu respuesta ya pude solucionar los problemas que tenia con los dos censores.
    Ahora tengo otra consulta Tengo Conectados a un Arduino UNO. (un lector RFID, un RELE, un sensor de paso de corriente, y un modulo LAN, la coneccion física no es problema, mi consulta esta mas dirigida a la parte lógica de programación en saber si es viable)
    lo que deberia hacer mi codigo es reconocer la tarjeta RFID y comprobar si esta dades de alta en la base de datos de usuarios de ser asi pasar de OFF a ON al RELE, y asi iniciar el paso de corriente por el sensor y esta medicion enviarla a la base de datos de consumo mientras que se muestra mediante grafias en el sistema en Visual Basic.
    • Naylamp

      Naylamp 23/03/2017 Responder

      Hola Wirtz, la aplicación que plateas es totalmente viable, primero prueba la comunicación arduino y base de datos, y también por separado el RFID, después de tener funcionando ambas partes será más fácil integrarlas.
      • Alex Wirtz Wlodyka

        Alex Wirtz Wlodyka 29/03/2017 Responder

        Hola Naylamp sisi eso que me dices lo hice y todo funciona bien por separado el asunto que me esta costando hoorroores es la combinacion de el codigo para todos los modulos juntos.te recuerdo la secuencia:
        1°Modulo lan debe estar enlazado siempre, 2° paso mi tarjeta rfid y esta info debe viajar hasta una base de datos en SQL ara verificar su validez tanto del codigo de la rfd como de la IP, de estar validadas para ese modulo, regresa una orden que, 3° activa el RELE de Of a On. 4° esto inicia el paso de energia y el sensor de paso de corriente comienxa a leer y enviar esa lectura a la Base de datos de SQL para su lectura por el sistema en Visual Basic 2015
  • wirtz

    wirtz 11/02/2017 Responder

    hola necesito a modo de controlador, poder medir la generación de energía en voltios de un panel solar con el sensor ACS712-30A esta se puede hacer?? como seria le suplico que desburren Gracias
    • Naylamp

      Naylamp 17/02/2017 Responder

      Wirtz, para medir el voltaje es mejor usar un sensor de voltaje, que puede ser desde un simple divisor de voltaje o con un CI Amplificador Operacional. Con el sensor ACS712 solo puedes medir la corriente, que va a depender de la carga que tengas conectado al panel.
  • Marco

    Marco 10/02/2017 Responder


    Muy buena explicación, solamente tengo un par de preguntas, en tu código haces la siguiente división:

    voltajeSensor = analogRead(A0) * (5.0 / 1023.0);

    En el denominador no debería ir 1024.0 en vez de 1023.0 porque son 1024 valores del ADC (del 0 al 1023)?

    Y la otra pregunta, para un foco de 12 V a 50 mA al cuál quiero medir la corriente, en qué interfiere que mi fuente de poder sea de 12 V DC a 1.1 A ?

    Muchas gracias!


    • Naylamp

      Naylamp 17/02/2017 Responder

      Hola Marco, En el denominador debe ir (2^n -1) hazte la idea que el adc fuese de 1 bit (0 y 1) en el denominador la relación debería ser adc*5/1 para tener 0V y 5V correspondientes a 0 y 1.
      Con respecto a tu Fuente no habría ningún problema, pues los 1.1A es la corriente máxima que puede suministrar.
  • Wirtz

    Wirtz 07/02/2017 Responder

    hola muy bueno los ejemplos me ayudaron muchisimo pero sigo con algunos problemas estoy trabajando con el sensor que tienes de ejemplo en la publicacion de 30A y tengo en la misma placa arduino conectado 2 sensores uno para medir amperaje en paneles solares y otro para medir amperaje de bateria. He aqui mi problema necesito leer los dos al mismo tiempo, y ahi se genera los erroes en el codigo del ejemplo 4, y la otra consulta es si tengo que poner alguna resistencia previa al sensor o puedo poner el cable del panel directo al sensor.
    • Naylamp

      Naylamp 17/02/2017 Responder

      Hola Wirtz, si puedes usar dos sensores en el mismo arduino, conecta el segundo sensor al pin A1 y crear nuevas variables para el segundo sensor, de igual forma con las funciones. Dúplica el código pero con nuevas variables. Ten en cuenta que para medir corriente se conectan en serie, si conectas en paralelo vas a malograr el sensor.
      • Wirtz

        Wirtz 20/02/2017 Responder

        Gracias!!! te tengo una nueva consulta,
        tengo conectado a un arduino UNO, un lector RFID, un RELE, un Sensor de paso de corriente, y un modulo LAN para que se comunique con un servidor en el edificio que controlaría la base de datos de logueo del RFID y recibiría los datos de consumo de corriente, esto es viable? la coneccion se que si porque ya lo hice y todos responen, pero mi duda esta mas orientada a la logica de programacion. Si tienes algun consejo te lo agradeceria.
  • Ricardo

    Ricardo 28/01/2017 Responder

    Les comento. Pueden medir mas de lo que da el sensor. Si tenes que medir 60A podes sacar un cable (bypass paralelo) de menor diametro (supone 1/5 del que esta puesto) asi tendrias 5 original +1 del sensor y pasaria 60A/6 = 10A que si puede medir el sensor. Ademas si falla la parte electronica por algun motivo o la tenes que sacar, el equipo sigue funcionando por el cable original. Despues en la programacion calibras el resultado porque acuerdense que miden una fraccion de la corriente. Slds.
  • Francisco Michell

    Francisco Michell 24/01/2017 Responder

    Hola, tengo un modulo de ASC714 con sensibilidad de 66 mv/A,
    se puede usar el mismo procedimiento para este modulo que con el ASC712.

    Gracias
    • Naylamp

      Naylamp 03/02/2017 Responder

      Hola francisco, solo cambia las variables correspondientes a tu sensor, que en tu caso sería la sensibilidad de 66mV/A
  • Fer

    Fer 16/01/2017 Responder

    Hola , muy bueno el tutorial , gracias or compartirlo . Tengo una lampara led con un driver CC , se le puede ajustar la potencia entre 0.5 / 2a y 220v , me gustaria saber si podria implementar este sensor para , a traves del potenciometro (que ya lleva) saber el consumo de la lampara por el puerto serie o un display .
  • Jhorman

    Jhorman 12/01/2017 Responder

    Hola una pregunta cual seria el rango de salida del sensor de 30A, cuando esta censando corriente alterna por que La grafica de Output Voltage versus Sensed Current que proporciona el data sheet dice que el rango es de 2.5v a 4.5v cuando esta censando de 0a 30A pero es para DC y quiero trabajar en corriente alterna pero no tengo información.
    • Naylamp

      Naylamp 03/02/2017 Responder

      Hola Jhorman, para 0A el voltaje de salida es de 2.5V, una corriente positiva o negativa hará que el voltaje aumente o disminuya respectivamente en proporción a la sensibilidad, llegando a un voltaje cercano a 5V para los 30A o cercano a 0V para corrientes -30A
  • Anónimo

    Anónimo 24/12/2016 Responder

    La imprecisión en CA también puede deberse a la variabilidad del voltaje de la línea. Aquí llegan 210-220 V de 230 V que tendría que llegar. También depende de la instalación de casa, así que en diferentes puntos también varía.
  • Guillermo

    Guillermo 22/12/2016 Responder

    Hola, hay posibilidad de hacer funcionar un relay a partir del resultado de la medicion de voltaje?
    por ejemplo, si el voltaje es menor a 4 volts que se active el relay.
    gracias!
  • Ricardo

    Ricardo 05/12/2016 Responder

    Hola, muy buen aporte, pero mi inquietud esos cálculos realizados es solo para medir la potencia de 1 foco, me ayudaría cual seria el proceso para medir 4 focos o bombillos
    • Naylamp

      Naylamp 14/12/2016 Responder

      Hola Ricardo, EL procedimiento que mostramos es para medir potencia, independiente a lo que tengas conectado, sea un foco, 4 focos o cualquier carga, Si quieres medir de forma impendiéndote diferentes cargas tendrías que usar varios sensores y básicamente repetir el código del programa para los otros.
  • Johnny Diaz

    Johnny Diaz 17/11/2016 Responder

    Hola, esta muy bueno el tutorial! muchas gracias! ... Mi consulta es, como puedo medir la frecuencia en una red AC ? Gracias!
    • Naylamp

      Naylamp 01/12/2016 Responder

      Hola Johnny, para medir la frecuencia tienes que convertir la señal sinusoidal en una cuadrada y luego medir el tiempo entre flancos, es mejor usar otro tipo de sensor para esto, pues la amplitud en un sensor de corriente es variable.
  • Jaime

    Jaime 14/11/2016 Responder

    Hola, consulta, puedo hacer mediciones en circuitos con cargas conectadas a C/A de 240v?
    • Naylamp

      Naylamp 16/11/2016 Responder

      Hola Jaime, si es posible, en el ejemplo 4 trabajamos con 220AC.
  • Kim

    Kim 11/11/2016 Responder

    Hola! Super tus explicaciones!
    Tengo un sensor de voltaje? Como programo para que solo me de cuanto voltaje genera?
    • Naylamp

      Naylamp 16/11/2016 Responder

      Hola Kim, te refieres a un sensor de corriente? Qué modelo de sensor tienes?
  • Jaime

    Jaime 06/11/2016 Responder

    Hola, consulta, cual es el maximo voltaje que puedo medir con este sensor?
    • Naylamp

      Naylamp 16/11/2016 Responder

      Hola Jaime, según el datasheet tiene un aislamiento de 2.1KV (rms), Nosotros lo hemos probado con cargas de 220v y 110v y trabaja normal, pero siempre teniendo en cuenta de no exceder la corriente máxima.
      • Juan Diego R.

        Juan Diego R. 20/05/2019 Responder

        ¿Entonces lo puedo utilizar en un motor trifasico de 440VAC?
  • fernando

    fernando 26/10/2016 Responder

    Hola, Excelente tutorial. Me podrías ayudar por favor explicandome que interpretación tienen estas lineas:
    1. float I=get_corriente(200);
    2. float get_corriente(int n_muestras);
    3. return(corriente);

    Saludos
    • majdi

      majdi 07/02/2018 Responder

      comment on peut determiner la vitesse de rotation d un moteur a l Aide d un genitachy et un capteur ACS712 ET une carte arduino !
    • Naylamp

      Naylamp 06/11/2016 Responder

      Hola Joel, el valor de 1023 es el que corresponde a una lectura analógica para un voltaje de 5V, la función analogRead() devuelve un valor entre 0 y 1023 (correspondientes a 0V y 5V). En el ejmplo de Read Analog Voltage de la página de arduino puedes encontrar una mejor explicación.
    • Joel

      Joel 05/11/2016 Responder

      Hola, el tutorial es muy bueno, pero tengo un inconveniente, al probar el sensor con corriente cero, me da valores de 3 , me podría explicar esta linea de código: "float voltajeSensor= analogRead(A0)*(5.0 / 1023.0); //lectura del sensor ", especialmente me interesa saber como obtuvo el 1023, gracias.
    • Naylamp

      Naylamp 28/10/2016 Responder

      Estimado Fernando, en I=get_corriente(200); llamamos a la función get_corriente la cual nos entrega el promedio de 200 muestras. La línea float get_corriente(int n_muestras) {…} se usa para implementar la función. Y return(corriente); se usa para indicar el valor del resultado de la función.
Dejar un comentario
Deja su comentario

Menú

Ajustes

Crear una cuenta gratuita para usar listas de deseos.

Registrarse