So i have the cabin heater hooked up on a circulating water loop taking in the cabin matrix, a pump, the heater and a small expansion bottle Teed in.
It works ok but i wanted to check against other peoples experiences with it as it. It gets mid-warm after 5 or so minutes, enough to take the chill off the car and demist, but not toasty. In the outlander was this the only form of cabin heating or did the engine provide some too ?
Does it matter which way the water runs through the heater. I note my in temp is higher than my out, suggesting it may be running it the wrong way.
Does the orientation matter, i have it mounted horizontally.
When i fire it up in high heat mode the in & out temps rise gradually over 5 minutes to say 40 or more and are generally only 1 or 2 degrees apart. I did put a pwm controller on the pump to slow it down to half speed as i wondered of the water circulating too quickly was an issue.
Does this sounds like its work as well as it should or are other getting real hot air from it ?
thanks
Outlander cabin heater
-
- Posts: 321
- Joined: Mon Jul 25, 2022 7:59 pm
- Location: Bicester, Oxfordshire
- Has thanked: 8 times
- Been thanked: 46 times
Outlander cabin heater
E46 touring
Phev rear motor, OEM inverter cabin heater and charger
BMW 9kwh & 12kwh packs
Phev rear motor, OEM inverter cabin heater and charger
BMW 9kwh & 12kwh packs
-
- Posts: 3265
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 80 times
- Been thanked: 234 times
- Contact:
Re: Outlander cabin heater
Can you put oem issues under specific oem section next time?
Orientation doesnt matter. One sensor is on the in and one on the out. I use middle value from both.
Something is interfeering with Your 0x285 telegram. Under full power and good flow you should reach 55deg in 2 minutes.
I noticed the same behaviour with mine. I connected current clamps over it and saw current move on and off per second as circuit was switching on and off.
This as well as you need to deair your system matrix too. For this you need pump at full power. This meant a lot for me.
Solution with 0x285 was to put it on a different hw timer that fired at 10ms independently from other code which was at 100ms or so. For that i had to rethink the teensy code quite a bit.
For DUE code i havent had any issues as i used timerinterrupt line at 10ms
Orientation doesnt matter. One sensor is on the in and one on the out. I use middle value from both.
Something is interfeering with Your 0x285 telegram. Under full power and good flow you should reach 55deg in 2 minutes.
I noticed the same behaviour with mine. I connected current clamps over it and saw current move on and off per second as circuit was switching on and off.
This as well as you need to deair your system matrix too. For this you need pump at full power. This meant a lot for me.
Solution with 0x285 was to put it on a different hw timer that fired at 10ms independently from other code which was at 100ms or so. For that i had to rethink the teensy code quite a bit.
For DUE code i havent had any issues as i used timerinterrupt line at 10ms
- Bigpie
- Posts: 1595
- Joined: Wed Apr 10, 2019 8:11 pm
- Location: South Yorkshire, UK
- Has thanked: 75 times
- Been thanked: 304 times
Re: Outlander cabin heater
Mine gets pretty toasty. Can logs will help
VW Beetle 2003
Outlander front generator
Prius Gen 3 inverter (EVBMW logic board)
Outlander charger
3x Golf GTE batteries
Chademo Charging
Outlander water heater
Outlander front generator
Prius Gen 3 inverter (EVBMW logic board)
Outlander charger
3x Golf GTE batteries
Chademo Charging
Outlander water heater
-
- Posts: 321
- Joined: Mon Jul 25, 2022 7:59 pm
- Location: Bicester, Oxfordshire
- Has thanked: 8 times
- Been thanked: 46 times
Re: Outlander cabin heater
i think my 285 was going out about every 60 msec so i've improved that to around 25 but i'll have to optimise some code to get it quicker but there is scope for that. I'll see if this improves it and i'm barking up the right tree. thanks for the advice.
I think i've got all the air out, i've got the expansion tank which will allow air out, and a bleed tap on the other side of the loop so i'm thinking that is ok, though it wasn't with the first design.
I think i've got all the air out, i've got the expansion tank which will allow air out, and a bleed tap on the other side of the loop so i'm thinking that is ok, though it wasn't with the first design.
E46 touring
Phev rear motor, OEM inverter cabin heater and charger
BMW 9kwh & 12kwh packs
Phev rear motor, OEM inverter cabin heater and charger
BMW 9kwh & 12kwh packs
-
- Posts: 3265
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 80 times
- Been thanked: 234 times
- Contact:
Re: Outlander cabin heater
Outlander Heater needs faster heartbeat than most other electronics curiously. I dont know why is that, empyric evidence suggests it is so.
This code is for DUE, what did you say you use again?
First declare duetimer library
Code: Select all
#include <DueTimer.h> //https://github.com/collin80/DueTimer
Code: Select all
Timer4.attachInterrupt(sendCANframeURGENT).start(10000); // This sets an interrupt time to send an URGENT CAN frame every 10ms. The function can be changed and the time can be changed.
-
- Posts: 3265
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 80 times
- Been thanked: 234 times
- Contact:
Re: Outlander cabin heater
Heater my code for Teensy 4.1
Call timer interval after library declarations
Declare function
In setup function set timer
Make BMS heartbeat timer function
Call timer interval after library declarations
Code: Select all
// Timer for BMS heartbeat
IntervalTimer BMStimer;
Code: Select all
void bmsComms(); // Comms to the BMS heartbeat
Code: Select all
BMStimer.begin(bmsComms, 10000);
Code: Select all
void bmsComms()
{
msg.id = 0x285;
msg.len = 8;
msg.buf[0] = 0x00;
msg.buf[1] = 0x00;
if (BMS_Status == 3)
{
msg.buf[2] = 0xB6; //We are charging
}
else if (BMS_Status == 5)
{
msg.buf[2] = 0x00; // Errors!!
}
else
{
msg.buf[2] = 0x14; // Else is driving or at ignition
}
msg.buf[3] = 0x39;
msg.buf[4] = 0x91;
msg.buf[5] = 0xFE;
msg.buf[6] = 0x0E;
msg.buf[7] = 0x10;
Can2.write(msg);
}