Cómo medir la corriente de DC con Arduino

Cómo medir la corriente de DC con Arduino
Arduino es una placa electrónica que tiene una amplia gama de aplicaciones cuando se trata de circuitos eléctricos. Mientras trabajamos con Arduino, tenemos que lidiar con una serie de parámetros que implican la medición actual también. Para ejecutar Arduino sin problemas, necesitamos verificar constantemente la corriente, ya que no debe exceder el límite seguro. Normalmente se usa un multímetro convencional o digital para medir la corriente, pero aquí cubriremos cómo se puede usar Arduino para medir la corriente.

Medición de corriente de DC con Arduino

Hay muchas razones por las que necesitamos medir la corriente de DC usando Arduino. Es posible que deseemos verificar cuánta corriente de Arduino y otros periféricos están utilizando o medir la carga de la batería y la corriente de descarga.

La mayoría de los tableros y microcontroladores de Arduino tienen ADC incorporado, por lo que primero tenemos que medir el voltaje de CC que puede ser leído por la entrada analógica de Arduino, luego usando factor de escala Durante la programación, convertimos ese valor de voltaje ADC en corriente.

Para medir la corriente de DC usando arduino diferentes sensores y módulos están disponibles en el mercado. Uno de los sensores más populares y económicos disponibles en el mercado es el ACS712 Sensor de efecto de pasillo.

Sensor de efecto Hall ACS712

Ambos C.A y corriente continua La corriente se puede medir utilizando el sensor de efectos de Hall ACS712. Hoy solo nos centraremos en medir la corriente de DC. ACS712 funciona a más de 5V, genera un voltaje de salida en el Votación Pin del sensor que es proporcional al valor de la corriente medido por él.

Están disponibles tres variaciones diferentes de este sensor de acuerdo con el valor actual que mide:

ACS712-5A: 5A El sensor puede medir la corriente entre -5a a 5a. 185mV es el factor de escala o la sensibilidad del sensor que muestra 185mv El cambio en el voltaje inicial representa el cambio de 1A en la entrada de corriente.

ACS712-20A: 20A El sensor puede medir la corriente entre -20a a 20a. 100mV es el factor de escala o la sensibilidad del sensor que muestra 100mv El cambio en el voltaje inicial representa el cambio de 1A en la entrada de corriente.

ACS712-30A: 30A El sensor puede medir la corriente entre -30a a 30a. 66mV es el factor de escala o la sensibilidad del sensor que muestra 66mv El cambio en el voltaje inicial representa el cambio de 1A en la entrada de corriente.

El sensor sale 2.5V Cuando no se detecta corriente, el voltaje por debajo de esto representa la corriente negativa mientras que el voltaje superior a 2.5V muestra corriente positiva.

Factor de escala:

5A 20A 30A
185mv/amplificador 100mv/amperios 66mv/amplificador

Fórmula para medir la corriente

Para verificar el factor de escala, busque el chip ACS712 en el sensor de efectos del salón como se muestra a continuación en el diagrama. Aquí en nuestro caso, usaremos la versión 20A.

Diagrama de circuito
Asegúrese de conectar los sensores de efectos de la sala con carga siempre conectan en serie, ya que la corriente permanece constante en serie. Conectar el sensor en paralelo puede dañar la placa Arduino o ACS712. Conecte el sensor en la configuración mencionada a continuación:

Alfiler de arduino Pasador ACS712
5V VCC
Gnd Gnd
Pasador analógico Afuera

Simulación

Código

/*Definidos dos variables para Vout del sensor y corriente de carga medida*/
doble sensorVout = 0;
Double MotorCurrent = 0;
/*Constantes para el factor de escala en V*/
/*Para el sensor 5A tome escala_factor = 0.185;*/
const doble escala_factor = 0.1; /*Para el sensor 20A*/
/*Para el sensor 30A tome escala_factor = 0.066;*/
/* Variables definidas para convertir los datos analógicos en digital ya que Arduino tiene ADC de 10 bits, por lo que los valores máximos posibles son 1024*/
/ * El voltaje de referencia es 5V */
/* El valor de voltaje predeterminado para el sensor es la mitad del voltaje de referencia que es 2.5V*/
const Double RefVolt = 5.00;
const Double AdCresolution = 1024;
doble adcValue = refvolt/adcresolution;
Double defaultSensorVout = Refvolt/2;
setup () void
De serie.comenzar (9600);

bucle void ()
/* 1000 lecturas tomadas para obtener más precisión*/
para (int i = 0; i < 1000; i++)
SensorVout = (SensorVout + (ADCValue * Analogread (a0)));
retraso (1);

// vout en MV
SensorVout = SensorVout /1000;
/* Uso de la fórmula de corriente Convierta Vout desde el sensor en la corriente de carga*/
MotorCurrent = (SensorVout - defaultSensorVout)/ scale_factor;
De serie.print ("SensorVout ="); /*Imprimirá el voto del sensor en el monitor serial*/
De serie.imprimir (SensorVout, 2);
De serie.imprimir ("voltios");
De serie.print ("\ t motorcurrent ="); /*Imprimirá la corriente DC medida*/
De serie.imprimir (enciertor automovilístico, 2);
De serie.println ("amperios");
retraso (1000); /*Se da retraso de 1 segundo*/

Aquí en el código anterior se inicializan dos variables SensorVout y Corriente del motor, Ambas variables almacenarán los valores como voltaje y corriente respectivamente. El siguiente factor de escala se establece en 0.1 V (100mV) según el sensor 20A-ACS712. El voltaje de referencia se establece en 5V y para convertir la entrada analógica a la resolución de ADC digital se inicializa a 1024. Como Arduino tiene ADC de 10 bits, lo que significa que el máximo que puede almacenar es 1024 valores.

Como se explicó anteriormente factor de escala tomará lectura de acuerdo con los voltajes totales desviados de 2.5V. Entonces, 0.El cambio de 1V en Vout of Sensor será igual a 1A de corriente de entrada.

Siguiente en el bucle Sección a en bucle se inicializa para tomar 1000 lecturas para obtener un valor más preciso de la corriente de salida. El vOut del sensor se divide por 1000 para convertir los valores en MV. Usando la fórmula de corriente del motor, hemos determinado nuestra corriente de carga. La última sección del código imprimirá ambos voltajes de Vout del sensor y la corriente medida.

Producción
Aquí en el sensor de salida, Vout es inferior a 2.5V, por lo que la corriente del motor medida por salida es negativa. La corriente de salida es negativa debido a la polaridad inversa del motor de CC.

Conclusión

La medición de la corriente de DC usando Arduino requería algún sensor o módulo externo. Uno de los sensores de efecto Hall ampliamente utilizados es ACS712, que no solo tiene una gran variedad de medidas de corriente para DC y CA Corriente. Usando este sensor, hemos medido la corriente de CC de un motor de CC en ejecución y el resultado de salida se muestra en la ventana del terminal.