Honda Insight Forum banner

1 - 2 of 2 Posts

Linsight Designer
1,799 Posts
Discussion Starter #1
Howdy crew, if anyone finds it useful, here's a circuit I just dreamed up that modifies the OEM battery current sensor to output unipolar values. I haven't tested it yet, but it should work as intended. Note that this wouldn't be useful with the OEM BCM... but for those of us that are replacing IMA computers, it sure is nice to not have to recreate the -12 volt rail and also to not have to use an ADC that can measure negative voltages.


Notes on the OEM current sensor:
-it's bipolar (i.e. it outputs negative and positive values).
-it outputs 25 uA per ampere flowing through it. Thus, the following is true:
---when 0 A is flowing through the battery, it outputs 0 uA.
---when 100 A is flowing through the battery, it outputs 2.5 mA.
---when -100 A is flowing through the battery, it outputs -2.5 mA.
-In the OEM configuration, the output signal is referenced to ground. This is achieved by connecting the output signal wire to a resistor that is then connected to ground.

To make the OEM current sensor output entirely positive values, we need to instead reference the output lead to a reference voltage between the ADC's VCC and GND. This is achieved by using a zener diode (U2) that can handle the worst case current the OEM current sensor can outpute (i.e. 5 mA @ 100 A, or 10 mA @ 200 A). So we're now sinking to the voltage reference itself, which means 0 A flowing from the battery will output exactly half whatever the voltage reference is. The circuit above is setup to handle battery currents from -200 A to 200 A. If you want to lower the current range, just increase R1. If you do that, you can also increase R2 (to reduce current wasted as heat through the zener diode), but note R2 must always be less than R1 (to ensure the zener diode is always reverse biased and sinking current). It's very important that current always flows through the zener diode! You'll want to use a zener that can handle 15 mA (e.g. the LT1004-2.5 in SOIC-8).

Note that the voltage across a zener diode varies slightly based on the current sunk through it. However, in this case the zener reference voltage will only change 0.08% across the entire battery current sensor range (-200 A to 200A), which effectively means there's no change at all... particularly due to the much greater change caused over temperature changes. If for some reason you don't want the zener reference to change at all, you could buffer it with an opamp (but that would be overkill).

You'll connect the current sensor's positive lead to 12 V, and the negative lead to ground. I recommend creating a local ground on the PCB for all these grounds (see R7). Since the microcontroller's ADC also uses the zener reference voltage, I recommend connecting the two ground pins close to the analog ground pins on that IC (or, if there aren't dedicated analog ground reference pins, then to any ground pin at the chip. Note that the correct schematic symbol to use to create a dedicated ground net is called an ILTC... it's basically a solid bit of copper that has two different nets... that way when you flood the board ground, it won't flood into the analog ground shown in the schematic.

Here's a representative output showing how well the opamp's output voltage matches the current sensor's current output (converted to a voltage across R1). Note that the phase shift is due to lowpass filter... these waveforms are basically identical, which just a slight phase shift:

Here's the frequency response, which shows that we have ~50 degrees phase margin, and ~10 dB gain margin. C4 creates a primary LPF with a ~30 kHz cutoff frequency, and R6/R4/R3/R5 create a buffered LPF with ~3 kHz cutoff frequency. If that's too low, you can use smaller R6/R4/R3/R5 values (all four values should remain identical). Here's the output frequency response (note: divided by 250 due to transimpedance amplifier's 250x gain):

Note the opamp MUST support rail-to-rail operation if you want to be able to measure full scale current values... otherwise, the opamp output will trail off near the maximum battery current values (particularly when approaching 0V). The LTC2050HV is an excellent opamp for this application because it supports rail-to-rail and has very low input offset voltage.

Note that I haven't tested this circuit, but I did model it a whole bunch and it seems generally well behaved. I will eventually prototype the actual circuit, and I suspect it will behave exactly as modeled.

10,949 Posts
Very cool John. Thanks.
We will def be looking at this for the next BCM Replacer pcb A board revision shortly.

Can you throw your eyes over the voltage tap module schematic?
We currently work with +22V (0) -22V approx capability for each module.
Each module reads two adjacent taps. We use a 2.5v reference for the adc

We would like to increase and match the input impedance of the inputs to reduce noise and parasitic drain. + anything else you suggest..

We would also like to increase the voltage capability to +30v 0 -30V as we have an idea about monitoring LTO blocks in complete groups of 12 cells. (This will depend if the LTO BMS is balancing blocks with no outside intervention.)

From our very interesting discussions we realise our tap voltage detection is not the best! It works but the resolution and noise rejection could def be improved.

The schematic pdf is attached.

Operationally the tap pic is constantly 64 x oversampling the 2 x tap voltages and keeping an average which it sends out over the isolated bus when requested by the main processor. It also measures it's own power supply voltage and sends that when requested.

There are some nice routines I can use to improve resolution once we have stable readings..

Thanks for your interest & input..


1 - 2 of 2 Posts