Tesla Model S/X GEN2 Charger: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
(Added charger connection)
 
(52 intermediate revisions by 9 users not shown)
Line 1: Line 1:
The Tesla GEN2 is a single/three phase 10kW AC charger that was fitted in the Model S from 2012 until it was replaced in the 2016 'facelift' model with GEN3.
==Overview==
[[File:Gen2.jpg|thumb|tesla gen2 ac charger]]
[[File:Tesla gen2 xray.png|thumb|Tesla Gen2 X-Ray]]


One or two GEN2 chargers are installed beneath the rear seats.
The Tesla GEN2 on-board charger (OBC) is a single/three phase 10kW AC charger that was fitted in the Model S from approx. Oct2013<ref>https://teslamotorsclub.com/tmc/posts/6560948/</ref> until it was replaced in the 2016 'facelift' model with GEN3.  It was the first Tesla OBC capable of fully utilizing external 3-phase AC; [[Tesla Model S GEN1 Charger|previous Tesla OBCs]] lacked the external wiring for three phases.


One or two GEN2 chargers are installed beneath the rear seats in the Model S for AC charging.
The charger is made up of three 3.3 kw modules, each sitting on a liquid cooling plate. This assembly enables both single and multi phase AC charging.
==Important Considerations==
===Output Voltage Range===
{| class="wikitable" style="background-color:#ffffcc;" cellpadding="10"
|'''HEED DAMIEN'S WARNING:'''<ref>https://openinverter.org/forum/viewtopic.php?p=9994#p9994</ref>
"[https://openinverter.org/forum/viewtopic.php?f=10&t=78&p=9994#p9994 Running a Tesla charger at much under 200v dc will cause it to explode. Yes I know the label says 50 to 450v but it lies. Yes I blew one up discovering this.]"
"[https://openinverter.org/forum/viewtopic.php?f=10&t=78&p=9994#p9994 Running a Tesla charger at much under 200v dc will cause it to explode. Yes I know the label says 50 to 450v but it lies. Yes I blew one up discovering this.]"
|}
===Supported Tesla Part Numbers (TPN)===
It has been found that early revision units will not work with the OI control boards.<ref>https://openinverter.org/forum/viewtopic.php?t=932</ref>
TPNs to avoid:
*1014963-05-B and 1014963-05-C
TPNs tested and known good:
*1014963-00-E/F/J/K/L
**1014963-00-G is likely also good, just wasn't mentioned by name in the referenced thread
=== Supported Software Revisions ===
At this time, it is not known why but it appears that some firmware revisions of this charger will have problems with maintaining a steady charge. Symptoms of this can be either surging (current goes up, drops to near zero, then surges back) or modules coming online singly followed by all modules going offline, repeat forever. In either case, charge power will be limited. We do not yet know what, exactly, is causing this. However, it is confirmed that swapping charger units but keeping the OI control board can produce working results.
===Cooling===
The direction of flow in the cooling plate does not seem to matter.<ref>https://openinverter.org/forum/viewtopic.php?p=2030#p2030</ref> The charger should likely be on the same cooling loop as the batteries themselves. This coolant loop should be separate from the loop with the motor and inverter (they get far too hot.) Limited testing (esp 110V, 1kw) can be done without the coolant lines hooked up. However, it would be unwise to attempt 10kw charging for any length of time without liquid cooling.


== Replacement control boards ==
==Replacement Control Boards==
replacement control board https://github.com/damienmaguire/Tesla-Charger
Replacement control board https://github.com/damienmaguire/Tesla-Charger


v5 kit: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-kit
v5 kit: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-kit
Line 12: Line 42:
v5 partially built board: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-partially-built
v5 partially built board: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-partially-built


== Programing ==
github: https://github.com/damienmaguire/Tesla-Charger
you'll need a st-link v2 smt32 programmer. Unofficial ones are cheaply available from amazon and ebay.
 
=== Charger Connections ===
[[File:Tesla Charger Logic connections.jpg|none|thumb|607x607px|
{| class="wikitable"
!A1
!A2
!A3
!A4
!A5
!
!B1
!B2
!B3
!B4
! B5
!B6
|-
|OUT2 - AC present
|
|D1 - enable
|
|
|
|12V supply
|
|
|CANH
|Control Pilot
|
|-
!A6
!A7
! A8
!A9
!A10
!
!B7
!B8
!B9
!B10
!B11
!B12
|-
|OUT1 - HV enable
|
|
|
|D2 - 3p
|
| GND
|
|
|CANL
|Proximity
|
|}
The outputs will not output 12v, they are low side switches. If you require a 12v ac present signal then use a relay with its coil switched from the relevant pin. [https://raw.githubusercontent.com/damienmaguire/Tesla-Charger/master/V5/Charger_Gen2_V5aB3%20-%20Schematic.pdf wiring diagram][[File:AC DC Connections.jpg|left|thumb|600x600px]]]]
 
====Connector part numbers====
AC and DC power connections (Molex Sabre series):
 
*housing: 044441-2006
*pins: 043375-3001 (18-20AWG), 043375-0001 (14-16AWG)
 
Logic connectors (Molex MX150L series):
 
*housing: 10-way 19418-0014, 12-way 19418-0026
*pins: 33012-2002 (18-20AWG), 33012-2001 (14-16AWG)
 
=== Replacement board connectors ===
If you can desolder 24 pin SMD connector off of the OEM control board otherwise to order 24 pin connector from Mouser P/N is:
 
* SM24B-CPTK-1A-TB(L)


st-link programming utility: https://www.st.com/en/development-tools/stsw-link004.html
The 30 pin connector is very difficult to desolder and resolder. Replacement P/N is:


stm32_loader.hex  https://openinverter.org/forum/viewtopic.php?f=7&t=1119
* IPS1-115-01-S-D-PL, SAMTEC - IPS1-115-01-S-D-PL - SOCKET, 2.54MM, 2X15WAY


==== Two options: ====
===Programming===
# Charger_gen2_v5.hex https://github.com/damienmaguire/Tesla-Charger/tree/master/V5/Software/Binary
You'll need a ST-LINK/V2 smt32 programmer.  Unofficial ones are cheaply available from amazon and ebay.
# Or commercial software: Link to be added stm32_charger.hex
 
*ST-LINK programming utility: https://www.st.com/en/development-tools/stsw-link004.html
* stm32_loader.hex  https://openinverter.org/forum/viewtopic.php?f=7&t=1119
'''Two options:'''
#Charger_gen2_v5.hex https://github.com/damienmaguire/Tesla-Charger/tree/master/V5/Software/Binary
#openinverter style firmware https://openinverter.org/forum/viewtopic.php?t=1323 (only available via patreon for next few weeks)


Click "Target --> Connect" from top menu. You want to see the screen get filled with a data dump of symbols. In the upper right of the screen you can see it identified the device.  
Click "Target --> Connect" from top menu. You want to see the screen get filled with a data dump of symbols. In the upper right of the screen you can see it identified the device.  
Line 27: Line 134:
In the main viewing window are multiple tabs, click the "Binary File" tab to select it.  
In the main viewing window are multiple tabs, click the "Binary File" tab to select it.  


This will ask to open a file, you choose: "stm32_loader.hex" from OpenInverter.org, download ahead of time. This will change what shows up in the viewing window.   
This will ask to open a file, you choose: "stm32_loader.hex" from openinverter.org, download ahead of time. This will change what shows up in the viewing window.   


Click "Target --> Program and Verify" from the top menu. This pops up a window, and you can probably just click "Start" on that window. This programs the STM32 chip with the stm32_loader.hex file.   
Click "Target --> Program and Verify" from the top menu. This pops up a window, and you can probably just click "Start" on that window. This programs the STM32 chip with the stm32_loader.hex file.   
Line 43: Line 150:
You are now done with the ST-Link USB dongle, it's no longer needed.  
You are now done with the ST-Link USB dongle, it's no longer needed.  


Future updates can be done via wifi. (must have esp8266 wifi module programed https://openinverter.org/forum/viewtopic.php?f=5&t=8 )
Future updates can be done via WiFi. (must have esp8266 WiFi module programed https://openinverter.org/forum/viewtopic.php?f=5&t=8 )


== External CAN bus ==
=== External CAN bus===
[[File:Gen2 Charger V5aB2 logic board.jpg|thumb|Gen2 Charger V5aB2 logic board with CAN wired to external pins]]
[[File:Gen2 Charger V5aB2 logic board.jpg|thumb|Gen2 Charger V5aB2 logic board with CAN wired to external pins]]
The V5 version of the board has no connection to the external CAN bus but you can add it with to bodge wires as shown in the picture. You will find CANH and CANL on the 3 pin header underneath the wifi module. Route them over to CONN6 as shown. CONN2.1 (CANH) is connected to CONN6.24, CONN2.2 (CANL) to CONN6.26.
The V5aB2 version of the board has no connection to the external CAN bus (V5aB3 has) but you can add it with two bodge wires as shown in the picture. You will find CANH and CANL on the 3 pin header underneath the WiFi module. Route them over to CONN6 as shown. CONN2.1 (CANH) is connected to CONN6.24, CONN2.2 (CANL) to CONN6.26.


The upcoming revision will not need this modification.
Revision V5aB3 does not need this modification. On Revision V5aB3 you '''MUST''' close the solder jumper unless your charger is on an already terminated bus (that is, if the bus already has 2 termination resistors, one on each end, and measures 60 ohms with all devices powered off). If you do not use the external CAN, terminate the bus. If you have only two devices on the bus, terminate the bus. If you aren't sure, double check. '''Bus termination is important.'''


If the charger is the first/last device on your CAN bus there is nothing else to do. If it is somewhere in the middle you have to remove the bus termination resistor R1.


Before doing this be aware that all internal CAN traffic is also seen on the external CAN bus. The following IDs are already used and mustn't used by any other device on the bus:
If you attach to the external CAN bus, be aware that all internal CAN traffic is also seen on the external CAN bus. The following IDs are already used and mustn't used by any other device on the bus:


207, 209, 217, 219, 227, 229, 237, 239, 247, 249, 327, 329, 347, 349, 357, 359, 367, 368, 369, 377, 379, 537, 539, 717, 719, 20B, 21B, 22B, 23B, 24B, 32B, 34B, 35B, 36B, 37B, 42C, 43C, 44C, 45C, 53B, 71B.  
207, 209, 20b, 217, 219, 21b, 227, 229, 22b, 237, 239, 23b, 247, 249, 24b, 327, 329, 32b, 347, 349, 34b, 357, 359, 35b, 367, 368, 369, 36b, 377, 379, 37b, 537, 539, 53b, 717, 719, 71b.  


==== Functionality of external CAN bus ====
====Functionality of external CAN bus====
With the CAN bus now available externally you can remote control your charger via CAN and also receive some values from it. The mapping is similar to the CHAdeMO CAN protocol. The feature is only available in the commercial firmware.
With the CAN bus now available externally you can remote control your charger via CAN and also receive some values from it. The mapping is similar to the CHAdeMO CAN protocol. The feature is only available in the commercial firmware.
{| class="wikitable"
{| class="wikitable"
|+Charger CAN protocol
|+Charger CAN protocol - up to version 1.06.R
!ID
!ID
!Direction
!Direction
!Byte 0
!Byte 0
!Byte 1
! Byte 1
!Byte 2
!Byte 2
!Byte 3
!Byte 3
!Byte 4
!Byte 4
!Byte 5
! Byte 5
!Byte 6
! Byte 6
!Byte 7
!Byte 7
|-
|-
Line 77: Line 183:
|DC voltage limit MSB
|DC voltage limit MSB
|DC voltage limit LSB
|DC voltage limit LSB
|DC current set point
| DC current set point
|==1 enable charging
|==1 enable charging
|SoC
|SoC
Line 87: Line 193:
|Version=0
|Version=0
|Max DC voltage MSB
|Max DC voltage MSB
|Max DC voltage LSB
| Max DC voltage LSB
|Max DC current
|Max DC current
|
|
Line 100: Line 206:
|DC voltage LSB
|DC voltage LSB
|DC current
|DC current
|0 when off, 5 when charging
|''0 when off, 5 when charging''
 
|
|
|
|
|
|
|}
|}
Example: transmit "0x102 # 0 0x1 0x86 0x14 0x1 50 0 0" to enable charging up to a voltage of 390V and a DC current of 20A, report SoC of 50%.[[File:Parameter view of commercial firmware.png|thumb|Parameter view of commercial firmware]]
Example: transmit "0x102 # 0 0x1 0x86 0x14 0x1 50 0 0" to enable charging up to a voltage of 390V and a DC current of 20A, report SoC of 50%
 
== Commercial charger firmware ==
In addition to the open source firmware there is also a commercial firmware. It adds advanced features:
* Support for the standard open inverter web interface
* Parameter handling as known from the inverter firmware (see picture)
* Spot value handling like inverter including plotting, gauges, and logging
* Over the air update like inverter
* DC current control
* CAN control as described above
The firmware requires the board to be flashed with [https://github.com/jsphuebner/tumanako-inverter-fw-bootloader/releases stm32_loader.hex]. An Olimex MOD-ESP8266 must be programmed with the [https://github.com/jsphuebner/esp8266-web-interface openinverter web interface]. See [https://openinverter.org/forum/viewtopic.php?f=5&t=8 here] how to flash it to the module. With that done, future updates will happen via the web interface.
 
=== Registration ===
If bought a fully assembled V6 (?) board from the EVBMW webshop you can skip this step.
 
The firmware will work without registration but charging time is limited to 5 minutes. To overcome this, a board-specific pin must be bought. In order to do this the firmware and web interface must be installed and working.
 
Go to the [https://openinverter.org/shop openinverter webshop] and check out as many pins as you need. When checking out add the serial number(s) of your board(s) in the order comment. You will find the serial number on the bottom of the page as last spot value.
 
You will then receive an email containing one pin for each board. Enter the pin in the web interface in the "pin" parameter. When the pin is correct it will be automatically saved to flash and your board is ready to be used.
 
== Commercial firmware usage manual ==


=== Charger connection ===
[[File:Tesla Charger Logic connections.jpg|none|thumb|1000x1000px|
{| class="wikitable"
{| class="wikitable"
!A1
|+Charger CAN protocol - after version 1.06.R
!A2
!ID
!A3
!Direction
!A4
!Byte 0
!A5
!Byte 1
!
!Byte 2
!B1
!Byte 3
!B2
!Byte 4
!B3
!Byte 5
!B4
!Byte 6
!B5
!Byte 7
!B6
|-
|-
|OUT2 - AC present
| 0x102
|Receive by charger
|
|
|D1 - enable
|DC voltage limit MSB
|DC voltage limit LSB
|DC current set point
|
|
|==1 enable charging
|SoC
|
|
|-
|0x108
|Transmit by charger
|Version=0
|Max DC voltage MSB
| Max DC voltage LSB
|Max DC current
|
|
|12V supply
|
|
|
|
|CANH
|Control Pilot
|
|
|-
|-
!A6
|0x109
!A7
| Transmit by charger
!A9
|Version=0
!A10
|DC voltage MSB
!A11
|DC voltage LSB
!
|DC current
!B7
!B8
!B9
!B10
!B11
!B12
|-
|OUT1 - HV enable
|
|
|
|
|
|GND
|
|
|0 when off, 5 when charging
|
|
|CANL
|Proximity
|
|
|}
|}
]]
[[File:Parameter view of commercial firmware.png|thumb|Parameter view of commercial firmware]]
 
===openinverter style charger firmware===
In addition to the open source firmware there is also an openinverter style firmware. It adds advanced features:
*Support for the standard open inverter web interface
*Parameter handling as known from the inverter firmware (see picture)
*Spot value handling like inverter including plotting, gauges, and logging
*Over the air update like inverter
*DC current control
* CAN control as described above
The firmware requires the board to be flashed with [https://github.com/jsphuebner/tumanako-inverter-fw-bootloader/releases stm32_loader.hex]. An Olimex MOD-ESP8266 must be programmed with the [https://github.com/jsphuebner/esp8266-web-interface openinverter web interface]. See [[Olimex MOD-WIFI-ESP8266]] and [https://openinverter.org/forum/viewtopic.php?f=5&t=8 this forum thread] for flashing instructions. With that done, future updates will happen via the web interface.


=== Parameters ===
The firmware will soon be fully published and is only available via patreon for now: https://www.patreon.com/openinverter
 
====Connecting to the Web interface====
Depending on the version of your Olimex wifi dongle they are "open" or you need a password to connect.
 
By default you can connect to the network (Access Point) and browse to: '''192.168.4.1'''
 
By default all charger kits will have '''SSID''' : charger '''PASSWORD''' : charger123
 
''Note: Its recommend that you change it. Nobody wants to drive and have some joker with a phone finding this information and accessing your charger.''
 
====Registration====
This step is no longer needed as the firmware will soon be published. It is already available on patreon: https://www.patreon.com/openinverter
 
If you bought a fully assembled V5aB3 board from the EVBMW webshop you can skip this step.
===Commercial firmware usage manual===
==== Parameters====
The firmware exports a number of parameters to be modified by the user. All modifications are temporary until you hit "Save Parameters to Flash" at the top of the page.
The firmware exports a number of parameters to be modified by the user. All modifications are temporary until you hit "Save Parameters to Flash" at the top of the page.


We will go over all of them.
We will go over all of them.


==== idclim ====
'''idclim'''
 
This parameter is mainly relevant for CAN operation. It is transmitted via CAN to let the vehicle know how much DC current the charger can deliver. Each charger module maxes out at about 15.5A so the maximum total charging current is 46.5A. Since the total power is also limited to 10 kW it depends on the output voltage as well. There is no need to be exact on this, the firmware will automatically limit the AC input current to each module to the hardware maximum.
This parameter is mainly relevant for CAN operation. It is transmitted via CAN to let the vehicle know how much DC current the charger can deliver. Each charger module maxes out at about 15.5A so the maximum total charging current is 46.5A. Since the total power is also limited to 10 kW it depends on the output voltage as well. There is no need to be exact on this, the firmware will automatically limit the AC input current to each module to the hardware maximum.


==== iaclim ====
'''iaclim'''
 
This is the per-module AC current limit. When charging from a 3-phase outlet (see below) each module will be allowed this current. When charging from single phase, this current will be equally distributed between the enabled chargers.
This is the per-module AC current limit. When charging from a 3-phase outlet (see below) each module will be allowed this current. When charging from single phase, this current will be equally distributed between the enabled chargers.


==== idcspnt ====
'''idcspnt'''
 
DC charge current limit. An additional limit to charge power. It is also mapped to the CAN bus so if you have a BMS that calculates a maximum charge current you can forward this to the charger.
DC charge current limit. An additional limit to charge power. It is also mapped to the CAN bus so if you have a BMS that calculates a maximum charge current you can forward this to the charger.


==== chargerena ====
'''chargerena'''
 
Here you can program which charger modules you want to enable. It is a flag channel, so 1 means "Module 1 enabled", 2 means "Module 2 enabled" and 4 means "Module 3 enabled". Combining these flags enables multiple modules, e.g. 5=4+1 enables modules 1 and 3. 7=4+2+1 enables all modules. This is the default. The parameter can not be directly changed, but you have to type "set chargerena 5" next to where it says "Send Custom Command" on the top of the page and then press the button.
Here you can program which charger modules you want to enable. It is a flag channel, so 1 means "Module 1 enabled", 2 means "Module 2 enabled" and 4 means "Module 3 enabled". Combining these flags enables multiple modules, e.g. 5=4+1 enables modules 1 and 3. 7=4+2+1 enables all modules. This is the default. The parameter can not be directly changed, but you have to type "set chargerena 5" next to where it says "Send Custom Command" on the top of the page and then press the button.


==== udcspnt ====
'''udcspnt'''
 
This modifies the constant voltage setpoint of the chargers. This value is transmitted directly to the modules without further processing. It lets you add a constant voltage phase to your charge process. When reaching this voltage the chargers will control the current to maintain this voltage.
This modifies the constant voltage setpoint of the chargers. This value is transmitted directly to the modules without further processing. It lets you add a constant voltage phase to your charge process. When reaching this voltage the chargers will control the current to maintain this voltage.


==== udclim ====
'''udclim'''
 
This parameters specifies a charge end condition. When the voltage is hit the charging process stops and will not resume until you re-plug the charge cable. If you wish to add a constant voltage phase and control charge end by your BMS, set this parameter higher than udcspnt.
This parameters specifies a charge end condition. When the voltage is hit the charging process stops and will not resume until you re-plug the charge cable. If you wish to add a constant voltage phase and control charge end by your BMS, set this parameter higher than udcspnt.


==== timelim ====
'''timelim'''
 
Another charge end condition. Charge only for the specified time in minutes.
Another charge end condition. Charge only for the specified time in minutes.


==== inputype ====
'''inputype'''
* '''Type2''': Specifies one or more modules are operated on ONE common phase of a Type-2 EVSE. The limits imposed by ''cablelim'' and ''evselim'' (pilot signal) are distributed equally over the enabled modules. For example if you enable all 3 modules, the cable allows 32A but the EVSE only allows 16A, every module will run at 16/3=5.3A. Charging will start automatically as soon as proximity and a valid pilot signal is detected.
*'''Type2''': Specifies one or more modules are operated on ONE common phase of a Type-2 EVSE. The limits imposed by ''cablelim'' and ''evselim'' (pilot signal) are distributed equally over the enabled modules. For example if you enable all 3 modules, the cable allows 32A but the EVSE only allows 16A, every module will run at 16/3=5.3A. Charging will start automatically as soon as proximity and a valid pilot signal is detected. Note: You must still have the D1 enable line high. All charge modes require D1 to be high.
* '''Type2_3P''': Specifies each module is connected to a different phase of a Type-2 EVSE. The limits imposed by ''cablelim'' and ''evselim'' are allowed for each module.
*'''Type2-3P''': Specifies each module is connected to a different phase of a Type-2 EVSE. The limits imposed by ''cablelim'' and ''evselim'' are allowed for each module.
* '''Type1''': Like '''Type2''' but ''cablelim'' is always assumed 32A.
*'''Type-2Auto''': relies on input D2 to indicate that 3 phase is present (from external relay), to allow charging on either single or three phase automatically.
* '''Manual''': Specifies one or more modules are operated on ONE common phase, power is distributed like in '''Type2''' mode. Charging starts as soon as the enable pin "D1" goes high. ''iaclim'' MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.
*'''Type1''': Like '''Type2''' but ''cablelim'' is always assumed 40A.
* '''Manual_3P''': Specifies that each module is connected to a different phase of 3-phase outlet. Each module is allowed ''iaclim'' AC current. ''iaclim'' MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.
*'''Manual''': Specifies one or more modules are operated on ONE common phase, power is distributed like in '''Type2''' mode. Charging starts as soon as the enable pin "D1" goes high. ''iaclim'' MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.
*'''Manual-3P''': Specifies that each module is connected to a different phase of 3-phase outlet. Each module is allowed ''iaclim'' AC current. ''iaclim'' MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.
'''cancontrol'''


==== cancontrol ====
When on, expect charging instructions via CAN message 0x102 as described above. Charging will start when the enable bit is set. when no CAN message is received for 1s, charging will stop. Note that the digital enable input "D1" also needs to high to allow charging. Also the autostart conditions apply when enabled.
When on, expect charging instructions via CAN message 0x102 as described above. Charging will start when the enable bit is set. when no CAN message is received for 1s, charging will stop. Note that the digital enable input "D1" also needs to high to allow charging. Also the autostart conditions apply when enabled.


==== idckp/idcki ====
'''idckp/idcki'''
 
Can be used to tune the control loop of the DC current PI controller.
Can be used to tune the control loop of the DC current PI controller.


==== pin ====
'''pin'''
 
Software pin, obtained by registration.
Software pin, obtained by registration.
==Additional Resources==
Videos by Damien Maguire showing internals of the charger, CAN IDs, wiring, and development of the board:
[https://www.youtube.com/watch?v=LqJ7HhS65po The Tesla Project : 10 Kw Gen 2 Charger]
[https://www.youtube.com/watch?v=ULadBnl7wgM The Tesla Project : Charger Progress]
[https://www.youtube.com/watch?v=mOIgp3QFg78 The Tesla Project : 10kW Charger Charging]
[https://www.youtube.com/watch?v=BG4kYsoHe54 The Tesla Project : More Charger Hacking]
[https://www.youtube.com/watch?v=bPLqXCiArVM The Tesla Project : Charger 10kw Run]
A 15 min intro from a user perspective: https://www.youtube.com/watch?v=ibtr6v1k0cA
==Common Issues==
*The Tesla chargers are very sensitive to grounding. The case MUST be connected to vehicle 12v ground AND evse earth/ground when charging. [https://openinverter.org/forum/viewtopic.php?p=3890#p3890]
*With V5aB2, If you do NOT use the external CAN bus or are not properly terminated, '''remember to close the solder jumper''' next to R1 under the WiFi module. When in doubt, check the resistance of the CAN bus with all devices off. It should be 60 ohms ideally. If you are not using the external CAN then it should be 120 ohms.
*People had problems with unreliable connectivity between ESP8266 & the charger board [https://openinverter.org/wiki/Olimex_MOD-WIFI-ESP8266#Common_Issues]
*Firmware '''1.09''' and '''1.10''' can lose the CAN map, making the logic board go silent, reset instructions here: [https://openinverter.org/forum/viewtopic.php?p=40617&sid=e2369fea2b502a419f55e5aac10fe169#p40617]
*If a module within the charger is enabled (and all three are enabled by default) then it '''MUST''' see AC and DC voltage when charging starts. If it does not then no current will flow on any module. So, triple check your wiring before starting. It can be easy to mix up the line and neutral wires of the AC input. This will not blow up anything but it won't work either. Mixing up the DC wires is a recipe for a bad time.
*Some chargers are just raised wrong. As covered above, for reasons we don't know, some modules will simply refuse to work properly. Most often this will happen to chargers that were previously used in super charger stations but it can happen to chargers that were pulled from Model S cars as well. There is not yet any known fix for this. If it happens the only current solution is a different charger or you live with slow charging.
*Did you set the D1 enable pin to be high (+12v?) It must be high in '''ANY''' mode in order for charging to start. It is OK to tie it to the +12 incoming power if you are using something like Type2 where charging is controlled by the proximity and control pilot signals.
==Errata==
Charger Dimensions: 500x300x100mm
More specific dimensions and CAD info here: https://openinverter.org/forum/viewtopic.php?p=3641#p3641CAD
==Notes==
[[Category:OEM]]
[[Category:Tesla]]
[[Category:Charger]]
<references />

Latest revision as of 12:19, 12 November 2023

Overview

tesla gen2 ac charger
Tesla Gen2 X-Ray

The Tesla GEN2 on-board charger (OBC) is a single/three phase 10kW AC charger that was fitted in the Model S from approx. Oct2013[1] until it was replaced in the 2016 'facelift' model with GEN3. It was the first Tesla OBC capable of fully utilizing external 3-phase AC; previous Tesla OBCs lacked the external wiring for three phases.

One or two GEN2 chargers are installed beneath the rear seats in the Model S for AC charging.

The charger is made up of three 3.3 kw modules, each sitting on a liquid cooling plate. This assembly enables both single and multi phase AC charging.

Important Considerations

Output Voltage Range

HEED DAMIEN'S WARNING:[2]

"Running a Tesla charger at much under 200v dc will cause it to explode. Yes I know the label says 50 to 450v but it lies. Yes I blew one up discovering this."

Supported Tesla Part Numbers (TPN)

It has been found that early revision units will not work with the OI control boards.[3]

TPNs to avoid:

  • 1014963-05-B and 1014963-05-C

TPNs tested and known good:

  • 1014963-00-E/F/J/K/L
    • 1014963-00-G is likely also good, just wasn't mentioned by name in the referenced thread

Supported Software Revisions

At this time, it is not known why but it appears that some firmware revisions of this charger will have problems with maintaining a steady charge. Symptoms of this can be either surging (current goes up, drops to near zero, then surges back) or modules coming online singly followed by all modules going offline, repeat forever. In either case, charge power will be limited. We do not yet know what, exactly, is causing this. However, it is confirmed that swapping charger units but keeping the OI control board can produce working results.

Cooling

The direction of flow in the cooling plate does not seem to matter.[4] The charger should likely be on the same cooling loop as the batteries themselves. This coolant loop should be separate from the loop with the motor and inverter (they get far too hot.) Limited testing (esp 110V, 1kw) can be done without the coolant lines hooked up. However, it would be unwise to attempt 10kw charging for any length of time without liquid cooling.

Replacement Control Boards

Replacement control board https://github.com/damienmaguire/Tesla-Charger

v5 kit: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-kit

v5 partially built board: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-partially-built

github: https://github.com/damienmaguire/Tesla-Charger

Charger Connections

A1 A2 A3 A4 A5 B1 B2 B3 B4 B5 B6
OUT2 - AC present D1 - enable 12V supply CANH Control Pilot
A6 A7 A8 A9 A10 B7 B8 B9 B10 B11 B12
OUT1 - HV enable D2 - 3p GND CANL Proximity
The outputs will not output 12v, they are low side switches. If you require a 12v ac present signal then use a relay with its coil switched from the relevant pin. wiring diagram
AC DC Connections.jpg

Connector part numbers

AC and DC power connections (Molex Sabre series):

  • housing: 044441-2006
  • pins: 043375-3001 (18-20AWG), 043375-0001 (14-16AWG)

Logic connectors (Molex MX150L series):

  • housing: 10-way 19418-0014, 12-way 19418-0026
  • pins: 33012-2002 (18-20AWG), 33012-2001 (14-16AWG)

Replacement board connectors

If you can desolder 24 pin SMD connector off of the OEM control board otherwise to order 24 pin connector from Mouser P/N is:

  • SM24B-CPTK-1A-TB(L)

The 30 pin connector is very difficult to desolder and resolder. Replacement P/N is:

  • IPS1-115-01-S-D-PL, SAMTEC - IPS1-115-01-S-D-PL - SOCKET, 2.54MM, 2X15WAY

Programming

You'll need a ST-LINK/V2 smt32 programmer. Unofficial ones are cheaply available from amazon and ebay.

Two options:

  1. Charger_gen2_v5.hex https://github.com/damienmaguire/Tesla-Charger/tree/master/V5/Software/Binary
  2. openinverter style firmware https://openinverter.org/forum/viewtopic.php?t=1323 (only available via patreon for next few weeks)

Click "Target --> Connect" from top menu. You want to see the screen get filled with a data dump of symbols. In the upper right of the screen you can see it identified the device.

In the main viewing window are multiple tabs, click the "Binary File" tab to select it.

This will ask to open a file, you choose: "stm32_loader.hex" from openinverter.org, download ahead of time. This will change what shows up in the viewing window.

Click "Target --> Program and Verify" from the top menu. This pops up a window, and you can probably just click "Start" on that window. This programs the STM32 chip with the stm32_loader.hex file.

The STM32 on your v5 gen2 Tesla charger Board can now load other files.

You can close the stm32_loader.hex tab, and go back to the "Binary File" tab, which will ask to open another file.

You choose: "Charger_Gen2_v5.hex"

Same as last time, click "Target --> Program and Verify" from the top menu. And click Start.

The STM32 on your v5 gen2 Tesla charger Board now also has the software to run.

You are now done with the ST-Link USB dongle, it's no longer needed.

Future updates can be done via WiFi. (must have esp8266 WiFi module programed https://openinverter.org/forum/viewtopic.php?f=5&t=8 )

External CAN bus

Gen2 Charger V5aB2 logic board with CAN wired to external pins

The V5aB2 version of the board has no connection to the external CAN bus (V5aB3 has) but you can add it with two bodge wires as shown in the picture. You will find CANH and CANL on the 3 pin header underneath the WiFi module. Route them over to CONN6 as shown. CONN2.1 (CANH) is connected to CONN6.24, CONN2.2 (CANL) to CONN6.26.

Revision V5aB3 does not need this modification. On Revision V5aB3 you MUST close the solder jumper unless your charger is on an already terminated bus (that is, if the bus already has 2 termination resistors, one on each end, and measures 60 ohms with all devices powered off). If you do not use the external CAN, terminate the bus. If you have only two devices on the bus, terminate the bus. If you aren't sure, double check. Bus termination is important.


If you attach to the external CAN bus, be aware that all internal CAN traffic is also seen on the external CAN bus. The following IDs are already used and mustn't used by any other device on the bus:

207, 209, 20b, 217, 219, 21b, 227, 229, 22b, 237, 239, 23b, 247, 249, 24b, 327, 329, 32b, 347, 349, 34b, 357, 359, 35b, 367, 368, 369, 36b, 377, 379, 37b, 537, 539, 53b, 717, 719, 71b.

Functionality of external CAN bus

With the CAN bus now available externally you can remote control your charger via CAN and also receive some values from it. The mapping is similar to the CHAdeMO CAN protocol. The feature is only available in the commercial firmware.

Charger CAN protocol - up to version 1.06.R
ID Direction Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
0x102 Receive by charger DC voltage limit MSB DC voltage limit LSB DC current set point ==1 enable charging SoC
0x108 Transmit by charger Version=0 Max DC voltage MSB Max DC voltage LSB Max DC current
0x109 Transmit by charger Version=0 DC voltage MSB DC voltage LSB DC current 0 when off, 5 when charging

Example: transmit "0x102 # 0 0x1 0x86 0x14 0x1 50 0 0" to enable charging up to a voltage of 390V and a DC current of 20A, report SoC of 50%

Charger CAN protocol - after version 1.06.R
ID Direction Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
0x102 Receive by charger DC voltage limit MSB DC voltage limit LSB DC current set point ==1 enable charging SoC
0x108 Transmit by charger Version=0 Max DC voltage MSB Max DC voltage LSB Max DC current
0x109 Transmit by charger Version=0 DC voltage MSB DC voltage LSB DC current 0 when off, 5 when charging
Parameter view of commercial firmware

openinverter style charger firmware

In addition to the open source firmware there is also an openinverter style firmware. It adds advanced features:

  • Support for the standard open inverter web interface
  • Parameter handling as known from the inverter firmware (see picture)
  • Spot value handling like inverter including plotting, gauges, and logging
  • Over the air update like inverter
  • DC current control
  • CAN control as described above

The firmware requires the board to be flashed with stm32_loader.hex. An Olimex MOD-ESP8266 must be programmed with the openinverter web interface. See Olimex MOD-WIFI-ESP8266 and this forum thread for flashing instructions. With that done, future updates will happen via the web interface.

The firmware will soon be fully published and is only available via patreon for now: https://www.patreon.com/openinverter

Connecting to the Web interface

Depending on the version of your Olimex wifi dongle they are "open" or you need a password to connect.

By default you can connect to the network (Access Point) and browse to: 192.168.4.1

By default all charger kits will have SSID : charger PASSWORD : charger123

Note: Its recommend that you change it. Nobody wants to drive and have some joker with a phone finding this information and accessing your charger.

Registration

This step is no longer needed as the firmware will soon be published. It is already available on patreon: https://www.patreon.com/openinverter

If you bought a fully assembled V5aB3 board from the EVBMW webshop you can skip this step.

Commercial firmware usage manual

Parameters

The firmware exports a number of parameters to be modified by the user. All modifications are temporary until you hit "Save Parameters to Flash" at the top of the page.

We will go over all of them.

idclim

This parameter is mainly relevant for CAN operation. It is transmitted via CAN to let the vehicle know how much DC current the charger can deliver. Each charger module maxes out at about 15.5A so the maximum total charging current is 46.5A. Since the total power is also limited to 10 kW it depends on the output voltage as well. There is no need to be exact on this, the firmware will automatically limit the AC input current to each module to the hardware maximum.

iaclim

This is the per-module AC current limit. When charging from a 3-phase outlet (see below) each module will be allowed this current. When charging from single phase, this current will be equally distributed between the enabled chargers.

idcspnt

DC charge current limit. An additional limit to charge power. It is also mapped to the CAN bus so if you have a BMS that calculates a maximum charge current you can forward this to the charger.

chargerena

Here you can program which charger modules you want to enable. It is a flag channel, so 1 means "Module 1 enabled", 2 means "Module 2 enabled" and 4 means "Module 3 enabled". Combining these flags enables multiple modules, e.g. 5=4+1 enables modules 1 and 3. 7=4+2+1 enables all modules. This is the default. The parameter can not be directly changed, but you have to type "set chargerena 5" next to where it says "Send Custom Command" on the top of the page and then press the button.

udcspnt

This modifies the constant voltage setpoint of the chargers. This value is transmitted directly to the modules without further processing. It lets you add a constant voltage phase to your charge process. When reaching this voltage the chargers will control the current to maintain this voltage.

udclim

This parameters specifies a charge end condition. When the voltage is hit the charging process stops and will not resume until you re-plug the charge cable. If you wish to add a constant voltage phase and control charge end by your BMS, set this parameter higher than udcspnt.

timelim

Another charge end condition. Charge only for the specified time in minutes.

inputype

  • Type2: Specifies one or more modules are operated on ONE common phase of a Type-2 EVSE. The limits imposed by cablelim and evselim (pilot signal) are distributed equally over the enabled modules. For example if you enable all 3 modules, the cable allows 32A but the EVSE only allows 16A, every module will run at 16/3=5.3A. Charging will start automatically as soon as proximity and a valid pilot signal is detected. Note: You must still have the D1 enable line high. All charge modes require D1 to be high.
  • Type2-3P: Specifies each module is connected to a different phase of a Type-2 EVSE. The limits imposed by cablelim and evselim are allowed for each module.
  • Type-2Auto: relies on input D2 to indicate that 3 phase is present (from external relay), to allow charging on either single or three phase automatically.
  • Type1: Like Type2 but cablelim is always assumed 40A.
  • Manual: Specifies one or more modules are operated on ONE common phase, power is distributed like in Type2 mode. Charging starts as soon as the enable pin "D1" goes high. iaclim MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.
  • Manual-3P: Specifies that each module is connected to a different phase of 3-phase outlet. Each module is allowed iaclim AC current. iaclim MUST be configured to the limits of your AC source as there is no automatic detection like in Type1 or Type2 modes.

cancontrol

When on, expect charging instructions via CAN message 0x102 as described above. Charging will start when the enable bit is set. when no CAN message is received for 1s, charging will stop. Note that the digital enable input "D1" also needs to high to allow charging. Also the autostart conditions apply when enabled.

idckp/idcki

Can be used to tune the control loop of the DC current PI controller.

pin

Software pin, obtained by registration.

Additional Resources

Videos by Damien Maguire showing internals of the charger, CAN IDs, wiring, and development of the board:

The Tesla Project : 10 Kw Gen 2 Charger

The Tesla Project : Charger Progress

The Tesla Project : 10kW Charger Charging

The Tesla Project : More Charger Hacking

The Tesla Project : Charger 10kw Run

A 15 min intro from a user perspective: https://www.youtube.com/watch?v=ibtr6v1k0cA

Common Issues

  • The Tesla chargers are very sensitive to grounding. The case MUST be connected to vehicle 12v ground AND evse earth/ground when charging. [1]
  • With V5aB2, If you do NOT use the external CAN bus or are not properly terminated, remember to close the solder jumper next to R1 under the WiFi module. When in doubt, check the resistance of the CAN bus with all devices off. It should be 60 ohms ideally. If you are not using the external CAN then it should be 120 ohms.
  • People had problems with unreliable connectivity between ESP8266 & the charger board [2]
  • Firmware 1.09 and 1.10 can lose the CAN map, making the logic board go silent, reset instructions here: [3]
  • If a module within the charger is enabled (and all three are enabled by default) then it MUST see AC and DC voltage when charging starts. If it does not then no current will flow on any module. So, triple check your wiring before starting. It can be easy to mix up the line and neutral wires of the AC input. This will not blow up anything but it won't work either. Mixing up the DC wires is a recipe for a bad time.
  • Some chargers are just raised wrong. As covered above, for reasons we don't know, some modules will simply refuse to work properly. Most often this will happen to chargers that were previously used in super charger stations but it can happen to chargers that were pulled from Model S cars as well. There is not yet any known fix for this. If it happens the only current solution is a different charger or you live with slow charging.
  • Did you set the D1 enable pin to be high (+12v?) It must be high in ANY mode in order for charging to start. It is OK to tie it to the +12 incoming power if you are using something like Type2 where charging is controlled by the proximity and control pilot signals.

Errata

Charger Dimensions: 500x300x100mm

More specific dimensions and CAD info here: https://openinverter.org/forum/viewtopic.php?p=3641#p3641CAD

Notes