Tesla Model S/X A/C Compressor Gen2

From openinverter.org wiki
Jump to navigation Jump to search

Overview

There are two known variants of A/C compressors used in Model S & X. The first generation is a unit by Denso which can be controlled via PWM. Later units built by HVCC and Hanon are CAN-controlled - details for controlling these variants are found here. Details of the PWM version are found in the GEN1 topic.

Early years of Model S (2013-2014) used an ES34C by Denso with part number 6007380-00-D.

Later models (2015+) used a HVCC ESC33 with Tesla part number 1028398-00-E, 1028398-00-F and 1028398-00-J. Tesla also used the Hanon HES33 and is found with number 1063369-00-D, 1063369-00-E, 1063369-00-F and 1063369-00-G.

Gen 2 Unit (HVCC ES33, Hanon HES33)

Power Draw

As per: https://www.diyelectriccar.com/threads/tesla-a-c-compressor-questions.189978/post-1061852

Current draw at maximum load is in the neighborhood of 12 amps @ 360V, so somewhere around 4.5kW draw. This has not been confirmed for the CAN version covered here. However, it is reasonable to assume that the power draw is similar to the GEN1.

Control/Pinouts

LV pinout
pin function
1 12V Enable Pin (White/DarkBlue or Red/Green)
2 CAN High (White/Red or Red/White)
3 CAN Low (Red)
4 Ground (Black)

The colors listed are for the OEM harness. The colors are different between model years. However, the CAN wires will be the two wires that are twisted together. Ground seems always to be black leaving the enable pin to the the remaining wire.

This compressor will provide no CAN traffic at all given only 12V. One must provide approximately 340V DC power to the HV pins, ground pin 4, ground the chassis of the compressor to the frame of the vehicle, and then provide +12V to pin 1 to wake the unit up. It will then begin to send out periodic CAN status messages.

Wiring/Connectors

HV

Polarity of the HV connector (as looking into the connector):

Denso-ES34C-HV-polarity.jpg

Details of the connector itself are currently unknown, though an HV cable from a Lexus hybrid (i.e. GS450H) A/C compressor has been known to work if a Tesla assembly can't be sourced.

LV

Not currently sure of the connector part #. I used an original harness from a 2015 Model S.

CAN Control

The compressor requires only one ID in order to begin operation:

0x28A - 8 Bytes of data

  1. Bytes 0 and 1 encode the target duty cycle for the compressor in 0.1% increments. For instance, 40% is then 400 as a value. Values are stored little endian and so byte 0 is the low byte and byte 1 is the high byte. 400 will be encoded as 0x90 0x01
  2. Bytes 2 and 3 encode the maximum power draw allowable in watts. This is also stored little endian. For instance, 3000W is 0xB8 0x0B
  3. Byte 4 can be set to 0
  4. Byte 5 must be set to 1 to enable the compressor
  5. Bytes 6 and 7 can be set to 0

So, to command 40% duty cycle and a maximum power draw of 3000W you would send 0x28A - 90 01 B8 0B 00 01 00 00

Testing was done with this message being sent every 50ms. It may not be required to send the message this frequently. 100ms interval is probably sufficient.

The compressor will report status on two main IDs:

0x223 - Various status flags

  1. Bytes 0 and 1 encode the speed of the compressor in RPM. (Little endian as all signals for the compressor are encoded)
  2. Bytes 2 and 3 encode the output duty cycle in tenths of a percent
  3. Byte 4 encodes the temperature of the compressor's built-in inverter. This is degrees Centigrade + 40. (So, a reading of 0 means -40C)
  4. Byte 5 has many status bits. If any of them are 1 you're going to have a bad time.
  5. Byte 6 continues the error flags. You want this value to also read zero.
  6. Byte 7 the top bit (0x80 / bit 7) is "Compressor is Ready!" The lower 4 bits are the compressor status but only the bottom 2 bits are used. 0 = None, 1 = Normal, 2 = Wait, 3 = Faulted

As an example: 0x223 68 05 0E 00 41 00 00 81 means 1384RPM, 1.4% duty cycle, 25C inverter, no faults, compressor is ready, status is normal

0x233 - High voltage status

  1. Bytes 0 and 1 encode the high voltage reading in tenths of a volt. This signal, as all others, is little endian.
  2. Byte 2 encodes the 12V input voltage. In theory it should be in tenths of a volt but I have it reporting as 0xFF
  3. Bytes 3 and 4 encode the compressor current draw in tenths of an amp
  4. Bytes 5 and 6 encode the actual power draw of the compressor in watts

As an example: 0x233 65 0E FF 0B 00 94 01 00 means 368.5V, 1.1A, 404 watts (LV stuck at 25.5V)

Controller

GEVCU7 will shortly have example code for how to command the compressor and interpret the status feedback.