Mitsubishi Outlander PHEV heater

Mitsubishi hybrid drive unit hacking
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Bigpie wrote: Fri Nov 05, 2021 5:29 pm New log from a car with a heater, sadly a 2014.
What is ID 0x154? I see data FF,FF,E1,FF,FF,1B,98,25.
I have a hunch we need 5x full power on our heater elements so use FF as values. Might be worth a try.
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Duno, will have a play tomorrow. I've found someone with a 2016 willing to log but got to post him and arduino and mcp2515 on perf board

**EDIT**
Tested your hunch with 0x154 -> FF FF FF FF FF 1B 98 25 and no cigar :(
Should have a log from a 2016 with the heater running next weekend.
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Bigpie wrote: Fri Nov 05, 2021 8:58 pm Duno, will have a play tomorrow. I've found someone with a 2016 willing to log but got to post him and arduino and mcp2515 on perf board

**EDIT**
Tested your hunch with 0x154 -> FF FF FF FF FF 1B 98 25 and no cigar :(
Should have a log from a 2016 with the heater running next weekend.
Damn, the same for me. Now i found that 0x154 has something to do with immobilizer :(.
I hope you get that log...
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

arber333 wrote: Mon Nov 08, 2021 9:12 am
Bigpie wrote: Fri Nov 05, 2021 8:58 pm Duno, will have a play tomorrow. I've found someone with a 2016 willing to log but got to post him and arduino and mcp2515 on perf board

**EDIT**
Tested your hunch with 0x154 -> FF FF FF FF FF 1B 98 25 and no cigar :(
Should have a log from a 2016 with the heater running next weekend.
Damn, the same for me. Now i found that 0x154 has something to do with immobilizer :(.
I hope you get that log...
Got something to please you. I've not had chance to play it back to the heater yet, but 0x398 is in there.

0x188 and 0x207 are new IDs

0x188 would be my guess
Screenshot 2021-11-09 at 1.55.09 pm.png
Attachments
outlander-2016-heater.csv
(290.31 KiB) Downloaded 203 times
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Its 0x188 that turns it on, 0x285 is also required.

0x188

Code: Select all

03 50 A2 4D 00 00 00 00 
Byte 1 (0x50) could be target temperature?

Attached is the required IDs
Attachments
outlander-2016-heater-smaller.csv
(1.57 KiB) Downloaded 219 times
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

byte 2 seems to control power/temperature but not sure how yet. Working on a DBC file: https://github.com/jamiejones85/DBC-fil ... Heater.dbc
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Bigpie wrote: Wed Nov 10, 2021 9:36 am byte 2 seems to control power/temperature but not sure how yet. Working on a DBC file: https://github.com/jamiejones85/DBC-fil ... Heater.dbc
I see byte 0 is 0x03 would this mean status?
Would byte 1 be % of power by any chance?
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Will have to play a little more later, it get the water very warm :D
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Bigpie wrote: Wed Nov 10, 2021 11:06 am Will have to play a little more later, it get the water very warm :D
So it works? We would just need to command start and we can use heater reporting to stop CAN telegram. I will try to wire something here.
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Yea it works play back outlander-2016-heater-smaller.csv attached above it it'll get the water hot fast.
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Byte 5 is status 0x00 is not heating, 0x40 is heating.
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

https://github.com/jamiejones85/OutlanderHeaterControl can control it, it's hardcoded for 50 degrees and heating on for now, it overshoots the desired temperature but it works.
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Bigpie wrote: Wed Nov 10, 2021 4:55 pm https://github.com/jamiejones85/OutlanderHeaterControl can control it, it's hardcoded for 50 degrees and heating on for now, it overshoots the desired temperature but it works.
Thanks
I tried to use those parameters and it worked!
0x188 03 50 A2 4D 00 00 00 00
EDIT: I found out heater will also work with 500ms signal
Also i changed byte2 from A2 into
12 and i got 0.1A
22 i got 1.8A
32 i got 3.4A
42 i got 5.6A
52 i got 5.6A
62 i got 6.8A
72 i got 6.8A
82 i got 8.5A

0x389 01 3A 1D 6E 6E 38 00 00
byte1 seem to be current report of 3A = 58, so...
current= byte1(dec)/10
byte2 could be power applied. It certainly changes fast enough with current.
at byte1 55 byte2 is 2F?

I see 8A to10A current and water temp rises quickly, it went on to 6D = 109deg? Not likely! I think the value is offset by -40deg similar to the charger and DCDC. This would mean:
Temp= byte3(dec)-40
Sure enough i measured output water at 63deg with byte3/4 at 6B which is 67deg!
I stopped at temperature 6E where heater still pulled 5.8A from the battery.
My setup got quite hot, but i am really excited with it working. Now we just need to figure out how to set the temperature.
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

I got a -50 offset but will double check, rubbish eBay probe.

Would be great to figure out what the bytes do in 0x188, but I'm going to install at the weekend with arduino monitoring the 398 and just stopping 188 when over desired temperature just to get some heating. Maybe ramp the current down as it approaches the desired temperature to prevent massive overshoot.
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Way ahead of you :).
My webasto heater died on me and replacement transistors are couple of days to arrive. So i decided i will install this heater in its place.
I made a simple U mount from 2mm alu sheet and bolted it to the heater by its own bolts. To the car i bolted the mount by 3x M6 bolts, they seem to be enough. To mount the pump i needed to make separate mount so 12V pump can take the coolant in a lower level and then push it into the heater.
This means can put a simple copper tube with brass de-airing needle valve on the top.
I released air and filled the system with new coolant.

I connected the heater to HV power via the main inverters second metal connector. That originaly existed on OEM Ampera car to power the heater and AC compressor as well. To connect HV cables i used sealed solar connectors. They fit up to 5mm2 wire and are IP67 compliant. i really like them.
Then i connected the CAN cables to my harness from the charger. I prepared the 12V harness from coolant pump in the front to the heater and heating pump. Also there i prepared connectors for powering AC compressor and its CAN bus later on.
I figured i can wire the heater pump into the coolant pump circuit, so the system will operate if i decide to start the heater while i charge.
I have also prepared my CAN telegram to only come on if:
a) car is turned ON
b) heater button is on
This way i resolved possible precharge problems.

I started CAN bus 0x188 telegram and heater started to work with 10A!!! I still need to fit a simple switch to turn the heater on or off from the cabin. Maybe i can use the former cruise control button :).
I also want to implement a temp control into my DUE. I will do this by reading heater temp report and ammending the byte2 from A2 to 32 or 00 when some threshold will be reached.

Code: Select all

               
               if(Heatertemp > 70) { // if temp is higher than 70deg
        outframe.data.bytes[2]=0x00; // when 70deg power goes to 0A
        } 
        else if(Heatertemp > 65) { // if temp is higher than 65deg
        outframe.data.bytes[2]=0x32; // seems to be current command (dec/10)
        }         
        else {
        outframe.data.bytes[2]=0xA2;
        }      
Attachments
20211113_221513.jpg
20211113_192338.jpg
20211113_170036.jpg
20211113_170027.jpg
20211113_170021.jpg
User avatar
Bigpie
Posts: 1707
Joined: Wed Apr 10, 2019 8:11 pm
Location: South Yorkshire, UK
Has thanked: 77 times
Been thanked: 369 times

Re: Mitsubishi Outlander PHEV heater

Post by Bigpie »

Nice. I've knocked this up, but now has and LED indicator too. First 100 ADC values are off, then the rest mapped between 55 and 80 degrees. I think I'll incorporate your value change as it approaches the desired temperature.

Started making up some brackets today, hopefully get it mounted tomorrow and start wiring it up.

I like the bleed valve idea, might have to get one.
Attachments
20211111_132922.jpg
BMW E91 2006
ZombieVerter
GS450h
Outlander Charger DC/DC
Renault Kangoo 36kWh battery
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Ok i wired former cruise control button with a relay in my car to start heater function inside my code.
I deided to signal GND into my DUE where heater pin is pulled up internaly. That way i can safely interact with 12V level signals in the car.

It works really well. I have also implemented the temp control code for additional safety.
I really like this heater. It is a good form factor and easy to communicate device.

Tomorrow I will report how it works inside the car while driving. I will also see how much it taxes me with range on the road.
Attachments
20211114_200235.jpg
20211114_200156.jpg
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

I see now that heater gets quite high in temperature while this is not neccessary and wastes energy that could be used for traction. Water heating constant at 4200kJ/kgK is a lot per K so it would be best to go as low as possible with coolant tempearure in the system. As far as heating is concerned i feel 55°C is enough for everyday use.
My first attempt to get heater to switch off at 75°C was not successfull. I will have to revisit my code. Probably i changed the variable in byte3 too often.

My next plan is to lower the transition temperature to 50°C and stop heating at 55°C. This will show me the code works and i will save energy.

EDIT: Yes latest code works good and with first step at 50deg heater temp crawls up from there at 3.8A toward 55deg and then stops. If i would increase blower setting it would stabilize at 50deg where heater still pulls whooping 12A * 388V = 4.7kW!

Code: Select all

 
void loop()
{ 
 CAN_FRAME incoming;
   if (Can0.available() > 0) {
    Can0.read(incoming);
     if(incoming.id==0x398){
      Htemp=incoming.data.bytes[3] ;
      Heatertemp=Htemp-40;
    }           
    
if (digitalRead(Enable_pin) == HIGH) { // if Enable_pin senses ignition 
  if(millis()-lastime > myVars.transmitime)  //Nominally set for 120ms - do stuff on 120 ms non-interrupt clock
    {   
     lastime=millis();        //Zero our timer
       sendCANframeD();
       printstatus(); 
       }         
digitalWrite(DCDC_active,HIGH); // turn on DCDC_active relay
} 

else {
digitalWrite(DCDC_active,LOW); // turn off DCDC_active relay
pwm.stop( 6 );
 }     
 ......................   
void sendCANframeD() { // Heater
       outframe.id = 0x188;            // 0x188 03 50 A2 40 00 00 00 00 
        outframe.length = 8;            // Data payload 8 bytes
        outframe.extended = 0;          // Extended addresses - 0=11-bit 1=29bit
        outframe.rtr=1;                 //No request
        if(digitalRead(Heater_pin) == LOW) { // if heater pin is ON 
        outframe.data.bytes[0]=0x03; // when 55deg power goes to 0A
        }     
        else {
        outframe.data.bytes[0]=0x00;
        }          
        outframe.data.bytes[1]=0x50; // 50 works
        if(Heatertemp > 55) { // if temp is higher than 55deg  
        outframe.data.bytes[2]=0x00; // when 55deg power goes to 0A
        } 
        else if(Heatertemp > 50) { // if temp is higher than 50deg
        outframe.data.bytes[2]=0x32; // seems to be current command (dec/10)
        }         
        else {
        outframe.data.bytes[2]=0xA2;
        }         
        outframe.data.bytes[3]=0x40; // 40 works 
        outframe.data.bytes[4]=0x00; //
        outframe.data.bytes[5]=0x00; // 
        outframe.data.bytes[6]=0x00;
        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); 
}
    
    
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

Well i could say the field testing was a success.
I took my car to work and ran my heater all the way there. Some highway driving and some urban too.
Result is 70% SOC where before i arrived at 75%. Road was not terribly congested and OAT was 6°C. Cabin temp was comfortable 24.5°C.
Heater would reduce drain to 4A when it came to 50°C and that was where it stayed through the whole drive.

This does not mean i will stop using Webasto fuel heater!

I guess i need to install the AC compressor now :).
arber333
Posts: 3403
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 96 times
Been thanked: 287 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by arber333 »

I have just inserted additional 8S cells to my 96S setup for final 104S config. of 420Vdc when full.

Heater doesnt want to work with that! I will investigate further and drive my voltage down under 400Vdc to test if that would be the obstacle.

EDIT: DANG! Today i went for a ride to test the heater. It only started to work after 396Vdc. Before it wouldnt start even with variation of CAN control. But under that value it operated normaly with full control.
tom91
Posts: 1741
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 149 times
Been thanked: 339 times

Re: Mitsubishi Outlander PHEV heater

Post by tom91 »

I have obtained a heater myself for developing my VCU and testing. I have access to a 3d scanner so decided to grab a quick scan of it.

This should have the "large" details on it
Image
https://grabcad.com/library/mitsubishi- ... v-heater-1
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
nkiernan
Posts: 531
Joined: Mon Feb 24, 2020 8:59 pm
Location: Ireland
Has thanked: 318 times
Been thanked: 69 times

Re: Mitsubishi Outlander PHEV heater

Post by nkiernan »

tom91 wrote: Fri Apr 08, 2022 3:16 pm I have obtained a heater myself for developing my VCU and testing. I have access to a 3d scanner so decided to grab a quick scan of it.
Cool, thank you Tom :)
User avatar
EV_Builder
Posts: 1200
Joined: Tue Apr 28, 2020 3:50 pm
Location: The Netherlands
Has thanked: 17 times
Been thanked: 35 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by EV_Builder »

Guys do we have a updated DBC file for this heater?
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
User avatar
EV_Builder
Posts: 1200
Joined: Tue Apr 28, 2020 3:50 pm
Location: The Netherlands
Has thanked: 17 times
Been thanked: 35 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by EV_Builder »

Ok, i made a handy tool to convert DBC files / sections into user (programmers) classes. 8-) 8-) 8-)

The philosophy was that we are tinkerers so we have many DBC files, but when we want to construct the canbus messages we fall into a bad coding pattern is my experience. Its often hard to read and we have no clue what we send or do (if we don't comment each line etc.).

The object takes care of the translations between settings / parameters aka properties and the actual CanBus Message.

See the attachment for this heater example :)

Usage:

Code: Select all


//Declaration

CM_0x188_Control Obj_0x188_Control;
CM_0x398_Status  Obj_0x398_Status;

//An small example

   if (Obj_0x398_Status.HeaterStatus == ENU_Heater_Not_Heating)
   {
     Obj_0x188_Control.AmpRequest +=1;
   }
   
 //We need to feed it our 8Bytes to disassemble it..
 //This is done offcourse in the callback method where we receive our canbus message etc..
 
   Obj_0x398_Status.setBytes((uint8_t*)&data[0] ); //The idea is that this is the typical 32Bit array[2] in many applications..

 //We can ask it to give back our 8Bytes constructed...
 //This is done where we are sending our messages out.
 
 uint8_t len = Obj_0x188_Control.getDataLen();
 uint8_t* pdata = Obj_0x188_Control.getBytes(); // this is the internal adress of where our constructed data is so we can simply do:
 
 objcan->Send(0x188,(uint32_t*)pdata  , len);//send on CAN1
 
I have added the DBC file used during this generation round.
Comments and ideas or improvements are welcome...

and yes the code isn't totally monkey proof and could be enhanced 10x more and more but lets check first how this goes :)
Attachments
OutlanderWaterHeater.zip
(744 Bytes) Downloaded 160 times
OutlanderWaterHeater.h
(2.43 KiB) Downloaded 140 times
OutlanderWaterHeater.cpp
(2.88 KiB) Downloaded 158 times
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
User avatar
Zapatero
Posts: 444
Joined: Fri Oct 25, 2019 11:08 am
Location: Germany, Ulm
Has thanked: 25 times
Been thanked: 39 times
Contact:

Re: Mitsubishi Outlander PHEV heater

Post by Zapatero »

How hot does the heater get on the outside. Is it ok to mount it close to painted parts?
I'm afraid this could be too close!
PXL_20220919_161953320.jpg
Post Reply