Tesla Model 3 Charger/DCDC ("PCS")
Overview
The Tesla Model 3 has a "Power Conversion System" (also known as the "PCS") which contains both a 10kW AC charger and a ??W DCDC converter. The PCS is located inside the "Penthouse" part of the main traction battery system.
Learning/Resources
Video - The Tesla Project : Model 3 PCS First Look - https://youtu.be/_TYvSmDJSPQ
Video - Tesla Model 3 Power Conversion System - https://youtu.be/3ARHdRwfxjY
OpenInverter PCS overview/tech thread: https://openinverter.org/forum/viewtopic.php?f=10&t=171
OpenInverter PCS controller support thread: https://openinverter.org/forum/viewtopic.php?p=27744#p27744
Damien's GitHib: https://github.com/damienmaguire/Tesla-Model-3-Charger
Troubleshooting/Seeking help
If you encounter issues with the PCS, it's generally good practice to collect the following information and create a thread on the forums with a description as detailed as you can be about the problem
All of these instructions are also available in a youtube video demo by damien
- model year of the car it came out of
- any serial numbers on the penthouse or pcs itself, from stickers or identifying markings
- Located on the top, above the high voltage connection plug, should be a rectangular white sticker with two numbers that begin with "DEV-" and "SDEVR-"
- firmware version on the pcs
- In the web interface, this is listed in the "version" row under the "spot values" header, for example "1.16.R"
- edit, this may just be the firmware version of the PCS controller itself
- In the web interface, this is listed in the "version" row under the "spot values" header, for example "1.16.R"
- a dump of parameters from the controller
- In the web interface, under the parameters section, there's a link to "download parameters file"
- A list of all alerts generated in the alert log
- First, enable the alert log system, by selecting "on" next to the row labeled "AertLog" under the "general" subsection under Parameters
- View the first saved alert by putting 0 into the Alerts row box and hitting enter, then hitting refresh on the top right, then scrolling down to the "PCSAlerts" row within the "spot values" section. This shows the first alert. To see other alerts, repeat by entering 1, 2, 3 etc into the Alerts row box and hitting enter+refresh again
- to see the total number of alerts you can scroll down to "PCSAlertCnt" in the "spot values" section, note that only 10 alerts can be stored at a time.
Hardware
Controller
Damien from EVBMW has designed a control solution which is open source hardware and software. Design files for the controller hardware and software sources are available on Damien's GitHub here. Controllers are also available as a fully-built kit (with pre-loaded software) on the EVBWM webstore[1].
Data Connector on PCS (12-way)
EDITOR'S NOTE: my research shows some conflicting/different part numbers mentioned - would appreciate some clarification here once validated
As per: https://openinverter.org/forum/viewtopic.php?p=26614#p26614
The connector used for communications with the PCS: [2][3]
Pins: [4]
In true Muskian fashion it seems they use the 1379662-5 natural color variant of the plug which has no coding tabs. It is of course unavailable from mouser. The black and green variants are functionally identical and should work with coding tabs removed.
However, as per: https://github.com/muehlpower/EV-FFB, there is also mention of 1318774-1 (white) or 1318774-2 (black) for the comms/data connector.
Power Connectors
The power-side connector assemblies are not widely available. The housings are a Tesla internal part (photos/part numbers here), however, 3D printable housings have been made available here. The terminals also aren't widely available, but are known. As per https://github.com/muehlpower/EV-FFB:
Note: the US variant of the charger (1-phase) has a different AC pin layout; see photo for reference.
The contacts for 400V are Uni F630 from MTA, part number 1107940. For 12V Kostal PLK 14.5, part number 23124734300. The connector for the data is from TE connectivity, part number 1318774-1 for white or 1318774-2 for black.
Connections
The minimum wiring needed to wake the PCS:
- PCS controller connected to PCS via 12-way X420
- PCS controller is powered via 20-way +12V input pin and grounded to chassis via 20-way ground pin
- +12v and Chassis ground applied to PCS 12v Connector input terminal
- Chassis ground on the PCS case
Firmware
Current Version
The current version of the PCS firmware can be found here: https://github.com/damienmaguire/Tesla-Model-3-Charger/releases
The current firmware will auto detect what Tesla firmware is installed on the PCS and adjusts the CAN messages accordingly (different versions of the PCS firmware from Tesla have different CAN requirements, if you encounter strange performance from the PCS it could have a different firmware version than expected, see troubleshooting section). It will also auto detect if the PCS is EU or US spec and whether single or three phase AC is connected. It also includes an integrated alert logging function to help diagnose any issues the PCS sees.
Alerts Logging
The PCS has an array of potential alerts to help diagnose issues. The images below show a matrix of potential alerts
Initially alerts had to be identified through CAN logs (PCS IPC CAN). In later firmware releases, the PCS web interface incorporated a decoder to help identify alerts (decimal number identifier relating to the alert tables shown here). In the current version of firmware, the alerts are now displayed in word format to make it easier and quicker to troubleshoot.
Below is a list of all alert codes the PCS can generate, with associated error code number, and plain text descriptions of what each one means
Error code / name | Error description | |
---|---|---|
01 | chgHwInputOc | ??? |
02 | chgHwOutputOc | ??? |
03 | chgHwInputOv | ??? |
04 | chgHwIntBusOv | ??? |
05 | chgOutputOv | ??? |
06 | chgPrechargeFailedScr | ??? |
07 | chgPhaseTempHot | ??? |
08 | chgPhaseOverTemp | ??? |
09 | chgPfcCurrentRegulation | ??? |
10 | chgIntBusVRegulation | ??? |
11 | chgLlcCurrentRegulation | ??? |
12 | chgPfcIBandTracerFault | ??? |
13 | chgPrechargeFailedBoost | ??? |
14 | chgTempRationality | ??? |
15 | chg12vUv | ??? |
16 | chgAllPhasesFaulted | ??? |
17 | chgWallPowerRemoval | ??? |
18 | chgUnknownGridConfig | ??? |
19 | acChargePowerLimited | ??? |
20 | chgEnableLineMismatch | "Charge Enable Line Mismatch", Charger was commanded to start over CAN, but the enable line hasn't been correctly brought up |
21 | hvpMia | ??? |
22 | bmsMia | ??? |
23 | cpMia | ??? |
24 | vcfrontMia | ??? |
25 | cpu2Malfunction | ??? |
26 | watchdogAlarmed | ??? |
27 | chgInsufficientCooling | ??? |
28 | chgOutputUv | The charger was commanded to start, but the AC high voltage is less than what is required to actually charge |
29 | chgPowerRationality | ??? |
30 | canRationality | ??? |
31 | uiMia | ??? |
32 | unused | ??? |
33 | hvBusUv | ??? |
34 | hvBusOv | ??? |
35 | lvBusUv | ??? |
36 | lvBusOv | ??? |
37 | resonantTankOc | ??? |
38 | claFaulted | ??? |
39 | sdModuleClkFault | ??? |
40 | dcdcMaxPowerReached | ??? |
41 | dcdcOverTemp | ??? |
42 | dcdcEnableLineMismatch | ??? |
43 | hvBusPrechargeFailure | ??? |
44 | 12vSupportRegulation | ??? |
45 | hvBusLowImpedance | ??? |
46 | hvBusHighImpedence | ??? |
47 | lvBusLowImpedance | ??? |
48 | lvBusHighImpedance | ??? |
49 | dcdcTempRationality | ??? |
50 | dcdc12VsupportFaulted | ??? |
51 | chgIntBusUv | ??? |
52 | acVoltageNotPresent | ??? |
53 | chgInputVDropHigh | ??? |
54 | chgInputVDropTooHigh | ??? |
55 | chgLineImedanceHigh | ??? |
56 | chgLineImedanceTooHigh | ??? |
57 | chgInputOverFreq | ??? |
58 | chgInputUnderFreq | ??? |
59 | chgInputOvRms | ??? |
60 | chgInputOvPeak | ??? |
61 | chgVLineRationality | ??? |
62 | chgILineRationality | ??? |
63 | chgVOutRationality | ??? |
64 | chgIOutRationality | ??? |
65 | chgPllNotLocked | ??? |
66 | dcdcHvRationality | The PCS is attempting to start up the DCDC converter, but there isn't any high voltage provided / Are the high voltage lines hooked up to the PCS correctly? |
67 | dcdcLvRationality | ??? |
68 | dcdcTankvRationality | ??? |
69 | chgPfcLineDidt | ??? |
70 | chgPfcLineDvdt | ??? |
71 | chgPfcILoopRationality | ??? |
72 | cpu2ClaStopped | ??? |
73 | unexpectedAcInputVoltage | ??? |
74 | hvBusDischargeFailure | ??? |
75 | hvBusDischargeTimeout | ??? |
76 | dcdcEnDeassertedErr | "DCDC enable, de-asserted error", Artifact in the software caused by few milisecond delay between DCDC being commanded to shut down over CAN and the hardware line being disabled |
77 | microGridEnergyLow | ??? |
78 | chgStopDcdcTooHot | ??? |
79 | eepromOperationError | ??? |
80 | damagedPhaseDetected | ??? |
81 | dcdcPchgTimeout | ??? |
82 | dcdcPchgUnsafeDiVoltage | ??? |
83 | triggerOdin | ??? |
84 | unused | ??? |
85 | dcdcFetsNotSwitching | ??? |
86 | dcdcInsufficientCooling | ??? |
87 | nvramRecordStatusError | ??? |
88 | pchgParameters | ??? |
89 | hvBusDischargeIrrational | ??? |
90 | expectedAcVoltageSourceMissing | ??? |
91 | chgIntBusRationality | ??? |
92 | chgPowerLimitedByBusRipple | ??? |
93 | powerRailRationality | ??? |
94 | pcsDcdcNeedService | ??? |
95 | dcdcSensorlessModeActive | ??? |
96 | microGridOverLoaded | ??? |
97 | rebootPhaseDetected | ??? |
98 | gridFreqDroopDetectedSilent | ??? |
99 | microGridOverLoadedSilent | ??? |
100 | microGridEnergyLowSilent | ??? |
101 | phMachineModelIrrational | ??? |
102 | resetWithDCDCCmdAsserted | ??? |
Testing
First Power Up
Set up to initially test connections between a PCS and the PCS controller are straightforward. This can be done without any HV DC battery or charging connected to the PCS. Once the PCS controller is connected to the PCS (follow the relevant V2 or V3 pin-outs) the basic steps are:
- Connect the PCS aluminium case to LV ground
- Connect PCS controller ground wire to 12V ground
- Connect PCS 12V power wire via a 5A fuse to +12V
- Observe the PCS controller continuous 3.3V indicator red LED and the flashing activity red LED
- Connect to the PCS controller wifi (SSID will be, for example , ESP-DC87FA) to view the web interface (v3 has a default IP address of 192.168.4.1). The interface will indicate that the PCS 'opmode' is 'Off' at this time
- On the web interface, change 'inputype' to 'Manual' in the drop down menu and select refresh at the top of the screen
- On the web interface, change 'activate' to 'Both'. This will tell the PCS to try start DC-DC and Charging if enabled (as above, these are not connected at this time so will generate alerts that will be mentioned further below)
- On the web interface, change 'AlertLog' to 'On'. This will tell the PCS to show any alerts
- To enable the PCS connect the PCS controller 'Input 1 (enable)' wire to +12V and select refresh at the top of the screen. 'Opmode' should now change to 'Run' on the web interface to show the PCS is now operational
- At this point, 'PCSAlertCnt' will likely show a number indicating the number of alerts the PCS has flagged and 'PCSAlerts' will show the first alert
- To see each alert separately, under General, change the number in the 'Alert' option (0 indicates first alert and should be default) to the next sequential number and select refresh at the top of the screen. 'PCSAlerts' will now show a description of the selected alert. Do this to step through each alert (total number indicated by 'PCSAlertCnt')
- Typical alerts with this configuration (no HV DC battery or charger interface connected) will be: 63chgVOutRationality, 66dcdcHVRationality
- Now the connections and communication with the PCS and controller are established, further testing can be carried out to check DC-DC and charging functionality. See below
DC-DC First Test
TBC
AC Charging Test
TBC
Limitations/quirks
- The PCS reacts poorly to small capacity 12v batteries, specifically its DC voltage regulation can behave erratically. Testing with a 60AH battery showed minimal fluctuation. Testing with four 18650 cells as the 12V battery showed violent fluctuation of over 1V. It is recommended to use a reasonably large capacity battery (likely 30-40AH or larger)
- The PCS CANNOT be commanded to charge over canbus to the controller. It must be told to charge by setting input pin 1 to 12v high (or pin 2 for dcdc charging). This makes it incompatible with certain combinations of controllers and BMS' such as the AEM vcu200 and the aem bms-18
- The minimum recommended HV DC battery voltage for testing is 250V (This needs to be confirmed)
Confirmed Working Models
to date a number of PCS units have been tested and confirmed to work with the current firmware:
- 1x 3p EU PCS from circa 2020 model year car
- 1x 1p US PCS from circa 2018 model year car. Running in BMW E46 touring conversion
- 1x 1p US PCS from circa 2020 model year car
References
- ↑ https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-model-3-pcs-con (Backup: Web Archive)
- ↑ https://www.te.com/global-en/product-1379662-5.html (Backup: Web Archive)
- ↑ https://www.mouser.ie/ProductDetail/TE-Connectivity-AMP/1379662-1?qs=yDt3hdeEHFPzMcXLhRNNtw%3D%3D (Backup: Web Archive)
- ↑ https://www.mouser.ie/ProductDetail/TE-Connectivity/1801069-2?qs=sGAEpiMZZMvlX3nhDDO4AIlVXMSSZRpGH8WODUA4Ad4%3D (Backup: Web Archive)