I'm trying to measure the current through some brushed DC motors ( midwest motion S22-346F-24V GP52-079 ) using a small custom USB current sensor based around the INA226 and FT-232H.

The device works reliably during testing with a bench supply and it works reading motor current while low side sensing, but when the motors switch direction the device becomes a high-side sensor and the resulting 24 V PWM into IN+ and IN- creates 20 V noise spikes on the USB5V line, so the USB devices reset/shutdown.

I've measured the PWM signal amplitude (24 V), frequency (~15 kHz), rise (94 ns) and fall (150 ns) times and I don't understand why noise spikes are being coupled into the DC bus. From what I understand this kind of coupling should occur if:

  1. the traces/wires are carrying high current
  2. trace length is long enough to act as an antenna

Case #1 shouldn't happen because the INA226 is a high impedance voltage sensor, case #2 shouldn't happen because the sense resistor wire is only ~15cm, and the trace length on the pcb is only another few cm, which is much to short for the 15 kHz PWM, or even MHz range noise from the 94-150 ns rise and fall times.

I'm looking for advice on:

  1. Any incorrect assumptions or mistakes in analysis
  2. How the noise is coupling into the DC power bus.
  3. Filters I can use to reduce the voltage spikes ( I've been considering a differential ferrite choke from Rs, or implementing something like this TI app note )

Attached are the schematics and block diagrams. I also created an imgur album with some 'scope readings

System power diagram USB current sensor schematic USB current sensor PCB


3 Answers 3


I believe INA226 is not suitable for this kind of application. See 6.1 in datasheet: "IN+ and IN– may have a differential voltage between –40 V and 40 V. However, the voltage at these pins must not exceed the range –0.3 V to 40 V."

You have IN- connected to VBUS (also with –0.3 V to 40 V allowed range), which means you can have full negative voltage on VBUS.

I suggest replacing it with hall-effect sensor like TLI4970-D025T5 (rated to 18kHz)


The motor inductance can produce high voltage spikes in both directions, far over the maximum rated voltage. The ESD protection in the chip will try to bleed these to power lines, causing voltage spikes there. See 7.4.2 in datasheet.

Introducing filters and zener TVS as datasheet suggests might help you, but using hall-effect sensor will completely isolate power line voltages from your circuit, which will coincidentally expand the range of suitable applications.

  • \$\begingroup\$ The voltage changes polarity with respect to the motor, but not the entire system. See this diagram: i.imgur.com/o2QxN42.png I'm fine with changing out the sensor, but since the main problem is noise on the USB line interrupting the USB devices, I'd first need to guarantee that changing the INA226 for the TLI4970 would resolve this issue. \$\endgroup\$
    – ty.b
    Commented Jun 27, 2018 at 16:55
  • \$\begingroup\$ Well, to properly represent how INA226 actually sees the voltages the short wire from Rs to motor should be colored red in the first picture and black in the second. The VBUS input is obviously not designed to be connected like that, so why don't you disconnect it and see what happens. But that beside the point. See my update on what could actually happen in your circuit. \$\endgroup\$
    – Maple
    Commented Jun 27, 2018 at 19:42
  • \$\begingroup\$ If the INA226 were bleeding voltage spikes into it's Vcc, then the 3V3 voltage line would be seeing the transient spikes. When I attached the scope probes to TP4 (3V3) and TP3(GND) I saw very little noise. The 3V3 Vcc line is linearly regulated by the FT232H. The reason I posted this question is because It's the 5V Vcc/USB Power line on the other side of the FT232H from the INA226 that sees the noise. I find it puzzling that the 5V Vcc has noise while 3V3 does not. \$\endgroup\$
    – ty.b
    Commented Jun 27, 2018 at 19:51
  • \$\begingroup\$ I double checked with the oscilloscope just now, and there is quite a lot of noise on the 3V3 line as well, so if it's necessary to rebuild the sensor we could switch to a hall effect. The current plan is try to implement a filter as per TIDU473 and compare those results with Brian's suggestion of just measuring the motor controller current. \$\endgroup\$
    – ty.b
    Commented Jun 28, 2018 at 15:25
  • \$\begingroup\$ I would try adding a power resistor to the VUSB and load it to near it's maximum. Not a long term solution, but if you really are dumping too much inductive energy into the supply lines then it might solve the problem, at least it might tell you something. Another thing you could try is to add a filter between the current shunt and the sensor. Like an RC low pass, or maybe just some resistors to limit the current through the TVS diodes. \$\endgroup\$
    – Drew
    Commented Jul 6, 2018 at 16:06

"the device becomes a high side sensor" then the sensor is in the wrong place.

On the power supply side of the bridge it will sense motor current equally well, and remain a low side sensor regardless of direction.

  • \$\begingroup\$ The motor controller is more complicated than just a bridge, so it has it's own overhead power consumption while the motor is both active and idle. This could be a workable solution though, so I'll give it a try. \$\endgroup\$
    – ty.b
    Commented Jun 27, 2018 at 19:06
  • 1
    \$\begingroup\$ It would be normal to put the sensor between the bridge and the rest of the controller; but if you can't for some reason, you may find the measurement error is (a) small and (b) easily accounted. \$\endgroup\$
    – user16324
    Commented Jun 27, 2018 at 22:29

If anyone reads this before they start manufacturing a current sensor for an electric motor, definitely go with Maple's answer of using a hall effect sensor.

However, I found that by creating a filter inspired by "Nophead's inteference suppressor" from this question, the noise spikes on the DC bus lines are reduced enough that the INA226 was usable. The filter uses 2 100uH B82144F2104J000 inductors and an 1uF RDER72A105K2M1H03A capacitor.

The noise spikes were reduced from 20 Vpp lasting ~2 uS to 2 Vpp lasting ~0.3 uS on the 5 V Vcc, and spikes of ~7 Vpp lasting ~20uS to 6Vpp lasting ~0.3 uS on the 3.3 V Vcc. This is not ideal, but is still functional.

enter image description here

enter image description here


Your Answer

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

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