p0ly.com

📂 projects/tpl_interface/

TPL Interface

A while ago, I got a crazy steal on eBay for a brick of lithium. It was a Porsche Taycan battery module for use in its electric vehicle. I bought it for $130, and the battery is 24V and contains 2.7 kWh of stored energy when fully charged. Not only that, but allegedly the battery can dump 600 amps for short durations without much problem. I have a colleague with a DC active load that I could use to load test the battery someday.

Anyways, I bought it for my senior design project go-kart, but in the meantime I've been trying to break into the onboard BMS which is reachable through the set of four pins on the rear of the module. I anticipated this pinout to resemble something like SPI or CAN, but I was quickly humbled when I was checking the pins with a multimeter to see two short circuits between two pairs of pins.

After looking online, people have torn this module open to find an NXP MC33771B battery controller inside. The gimmick with this, is that the protocol I would have to provide is detailed in NXP's datasheet as TPL, or transformer physical layer, which uses pulsed sinusoids to transmit SPI over the bus. The low-impedance pins I found weren't bugs, but instead features, because they are the windings of an internal isolation transformer located within the device.

So, I decided to turn this into a full project trying to get the battery to reveal its internal configuration, and I created a PCB to host the robust circuitry required to have a human interface with this battery.

The routed PCB and schematic are attached below, since they appear large and mess with the continuity of the article. The circuit involves a Raspberry Pi Pico picked for its independent SPI buses. This is important because of the independent transmit and receive channels on the MC33664 platform. The MC33664 is responsible for generating the sinusoidal pulse train used in TPL communication. There is also an HM2103NL isolation transformer, as it is present in the example usage of the MC33664. The charging circuitry has screw terminals for the power into the battery, a fuse, solid-state relays for intteruping charging, a buzzer for indicating faults, a voltage regulator to allow this device to be mounted in-line with the charging voltage, and a reverse-voltage protection circuit. There is a user interface using an SSD1306 screen with a few buttons for user input, so the user can send balance commands, query information about the battery, etc. Additionally there is a lot of pullup/pulldown resistors and filter caps for good measure.

Yes, I drew the anime girl on the silkscreen. I will continue to do this for every personal project PCB I make.

Here is a link to the GitHub which has all of thr project files.

The PCB Layout The Schematic