ACS712 Hall Effect Current Sensor
ACS712 Hall Effect Current Sensor
inShare1
Share on Tumblr
Monitoring the Current flow in a device by a mains powered appliance is just complicated one.
Because continuous current flow monitoring by a circuit creates current isolation in target
device, so we need to measure current flow without affecting the target device.
The popular and easy method to current sensing is Hall effect current sensing method.
When a current carrying conductor was placed in a magnetic field, a voltage proportional to the
field was generated. This is known as hall effect.
Applied current flowing through this copper conduction path generates a magnetic field which
the Hall IC converts into a proportional voltage. Device accuracy is optimized through the close
proximity of the magnetic signal to the Hall transducer. A precise, proportional voltage is
provided by the low-offset, chopper-stabilized BiCMOS Hall IC, which is programmed for
accuracy (acs712-datasheet).
Features
2.1 kVRMS minimum isolation voltage from pins 1-4 to pins 5-8
How it Works?
Here the ACS712 current sensor ic placed in a breakout board and connect with Current sense
target load and Micro-controller. The sensor detects current flow through IP+ and IP- pins
(Resistance Current Conductor), it creates hall effect and then proportional voltage output taken
form pin 7 (VIOUT) of ACS712. It can be directly fed into micro controllers Analog input pin after
the filter arrangements.
As per the breakout application note hall effect current sensor connected with target load and
output signal is connected with well known Arduino’s A0 (Analog input pin 0). This sensor
breakout consumes power from Arduino power source (+5 and GND). After the setup is over
upload the following arduino code to measure the current flow to the load.
void setup() {
Serial.begin(9600);
void loop() {
float average = 0;
delay(1);
}
Serial.println(average);
#define CURRENT_SENSOR A0 // Define Analog input pin that sensor is attached
void setup()
Serial.begin(9600);
pins_init();
void loop()
int sensor_max;
sensor_max = getMaxValue();
Serial.print("sensor_max = ");
Serial.println(sensor_max);
effective_value=amplitude_current/1.414;
Serial.println(amplitude_current,1);
Serial.println(effective_value,1);
void pins_init()
pinMode(CURRENT_SENSOR, INPUT);
/*Function: Sample for 1000ms and get the maximum value from the S pin*/
int getMaxValue()
int sensorMax = 0;
{
sensorValue = analogRead(CURRENT_SENSOR);
{
sensorMax = sensorValue;
}
}
return sensorMax;