I've been doing a project to figure out the power factor of a load by comparing the zero crossings of the voltage and current signals (of a AC signal) and hence finding the phase difference using an arduino UNO. the application is confidential but i can say that im using a load which can introduce change the inductance in the circuit and hence give me a phase difference and also increase the effective resistance which further decreases to current consumed. i have my voltage signal available through a particular method and im using a ACS712 hall effect current sensor module for current sensing.

Ive been able to get cleaner waveforms using a low pass filter (from 500ma to 300ma i can get good power factor readings) for currents up till 300mA, but currents lower than that become comparable to the inherent noise of the sensor. Hence im looking for other options to get a clean current waveform, i looked into similar sensors with the current ranges and sensitivities that my application desires, but they aren't readily available and may cost a lot on a production level for my company.

I cant use a CT cause my currents are already at very low values, lowering them further through a CT wont help and as per my calculations for 1:50 turns CT will end up with similar low current signals as the ACS712 (dont know about the noise effects though), hence im looking at the shunt resistor method. my questions are as follows:

1) Is there any other approach i could follow to calculate the power factor?

2) can i still use a CT? considering its an isolation method. but how would i measure currents in the range 500ma to 50ma that is required for my application.

3) i have tried using a 5 ohm resistor as a shunt (5*0.2 = 1Vpp) and tried to observe the output, the signal seems to be very noisy to begin with, how do i go about this? additionally how do i make it safer considering there is galvanic contact with the AC lines as opposed to other methods.

4) should i follow any other approach to get this done?

so im in a bind :/ need help!!! :cry: (sorry for the big paragraph and list of Questions! 8-O )

  • 2
    \$\begingroup\$ CT is the gold standard way to do this, it gives you galvanic isolation, so you use a suitable sized resistor to convert current to voltage. \$\endgroup\$
    – Neil_UK
    Nov 18, 2017 at 6:33
  • \$\begingroup\$ (1) You have only specified the minimum current. What is the maximum? (2) How will you handle non-sinusoidal currents such as from switched mode power supplies (SMPS)? (3) You have no links to datasheets for devices mentioned. \$\endgroup\$
    – Transistor
    Nov 18, 2017 at 7:18
  • \$\begingroup\$ This is displacement power factor NOT power factor \$\endgroup\$
    – user16222
    Nov 18, 2017 at 12:24
  • \$\begingroup\$ "i have tried using a 5 ohm resistor as a shunt (5*0.2 = 1Vpp) and tried to observe the output, the signal seems to be very noisy to begin with" - it shouldn't be noisy if you did it right. Is 200mA the maximum expected peak current? \$\endgroup\$ Nov 19, 2017 at 20:59

2 Answers 2


If you have the ability to sample your voltage and current signals then computing the power factor might be easier than trying to measure it directly. To do this, compute the RMS voltage and current for a cycle. The Apparent Power will be equal to the product of the RMS voltage and current. At the same time, compute the True Power consumed over the same cycle by summing the Instantaneous Power. Once you have the Apparent Power and the True Power, you have two sides of the Power Triangle. True Power is equal to Apparent Power times the cosine of the power factor. Solve for the power factor.


The ACS712 is obsolete for new design and replaced with the more accurate and linear ACS723 but it will NOT have the same linearity over a 50mA range IF rated for 5A for example.

If you want to detect True RMS power, can you design a shunt current sensor with an OTA (VxI) multiplier and convert output to current to drive a linear opto isolator for less $ than a CT sensor with software RMS calculations?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.