I’m making a BLDC motor controller application. The motor control IC (Allegro A4931) uses low side current sensing (R7,R8,R9) for controlling the motor. Unfortunately the motor IC does not output a amplified version of the SENSE voltage. I would like my MCU to measure the current with the use of the same resistor. Is there anyone that can help me pick out the right components to do so? I would like the MCU ADC to measure 0V at 0A and Vcc (3.3V) at 5A through the resistors. There is no need for a super accuracy (+-0.25A is ok).


enter image description here

  • \$\begingroup\$ Please embed the schematic that contains R7-9 and also state what ADC is being used in terms of resolution and full-scale. \$\endgroup\$
    – Andy aka
    Jun 27, 2018 at 14:08
  • \$\begingroup\$ Simply add your own sense amplifiers across the same resistors. \$\endgroup\$
    – user16324
    Jun 27, 2018 at 14:55
  • \$\begingroup\$ As far as I can tell from recommended schematics in datasheet A4931 uses single resistor for current sense. You can try adding your own op-amp and low-pass to that resistor. Something like in LTC6081 datasheet, for example. But you have to do your own research for the best suitable op-amp. \$\endgroup\$
    – Maple
    Jun 27, 2018 at 16:35
  • \$\begingroup\$ perhaps your R7-9 connection is not right,topside of R7 8 9 should be connected separately to Q2 4 6. Or perhaps you can use only one resistor for current sensing. \$\endgroup\$
    – lukeluck
    Jun 28, 2018 at 8:31
  • \$\begingroup\$ You can think of R7-R9 as a single resistor at 33mOhm. It was cheaper to use 3 smaller R than one big. \$\endgroup\$ Jun 28, 2018 at 8:58

1 Answer 1


Just need a basic non-invetering opamp cct to amplify the voltage between top of R7-9 and GND. This is an very basic circuit that you can find all over the interwebs. Tweak R1/R2 to change the gain.

I set it so 5A gives you just under 3.3V as you requested, but you actually probably want some more margin in case it goes over. You probably also want some filtering the signal as BLDC circuits generate a lot of noise, which will throw off your measurements.

Hit simulate, DC sweep. Sweep I1 from 0 to the max current, and readback VOUT.


simulate this circuit – Schematic created using CircuitLab

EDIT: Added C1 for low pass filtering. You really ought to put the footprint in at the very least. Its going to be really noisy, and you will want to get rid HF stuff.

  • \$\begingroup\$ Thanks! I will go for this design. What is the point of R5? \$\endgroup\$ Jun 29, 2018 at 7:54
  • \$\begingroup\$ @a.bjorkmann When running simulations, sometimes it will fail if you don't have a return path for your output you want to measure. You don't need it in your circuit, although having a resistor (0R) is useful for debug in case you need to disconnect it. \$\endgroup\$
    – Oliver
    Jun 29, 2018 at 9:56
  • \$\begingroup\$ ^ 0R in series between output and MCU, not to GND. \$\endgroup\$
    – Oliver
    Jun 29, 2018 at 10:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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