Mitsubishi Outlander DCDC OBC: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
No edit summary
(Categories)
 
(19 intermediate revisions by 7 users not shown)
Line 5: Line 5:


3d scan cad file: https://grabcad.com/library/outlander-phev-charger-and-dcdc-1
3d scan cad file: https://grabcad.com/library/outlander-phev-charger-and-dcdc-1
The charger has a 3.7k ohm resistance between the CAN H and CAN L pins.
==Dimensions==
==Dimensions==
  * Length 370mm
  * Length 370mm
  * Width 270mm
  * Width 270mm
  * Height 150mm
  * Height 150mm
[[File:Outlander phev charger dimensions.jpg|thumb|link=Special:FilePath/Outlander_phev_charger_dimensions.jpg]][[File:Mitsubishi Outlander PHEV dimensions.jpg|thumb|link=Special:FilePath/Mitsubishi_Outlander_PHEV_dimensions.jpg]][[File:Mitsubishi Outlander PHEV height.jpg|thumb|link=Special:FilePath/Mitsubishi_Outlander_PHEV_height.jpg]]
<gallery widths="500">
File:Outlander phev charger dimensions.jpg|Length
File:Mitsubishi Outlander PHEV dimensions.jpg|Width
File:Mitsubishi Outlander PHEV height.jpg|Height
</gallery>Internals:
{| class="wikitable"
|+
![[File:Outlander internals bottom.jpg|thumb]]
![[File:Outlander internals top.jpg|thumb]]
|-
!Bottom
!Top
|}
 
==DC-DC Converter==
==DC-DC Converter==
The charger has an integrated DC-DC converter outputting a fixed 14.5V. The converter requires battery voltage between 200V and 400V on the DC bus.  
The charger has an integrated DC-DC converter outputting a fixed 14.5V. The converter requires battery voltage between 200V and 400V on the DC bus.  
Line 23: Line 39:


==Connections==
==Connections==
The charger is controlled via a 13-pin connector mounted on a short tail into the case. Connectors seem to be widely available to mate with this. Search for "Sumitomo 6189-1092 13-WAY CONNECTOR KIT Inc Terminals & seals [13-AC001]".[[File:13 pin connector.png|thumb]]Pinout as as follows:
*Pin 1 (Orange) NC on outlander
*Pin 2 NC on outlander
*Pin 3 (Blue) NC on outlander
*Pin 4 Sense line for DC to DC converter
*Pin 5 CHIN (Serial protocol to EV Remote wifi module)
*Pin 6 CAN H (Black)
*Pin 7 DC SW enables the DC:DC converter
*Pin 8 IGCT main power to charger
*Pin 9 Control Pilot from charging cable
*Pin 10 GND
*Pin 11 NC
*Pin 12 CHOT (Serial protocol to EV Remote wifi module)
*Pin 13 CAN L (Red)


The AC power connector is Yakaza 90980-11413<nowiki/>https://www.auto-click.co.uk/7283-7350-30?search=90980-11413
=== Signal Connector ===
 
==== Pinout ====
{| class="wikitable"
|+Pinout for the Signal Connector <ref>http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/2019/index_M1.htm (Backup: [https://web.archive.org/web/20230505205957/http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/2019/index_M1.htm Web Archive])</ref><ref>http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05AC00ENG.pdf (Backup: [http://web.archive.org/web/20230505205819/http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05AC00ENG.pdf Web Archive])</ref><ref>http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05BC00ENG.pdf (Backup: [http://web.archive.org/web/20230505210500/http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05BC00ENG.pdf Web Archive])</ref><ref>http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05CC00ENG.pdf (Backup: [http://web.archive.org/web/20230505210616/http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E05CC00ENG.pdf Web Archive])</ref><ref>http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E06AC00ENG.pdf (Backup: [http://web.archive.org/web/20230505211625/http://mmc-manuals.ru/manuals/outlander_phev/online/Service_Manual_2014/img/90/HKAE0E06AC00ENG.pdf Web Archive])</ref>
!Pin on 13-pin Connector
!DCDC Side Pin Number
! Pin on Internal Connector
!DCDC Side Color
!Color from Schematic
!Name
!Function
|-
|1
|6
|
| Orange
|
|NC
|Not Connected
|-
|2
|5
|
|Blank
|
|NC
|Not Connected
|-
|3
|4
|
|Blue
|
|NC
|Not Connected
|-
|4
|3
|
|Grey
| Violet-Green
|DC SW
|Enable DC/DC Converter
|-
|5
|2
|
|Light Blue
|Pink-Green
|CHIN
|Serial Protocol to EV Remote WiFi Module
|-
|6
|1
|
|Black
|Black-Blue
|CAN H
|CAN High
|-
|7
|13
|
|Green
|Grey
|Sense
|Sense for DC/DC Converter (via shared 7.5A fuse)
|-
|8
|12
|
|Yellow
|Light Green
|IGCT
|Main +12V Power Supply (via shared 7.5A fuse)
|-
|9
|11
|
|White
|Blue
|CP
|Control Pilot from Charge Port
|-
|10
|10
|
|Black
|Black
|GND
|Ground
|-
|11
|9
|
|Blank
|
|NC
|Not Connected
|-
|12
|8
|
|Purple
|Brown-Red / Yellow-Black
|CHOT
|Serial Protocol to EV Remote WiFi Module
|-
|13
|7
|
|Red
|Red-Blue
| CAN L
|CAN Low
|}
 
Note: Although the above pin numbers, for the 13 pin external connector,  match the Mitsubishi wiring diagram the numbers marked on the connector are reversed for each row. Pin 1 is CAN H (Black), pin 6 is NC (orange), pin 7 is CAN L (red ) and pin 13 Sense ( green ). IGCT +12V power should not be powered permanently, this will create problems for using the charger. Recommended to only have the Charger powered with Ignition on or charging.
 
NOTE: If using the pp detect in zombie to perform charging, set interface to Chademo as the zombie code currently (as of 28/10/24) assumed permanently powered, assuming your IGCT is wired into a relay that is triggered by Low contactor output (and DCDC enable powered by relay on high output).
 
==== External Connector ====
[[File:13 pin connector.png|thumb]]
 
The charger is controlled via a 13-pin connector mounted on a short tail into the case. Connectors seem to be widely available to mate with this. Search for "Sumitomo 6189-1092 13-WAY CONNECTOR KIT Inc Terminals & seals [13-AC001]".
 
==== Internal Connector ====
[[File:Outlander DC-DC OBC Signal Connector.jpg|thumb|Empty Connector in Socket]]
In case the Charger doesn't come with the signal pigtail (which it usually does), the internal signal connector is from the Hirose GT8E series<ref>https://www.hirose.com/de/product/document?clcode=CL0758-0051-6-00&productname=GT8E-12DS-HU&series=GT8E&documenttype=Catalog&lang=de&documentid=D49379_en (Backup: [http://web.archive.org/web/20230429103946/https://www.hirose.com/de/product/document?clcode=CL0758-0051-6-00&productname=GT8E-12DS-HU&series=GT8E&documenttype=Catalog&lang=de&documentid=D49379_en Web Archive])</ref>, specifically the Hirose GT8E-12DS-HU<ref>https://www.mouser.de/ProductDetail/798-GT8E-12DS-HU</ref> with Hirose GT8E-2022SCF<ref>https://www.mouser.de/ProductDetail/798-GT8E-2022SCF</ref> pins.
 
 
The External to Internal wiring harness is as follows:
 
{| class="wikitable"
|+
!
!
!
!
!
|-
| colspan="2" |'''Internal Connector (Black)'''
| colspan="2" |'''External Connector (Grey)'''
| rowspan="2" |[[File:Outlander harness.jpg|thumb]]
|-
|Pin
|Wire Colour
|Pin
|Function (If Known)
|-
|1
|grey
|4
|DC SW  - Enable DC/DC Converter
| rowspan="3" |[[File:Ext connector view 1.jpg|thumb]]
|-
|2
|blue
|3
|NC
|-
|3
|black
|6
|CAN H -CAN High
|-
|4
|black
|10
|GND – Ground
| rowspan="3" |[[File:Ext connector view 2.jpg|thumb]]
|-
|5
|yellow
|8
|IGCT – Main +12V Power Supply (via shared 7.5A fuse)
|-
|6
|green
|7
|Sense - Sense for DC/DC Converter (via shared 7.5A fuse)
|-
|7
|light blue
|5
|CHIN - Serial Protocol to EV Remote WiFi Module
| rowspan="3" |[[File:Int connector view 1.jpg|thumb]]
|-
|8
|NC
|11
|NC
|-
|9
|orange
|1
|NC
|-
|10
|red
|13
|CAN L – CAN Low
| rowspan="3" |[[File:Int connector view 2.jpg|thumb]]
|-
|11
|purple
|12
|CHOT – Serial Protocol to EV Remote WiFi Module
|-
|12
|white
|9
|CP – Control Pilot from Charge Port
|}
 
===AC Power Connector===
[[File:Outlander DCDC OBC 12V Cap.jpg|thumb|Mitsubishi "MUC000691" cap]]
The AC power connector is Yazaki 7283-7350-30 / Toyota 90980-11413<ref>https://www.auto-click.co.uk/7283-7350-30?search=90980-11413 (Backup: [http://web.archive.org/web/20230505213401/https://www.auto-click.co.uk/7283-7350-30?search=90980-11413 Web Archive])</ref>.
 
[[File:Outlander Charger AC connector.jpg|none|thumb]]
 
===+12V DC Connector===
The thread size of the +12V stud of the DC/DC converter is M8. The Mitsubishi part number for the correct cap is "MUC000691".


==Charge Control==
==Charge Control==
There is no voltage adjustment only current so your controller needs to monitor output voltage and step the charge current. Regardless of the set current the pilot signal will limit the charge current automatically. The pilot signal duty cycle is available on the can bus.
There is no voltage adjustment only current so your controller needs to monitor output voltage and step the charge current. Regardless of the set current the pilot signal will limit the charge current automatically. The pilot signal duty cycle is available on the can bus.
==CANBus Messages==
 
===CANBus Messages===
[https://openinverter.org/forum/download/file.php?id=6649 Outlander Charger DBC File]
[https://openinverter.org/forum/download/file.php?id=6649 Outlander Charger DBC File]


Line 51: Line 277:
0x285 alone will connect the EVSE but won't charge until you send 0x286. Byte 2 = 0xb6 pulls in the EVSE.
0x285 alone will connect the EVSE but won't charge until you send 0x286. Byte 2 = 0xb6 pulls in the EVSE.


0x286 byte 2 sets the DC charge current, there is a voltage setting on byte 0 and 1. The charger reads this value only once. To update it, you have to first power cycle the 12V line "Pin 8 IGCT main power to charger".
0x286 byte 2 sets the DC charge current, there is a voltage setting on byte 0 and 1. '''The requested current should be limited to 12A, going above this results in strange current delivery.'''
 
Charger will only start charging if EVSE CP is connected and requested current is below EVSE limit.
  - Byte 0-1 = Voltage setpoint (Big Endian e.g. 0x0E 0x74 = 3700 = 370v)
  - Byte 0-1 = Voltage setpoint (Big Endian e.g. 0x0E 0x74 = 3700 = 370v)
  - Byte 2 = Current in amps x 10
  - Byte 2 = Current in amps x 10
Line 62: Line 290:
  - B5 = Temperature 2 (starts at -40degC, +1degC/bit)
  - B5 = Temperature 2 (starts at -40degC, +1degC/bit)
  - B6 = Temperature 3 (starts at -40degC, +1degC/bit)
  - B6 = Temperature 3 (starts at -40degC, +1degC/bit)
  - B7 = Statusbyte (h20=standby, h21=error, h22=in operation)
  - B7 = Statusbyte (0x20=standby, 0x21=error, 0x22=in operation)
  -  - bit0(LSB) = Error
  -  - bit0(LSB) = Error
  -  - bit1 = In Operation
  -  - bit1 = In Operation
Line 74: Line 302:
  - B0 = Battery Voltage (as seen by the charger), needs to be scaled x 2, so can represent up to 255*2V; used to monitor battery during charge
  - B0 = Battery Voltage (as seen by the charger), needs to be scaled x 2, so can represent up to 255*2V; used to monitor battery during charge
  - B1 = Charger supply voltage, no scaling needed
  - B1 = Charger supply voltage, no scaling needed
  - B6 = Charger Supply Current x 10
  - B6 = AC Supply Current x 10
 
- B7 = DC side current x 10 (should equal commanded current)
0x38A
0x38A
  - B0 = temp x 2?
  - B0 = temp x 2?
Line 97: Line 325:
First i request listening to CAN in main function. Of course variables need to be declared...
First i request listening to CAN in main function. Of course variables need to be declared...


<syntaxhighlight lang="C">
CAN_FRAME incoming;


 
if (Can0.available() > 0) {
<code>  CAN_FRAME incoming;
 
  if (Can0.available() > 0) {
     Can0.read(incoming);
     Can0.read(incoming);
     if(incoming.id==0x389){
     if (incoming.id == 0x389) {
      voltage=incoming.data.bytes[0] ;
        voltage = incoming.data.bytes[0];
      Ctemp=incoming.data.bytes[4] ;       
        Ctemp = incoming.data.bytes[4];       
     }
     }
     if(incoming.id==0x377){
     if (incoming.id == 0x377){
      aux1=incoming.data.bytes[0] ;
        aux1 = incoming.data.bytes[0];
      aux2=incoming.data.bytes[1] ;   
        aux2 = incoming.data.bytes[1];   
      auxvoltage=((aux1 * 256) + aux2); //recalculate two bit voltage value
        auxvoltage = ((aux1 * 256) + aux2); //recalculate two bit voltage value
     }   
     }   
    } </code>
}  
</syntaxhighlight>




Line 118: Line 346:
I request charger command telegram function and within i condition for high voltage reduction and stop.
I request charger command telegram function and within i condition for high voltage reduction and stop.


<code>void sendCANframeA() {</code>
<syntaxhighlight lang="C">
 
void sendCANframeA() {
<code>outframe.id = 0x286; // Set our transmission address ID</code>
outframe.id = 0x286; // Set our transmission address ID
 
outframe.length = 8; // Data payload 8 bytes
<code>outframe.length = 8; // Data payload 8 bytes</code>
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
 
outframe.rtr=1; //No request
<code>outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit</code>
outframe.data.bytes[0]=0x28;
 
outframe.data.bytes[1]=0x0F; // 0F3C=3900, 0DDE=3550, 0,1V/bit
<code>outframe.rtr=1; //No request</code>
 
<code>outframe.data.bytes[0]=0x28;</code>
 
<code>outframe.data.bytes[1]=0x0F; // 0F3C=3900, 0DDE=3550, 0,1V/bit</code>
 
<code>if(voltage < 193) { // if Charger senses less than 386V</code>
 
<code>outframe.data.bytes[2]=0x78; // 78=120 12A, 50=80 8A, 32=50 5A, 1E=30, 3A 14=20 2A at 0,1A/bit</code>
 
<code>}</code>
 
<code>else if(voltage <= 194) { // if Charger senses less than or equal 388V</code>
 
<code>outframe.data.bytes[2]=0x1E;</code>
 
<code>}</code>
 
<code>else {  //any other case</code>
 
<code>outframe.data.bytes[2]=0x00;</code>
 
<code>}</code>
 
<code>outframe.data.bytes[3]=0x37; // why 37?</code>
 
<code>outframe.data.bytes[4]=0x00;</code>
 
<code>outframe.data.bytes[5]=0x00;</code>
 
<code>outframe.data.bytes[6]=0x0A;</code>


<code>outframe.data.bytes[7]=0x00;</code>
if(voltage < 193) { // if Charger senses less than 386V
outframe.data.bytes[2]=0x78; // 78=120 12A, 50=80 8A, 32=50 5A, 1E=30, 3A 14=20 2A at 0,1A/bit
}
else if(voltage <= 194) { // if Charger senses less than or equal 388V
outframe.data.bytes[2]=0x1E;
}
else {  //any other case
outframe.data.bytes[2]=0x00;
}


<code>if(debug) {printFrame(&outframe,1); } //If the debug variable is set, show our transmitted frame</code>
outframe.data.bytes[3]=0x37; // why 37?
outframe.data.bytes[4]=0x00;
outframe.data.bytes[5]=0x00;
outframe.data.bytes[6]=0x0A;
outframe.data.bytes[7]=0x00;


<code>if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it</code>
if(debug) {printFrame(&outframe,1); } //If the debug variable is set, show our transmitted frame


<code>else Can1.sendFrame(outframe);</code>
if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it


<code>}</code>
else Can1.sendFrame(outframe);
}
</syntaxhighlight>




Line 173: Line 384:
I can also control 12V aux battery charging by reading DCDC report on 0x377. When aux voltage drops too much i can start DCDC or 3 minutes and 12V battery gets charged up.
I can also control 12V aux battery charging by reading DCDC report on 0x377. When aux voltage drops too much i can start DCDC or 3 minutes and 12V battery gets charged up.


<code> if (auxvoltage < 1200) { // if aux voltage is low and DCDC is off</code>
<syntaxhighlight lang="C">
 
if (auxvoltage < 1200) { // if aux voltage is low and DCDC is off
<code>auxState = true; // set the flag to true   </code>
    auxState = true; // set the flag to true


<code>elapsedtime=millis(); </code>
    elapsedtime = millis();
}


<code>}</code>
DCDCauxcharge();
 
</syntaxhighlight>
<code>DCDCauxcharge(); </code>
   
   


Line 187: Line 398:
Within this function then i compare status and count down 3min for the charge event   
Within this function then i compare status and count down 3min for the charge event   


<code> void DCDCauxcharge() { </code>
<syntaxhighlight lang="C">
void DCDCauxcharge() {


<code>if ((auxState == true) && (digitalRead(Enable_pin) == LOW)) { // auxvoltage went below 12.2V
    if ((auxState == true) && (digitalRead(Enable_pin) == LOW)) { // auxvoltage went below 12.2V
digitalWrite(DCDC_active,HIGH);   </code>
        digitalWrite(DCDC_active, HIGH);


<code>if (millis() - elapsedtime >= ontime) { // if aux voltage is low and for 5min</code>
        if (millis() - elapsedtime >= ontime) { // if aux voltage is low and for 5min
            digitalWrite(DCDC_active,LOW); // turn off DCDC_active relay


<code>digitalWrite(DCDC_active,LOW); // turn off DCDC_active relay </code>
            elapsedtime = millis();
            auxState = false;
        }
    }
    else { // if auxvoltage is OK
        auxState = false; // turn off DCDC_active relay
    }
}
</syntaxhighlight>


<code>elapsedtime=millis();</code>


<code><nowiki>auxState = false; }}</nowiki></code>
<code>else { // if auxvoltage is OK </code>
<code><nowiki>auxState = false; // turn off DCDC_active relay }}</nowiki></code>


Lots of other functions can be prepared on basis of CAN report reading. Those are some functions that are usefull.


 
==References==
Lots of other functions can be prepared on basis of CAN report reading. Those are some functions that are usefull.
<references />
[[Category:OEM]]
[[Category:Mitsubishi]]
[[Category:Mitsubishi]]
[[Category:Charger]]
[[Category:Charger]]
[[Category:DC/DC]]
[[Category:DC/DC]]

Latest revision as of 16:49, 20 December 2024

The Mitsubishi Outlander PHEV (2012-2018 models) feature a compact CANBus controlled 3.7kw charger suitable for budget EV conversions. Units can be bought for under £200. Part numbers are: W005T70271 (pre 2018) [1], W005T70272 (post 2018) [2]


forum thread: https://openinverter.org/forum/viewtopic.php?t=628

3d scan cad file: https://grabcad.com/library/outlander-phev-charger-and-dcdc-1


The charger has a 3.7k ohm resistance between the CAN H and CAN L pins.

Dimensions

* Length 370mm
* Width 270mm
* Height 150mm

Internals:

Outlander internals bottom.jpg
Outlander internals top.jpg
Bottom Top

DC-DC Converter

The charger has an integrated DC-DC converter outputting a fixed 14.5V. The converter requires battery voltage between 200V and 400V on the DC bus.

*at about 397v the dcdc appears to stop operating via the enable lines. currently untested if it continues via can. [3]

To start the DC-DC converter, first to apply 12V to pin 7 and GND to pin 10. You also need to have its casing connected to common GND and 12V at the Pin 8 IGCT main power pin.

Then apply 12V ENABLE signal to pin 4 and you will see 14.5Vdc on the power line.


The DCDC is capable of at least 1800W of power.

Connections

Signal Connector

Pinout

Pinout for the Signal Connector [1][2][3][4][5]
Pin on 13-pin Connector DCDC Side Pin Number Pin on Internal Connector DCDC Side Color Color from Schematic Name Function
1 6 Orange NC Not Connected
2 5 Blank NC Not Connected
3 4 Blue NC Not Connected
4 3 Grey Violet-Green DC SW Enable DC/DC Converter
5 2 Light Blue Pink-Green CHIN Serial Protocol to EV Remote WiFi Module
6 1 Black Black-Blue CAN H CAN High
7 13 Green Grey Sense Sense for DC/DC Converter (via shared 7.5A fuse)
8 12 Yellow Light Green IGCT Main +12V Power Supply (via shared 7.5A fuse)
9 11 White Blue CP Control Pilot from Charge Port
10 10 Black Black GND Ground
11 9 Blank NC Not Connected
12 8 Purple Brown-Red / Yellow-Black CHOT Serial Protocol to EV Remote WiFi Module
13 7 Red Red-Blue CAN L CAN Low

Note: Although the above pin numbers, for the 13 pin external connector, match the Mitsubishi wiring diagram the numbers marked on the connector are reversed for each row. Pin 1 is CAN H (Black), pin 6 is NC (orange), pin 7 is CAN L (red ) and pin 13 Sense ( green ). IGCT +12V power should not be powered permanently, this will create problems for using the charger. Recommended to only have the Charger powered with Ignition on or charging.

NOTE: If using the pp detect in zombie to perform charging, set interface to Chademo as the zombie code currently (as of 28/10/24) assumed permanently powered, assuming your IGCT is wired into a relay that is triggered by Low contactor output (and DCDC enable powered by relay on high output).

External Connector

13 pin connector.png

The charger is controlled via a 13-pin connector mounted on a short tail into the case. Connectors seem to be widely available to mate with this. Search for "Sumitomo 6189-1092 13-WAY CONNECTOR KIT Inc Terminals & seals [13-AC001]".

Internal Connector

Empty Connector in Socket

In case the Charger doesn't come with the signal pigtail (which it usually does), the internal signal connector is from the Hirose GT8E series[6], specifically the Hirose GT8E-12DS-HU[7] with Hirose GT8E-2022SCF[8] pins.


The External to Internal wiring harness is as follows:

Internal Connector (Black) External Connector (Grey)
Outlander harness.jpg
Pin Wire Colour Pin Function (If Known)
1 grey 4 DC SW - Enable DC/DC Converter
Ext connector view 1.jpg
2 blue 3 NC
3 black 6 CAN H -CAN High
4 black 10 GND – Ground
Ext connector view 2.jpg
5 yellow 8 IGCT – Main +12V Power Supply (via shared 7.5A fuse)
6 green 7 Sense - Sense for DC/DC Converter (via shared 7.5A fuse)
7 light blue 5 CHIN - Serial Protocol to EV Remote WiFi Module
Int connector view 1.jpg
8 NC 11 NC
9 orange 1 NC
10 red 13 CAN L – CAN Low
Int connector view 2.jpg
11 purple 12 CHOT – Serial Protocol to EV Remote WiFi Module
12 white 9 CP – Control Pilot from Charge Port

AC Power Connector

Mitsubishi "MUC000691" cap

The AC power connector is Yazaki 7283-7350-30 / Toyota 90980-11413[9].

Outlander Charger AC connector.jpg

+12V DC Connector

The thread size of the +12V stud of the DC/DC converter is M8. The Mitsubishi part number for the correct cap is "MUC000691".

Charge Control

There is no voltage adjustment only current so your controller needs to monitor output voltage and step the charge current. Regardless of the set current the pilot signal will limit the charge current automatically. The pilot signal duty cycle is available on the can bus.

CANBus Messages

Outlander Charger DBC File

The CANBus interface operates at 500kbps/100ms.

Starting charging requires two messages:

0x285 alone will connect the EVSE but won't charge until you send 0x286. Byte 2 = 0xb6 pulls in the EVSE.

0x286 byte 2 sets the DC charge current, there is a voltage setting on byte 0 and 1. The requested current should be limited to 12A, going above this results in strange current delivery.

Charger will only start charging if EVSE CP is connected and requested current is below EVSE limit.

- Byte 0-1 = Voltage setpoint (Big Endian e.g. 0x0E 0x74 = 3700 = 370v)
- Byte 2 = Current in amps x 10

The charger also returns information over the CANbus:

0x377h 8bytes DC-DC converter status

- B0+B1 = 12V Battery voltage	(h04DC=12,45V -> 0,01V/bit)	
- B2+B3 = 12V Supply current	(H53=8,3A -> 0,1A/bit)	
- B4 = Temperature 1		(starts at -40degC, +1degC/bit)	
- B5 = Temperature 2		(starts at -40degC, +1degC/bit)	
- B6 = Temperature 3		(starts at -40degC, +1degC/bit)	
- B7 = Statusbyte 		(0x20=standby, 0x21=error, 0x22=in operation)
-  - bit0(LSB) = Error
-  - bit1	= In Operation
-  - bit3      = 
-  - bit4      =
-  - bit5      = Ready
-  - bit6	= 		
-  - bit7(MSB) =

0x389

- B0 = Battery Voltage (as seen by the charger), needs to be scaled x 2, so can represent up to 255*2V; used to monitor battery during charge	
- B1 = Charger supply voltage, no scaling needed	
- B6 = AC Supply Current x 10	
- B7 = DC side current x 10 (should equal commanded current)

0x38A

- B0 = temp x 2?	
- B1 = temp x 2?	
- B3 = EVSE Control Duty Cycle (granny cable ~26 = 26%)

   


Parallel charger control:

One can use several chargers in parallel each on its own AC phase line.

Charger works good with simple 12V square PWM signal derived from DUE. So to control chargers in parallel i just need to send fake CP signal into DUE and sense the square weave to output two identical square weaves on other PWM pins. Chargers will respond to 0x286 request.


Charger voltage control:

Charger voltage control is dependent on reading its voltage reports on telegram 0x

First i request listening to CAN in main function. Of course variables need to be declared...

CAN_FRAME incoming;

if (Can0.available() > 0) {
    Can0.read(incoming);
    if (incoming.id == 0x389) {
        voltage = incoming.data.bytes[0];
        Ctemp = incoming.data.bytes[4];      
    }
    if (incoming.id == 0x377){
        aux1 = incoming.data.bytes[0];
        aux2 = incoming.data.bytes[1];  
        auxvoltage = ((aux1 * 256) + aux2); //recalculate two bit voltage value
    }  
}


I request charger command telegram function and within i condition for high voltage reduction and stop.

void sendCANframeA() {
	outframe.id = 0x286; // Set our transmission address ID
	outframe.length = 8; // Data payload 8 bytes
	outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
	outframe.rtr=1; //No request
	outframe.data.bytes[0]=0x28;
	outframe.data.bytes[1]=0x0F; // 0F3C=3900, 0DDE=3550, 0,1V/bit

	if(voltage < 193) { // if Charger senses less than 386V
		outframe.data.bytes[2]=0x78; // 78=120 12A, 50=80 8A, 32=50 5A, 1E=30, 3A 14=20 2A at 0,1A/bit
	}
	else if(voltage <= 194) { // if Charger senses less than or equal 388V
		outframe.data.bytes[2]=0x1E;
	}
	else {  //any other case
		outframe.data.bytes[2]=0x00;
	}

	outframe.data.bytes[3]=0x37; // why 37?
	outframe.data.bytes[4]=0x00;
	outframe.data.bytes[5]=0x00;
	outframe.data.bytes[6]=0x0A;
	outframe.data.bytes[7]=0x00;

	if(debug) {printFrame(&outframe,1); } //If the debug variable is set, show our transmitted frame

	if(myVars.CANport==0) Can0.sendFrame(outframe); //Mail it

	else Can1.sendFrame(outframe);
}


DCDC aux voltage control

I can also control 12V aux battery charging by reading DCDC report on 0x377. When aux voltage drops too much i can start DCDC or 3 minutes and 12V battery gets charged up.

if (auxvoltage < 1200) { // if aux voltage is low and DCDC is off
    auxState = true; // set the flag to true

    elapsedtime = millis();
}

DCDCauxcharge();


Within this function then i compare status and count down 3min for the charge event

void DCDCauxcharge() {

    if ((auxState == true) && (digitalRead(Enable_pin) == LOW)) { // auxvoltage went below 12.2V
        digitalWrite(DCDC_active, HIGH);

        if (millis() - elapsedtime >= ontime) { // if aux voltage is low and for 5min
            digitalWrite(DCDC_active,LOW); // turn off DCDC_active relay

            elapsedtime = millis();
            auxState = false;
        }
    }
    else { // if auxvoltage is OK
        auxState = false; // turn off DCDC_active relay
    }
}


Lots of other functions can be prepared on basis of CAN report reading. Those are some functions that are usefull.

References