Voltage Sensing Circuit

I've decided to use a BMW i3 LIM to manage the CCS Fast DC Charging handshake. There are other solutions, but in comparison they are expensive, or require lots of software development, or the company doesn't reply to my requests for information.

The LIM is mostly self-contained: You hook it up to the signals it needs, the charge port, and it does the rest. You do need to give it information about voltage present on the charging side of the Fast DC Charging contactors, which isn't 100% straightforward for safety reasons. This post is about figuring out the right way to give the LIM the information it needs.

So, first to our task: Create an analog circuit which takes 0-500V and creates an isolated voltage between 1.42 and 4.8v with a linear response. There are a few different ways to accomplish this, but I chose to use a part from TI which keeps the part count to a minimum, the AMC3330.

The AMC3330 is a precision, isolated amplifier with a fully-integrated, isolated DC/DC converter that allows single-supply operation with an input optimized for directly connecting to high-impedance, voltage-signal sources like resistor-divider networks to sense high-voltage signals.

... perfect.

This is what we have to work with: Output vs Input AMC3330

If we read the datasheet, we learn that the AMC3330 is "happiest" (read: most linear, least distortion) between 0 and 0.725V of differential input. So we need to create a high-impedance voltage divider which turns 0-500v into something that the AMC3330 is happy to read. A bit of resistor math yields a divider with 560k and 1k1 ohm. I added an additional 200k ohm to ground for extra impedance so that the total impedance is ~750k ohm, which would result in a total of 0.44 mA current (aka, nothing).

Next, given we know the input to the AMC3330 will be 0v - 0.722v, let's figure out what the output will be. Figure 6-8, above, shows a summary: The outputs will both be 1.45V when Vin = 0v, and they will diverge to Voutp = 2.22v and Voutn = 0.77v (a differential voltage of 1.45v) at Vin = 0.722v. We need to turn this into a single-ended (referenced to 0v) signal for the LIM. To do this, we use a rail-to-rail op-amp, the TLV9001. We want to shift the signal up by 1.42V (so 0v -> 1.42V) and scale the output to max at 4.8V (so 1.45v -> 3.35V. I was never really good at analog, so I opened up the trusty Falstad Circuit Simulator to try some resistor values.

Falstad

After roughly recreating the AMC3330 input and output (left side), I set up a circuit with the TLV9001 on the right side. The simulator confirms that with 500Vin, Vout=4.807V and with 0Vin, Vout=1.415V. According to Wolfram Alpha, that's within 0.005v of correct across the entire range. You can play with the simulation yourself by clicking here.

Final Circuit

Here's the final circuit (the resistor values are those from the Falstad circuit, mapped onto 5% resistor values which is why there are a few in series in places).

More Battery Pack Musings

More Battery Pack Musings

What has 5,000 welds and 600 tiny fuses? One battery module. I drew up a schematic for the module to get an understanding of layout, and it looks like it will be the easiest to do 10 x 60 with a somewhat offset pattern, to accomodate the heat exchanger. (see above)

This has the downside that nickel strips simply don't carry enough current; using 8mm x 0.3mm nickel strips in this way, the pack would only be able to supply about 150A before overheating. Thankfully, there are some options here, I found a supplier that makes hybrid nickel (weldable) copper (high current) solutions, and they should be able to make something perfect.

combo of copper and nickel

Apart from that, I thought it might be good to have an aluminum frame for the module that the PETG panels are attached to. And I can use laser-cut PETG panels as cell holders, also.

70mm2 copper wire as collectors for the high voltage and bob's your uncle.

Battery Volume Exploration

Battery Volume Exploration

I spent some time last night bothering friends of mine while I was drafting a rough version of the chassis to understand how much volume will be available for the battery module (which is next to be designed). The body shop manual was very helpful, but not 100% complete, so some of the measurements were useful after all.

chassis mid-draft

Conservatively, it looks like between the part of the fuel tank which isn't occupied by the motor, the transmission tunnel, and the area formerly occupied by the long block, there's around 380L of space for the battery pack, which has to include the battery cells themselves as well as any structure, wiring, bus bars, cooling, etc.

roughed-out chassis with battery volume highlighted

Using the existing NINEBOT scooter batteries as a rough reference for weight and volume (for a combined pack with overheads, not the individual cells), it looks like each kWh is about 4.4L, and will weigh about 7.3kg.

As the current plan is to build a 53.5kWh battery pack, that would mean the expected volume utilization is only 240L. Having "so much" extra space available is really good, as I expect that to shrink due to additional packaging and cooling overhead, and it will let me ensure the center of mass and weight distribution changes a little as possible.

Speaking of weight, I ran through the list of things which are being removed vs the things which are being added:

  • renesis engine: 297pounds
  • transmission: 80 pounds
  • rear diff: 75 pounds
  • exhaust: 40 pounds
  • full gas tank: 100 pounds

sum old bits: 592 pounds, 270kg

  • battery pack - 53.5kWh * 7.3kg = 390kg
  • motor: 90kg
  • AC/DC, DC/DC, and PDU: 15kg

sum new bits: ~500kg

so it looks like the car will gain about 230kg, which according to this spec sheet is within the cargo capacity of 425kg.

Donor Batteries Collected

Donor Batteries Collected

I picked up the last of the batteries from the recyling bin today. In total, I have 77 Ninebot NEE1009-W packs, all with various levels of malfunctioning BMSes. They are being stored in a steel container in an industrial area away from any buildings in the case they decide to self-immolate.