Jaguar Ipace ISA shunt

Jaguar / Landrover hardware hacking
Post Reply
arber333
Posts: 3241
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 74 times
Been thanked: 223 times
Contact:

Jaguar Ipace ISA shunt

Post by arber333 »

You may remember i pulled the ISA shunt from IPACE battery assembly together with two Gigavac GV200-051 contactors.
There was also a LEM DHAB S/159 current sensor in the same box on the same connector. That seemed strange.

So i went and tried to connect ISA shunt. I got it 12V and its CAN came to life. Surprise surprise! CAN bus IDs are not the ones that Isabellenhutte is saying in its manual. But i can see they should be configurable.

For now i get this msgs:
03C3 00 01 FF FF FF EB
03D2 04 06 00 00 00 D6

03D2 stays pretty much the same even if i apply current.
But 03C3 reacts to current flowing through it. For a start i gave it a small 12V light bulb which i see pulls 1.7A. And i get response
03C3 00 02 FF FF F8 C4

I see i will have to test this further with known loads and log results. But i see that FF FF FF FF is an area for reporting current. I will just have to see how accurate this is.
Attachments
IMG_20201218_223929.jpg
IMG_20201218_223937.jpg
tom91
Posts: 1272
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 97 times
Been thanked: 201 times

Re: Jaguar Ipace ISA shunt

Post by tom91 »

Very accurate.

So you do: FFEB(65515) - F8C4(63684) = 727 (1831)

So It is reporting back 1831 mA
Founder Volt Influx https://www.voltinflux.com/
arber333
Posts: 3241
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 74 times
Been thanked: 223 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by arber333 »

tom91 wrote: Sat Dec 19, 2020 11:26 am Very accurate.

So you do: FFEB(65515) - F8C4(63684) = 727 (1831)

So It is reporting back 1831 mA
Yes i figured it needs substraction instead of addition :). Thank you.
It seems EB is not a valid end since this byte value is jumping quite a bit. So it seems this is quite enough for Chademo use or inverter power reporting for that matter.
I still have to see what happens if i show it the regen.
I will try to make a setup from within my car and try to vary load to get a sort of calibration for it. One PTC heater will draw close to 50A so this will be a known value + the car.

Now to figure what the other ID is for. Maybe a sort of Overcurrent signal? It will be tough to confirm.
I also need to try if i can get it to accept custom IDs from ISA manual. That way we can set up new msgs to drive various car dials.

Sadly this shunt doesnt have any HV voltage measurement. But that would be too much luck :).
tom91
Posts: 1272
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 97 times
Been thanked: 201 times

Re: Jaguar Ipace ISA shunt

Post by tom91 »

If you feed it the current the other way the value should jump to 00 00 07 XX or something like that.
Founder Volt Influx https://www.voltinflux.com/
arber333
Posts: 3241
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 74 times
Been thanked: 223 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by arber333 »

Ok i tried progresively with H7 light bulbs that i have here plenty.

1x H7 Light bulb at 13,65Vdc draws 4.25A and that translates to ID 03C3 msg 00 0F FF FF EE BC.
So i get 4399mA! Quite good i think.
2x H7 Bulbs were drawing 8.55A according to my power supply which gave ID 03C3 msg 00 0E FF FF DD 77.
Which i calculated to 8820mA!
I now used 1x H7 and one H4 bulb with both elements lit. This setup had a draw of 14.5A. I got 14791mA draw on ISA shunt.
Next one 2x H7 and one dual H4 bulb for 18.2A. I got 18763mA on ISA.

Then i reversed the current and reduced load.
With 18.2A load i got 18667mA! ID 03C3 msg 00 00 00 00 48 EB
With 14.25A i got 14534mA.
With 8.5A i got 8741mA.
Last one for the day was 4.35A for msg at 4418mA!

Really accurate at low end. Next i will setup my PTC heater and try to load my cars 12V wiring with it.
Attachments
IMG_20201219_230111.jpg
User avatar
EV_Builder
Posts: 1199
Joined: Tue Apr 28, 2020 3:50 pm
Location: The Netherlands
Has thanked: 16 times
Been thanked: 33 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by EV_Builder »

Do you have a partnumber? And do we know which version this is?
(Max current?)
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
arber333
Posts: 3241
Joined: Mon Dec 24, 2018 1:37 pm
Location: Slovenia
Has thanked: 74 times
Been thanked: 223 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by arber333 »

EV_Builder wrote: Thu Nov 25, 2021 8:57 am Do you have a partnumber? And do we know which version this is?
(Max current?)
P/N cant be seen but i am certain it is 500A version! It has small ears.
EDIT: Here is the P/N
https://leafdriveblog.wordpress.com/tag ... ousel-1569
LRBen
Posts: 471
Joined: Thu Jul 04, 2019 6:35 pm
Location: Somerset, UK
Has thanked: 42 times
Been thanked: 99 times

Re: Jaguar Ipace ISA shunt

Post by LRBen »

I picked up one of these last month with that batch of ISA shunts that Zero EV were selling. Currently just trying to get SIMP BMS to read it but I think I am messing up endiness and concatenation

Code: Select all

case 0x3C3: //
          CANmilliamps = (inMsg.buf[2| inMsg.buf[3] ) - (inMsg.buf[4] | inMsg.buf[5]); 
This is my base, I can get some nonsense readings by moving the bits up and down but I feel like this base code should be working. Does this look correct to anyone?
User avatar
EV_Builder
Posts: 1199
Joined: Tue Apr 28, 2020 3:50 pm
Location: The Netherlands
Has thanked: 16 times
Been thanked: 33 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by EV_Builder »

Doesn't make much sense to me tobe honest. 8-)

The first thing Todo is construct the number from the bytes.
If two bytes are used: Byte 1 + (Byte 2 <<8)
Or if it's 3 or 4 you add another byte << 16 + byte <<24.
Puzzle with which byte you move etc.

Next thing is the scaling. Each digital increment is it 0,001 amp? Or any other factor. Then you do the math with that.
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
tom91
Posts: 1272
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 97 times
Been thanked: 201 times

Re: Jaguar Ipace ISA shunt

Post by tom91 »

So what you need to do is the same as the ISA shunt implementation in my code

Code: Select all

case 0x521: //
          CANmilliamps = inMsg.buf[5] + (inMsg.buf[4] << 8) + (inMsg.buf[3] << 16) + (inMsg.buf[2] << 24);
          if ( settings.cursens == Canbus)
          {
            RawCur = CANmilliamps;
            getcurrent();
          }
          break;
Just add this as the option in the sections that decodes the canbus under the selected "if (settings.curcan == 3)", which is active when you set it to ISA Scale.
Founder Volt Influx https://www.voltinflux.com/
LRBen
Posts: 471
Joined: Thu Jul 04, 2019 6:35 pm
Location: Somerset, UK
Has thanked: 42 times
Been thanked: 99 times

Re: Jaguar Ipace ISA shunt

Post by LRBen »

So I have added this to if (settings.curcan == 3). When it works it should then be able to read this shunt when ISA scale is selected.

I don't feel like I should be needing moving bytes around, as they are all in the order they need to be in for concatenation.
In theory this code should read Canbus message 03C3 msg 00 0F FF FF EE BC for example.
Then concatenate and calculate: FFFF - EEBC.

Code: Select all

case 0x3C3: // Jaguar Ipace ISA shunt current reading
          CANmilliamps = (inMsg.buf[2] | inMsg.buf[3]) - (inMsg.buf[4] | inMsg.buf[5]);
          if ( settings.cursens == Canbus)
          {
            RawCur = CANmilliamps;
            getcurrent();
          }
          break;
User avatar
EV_Builder
Posts: 1199
Joined: Tue Apr 28, 2020 3:50 pm
Location: The Netherlands
Has thanked: 16 times
Been thanked: 33 times
Contact:

Re: Jaguar Ipace ISA shunt

Post by EV_Builder »

LRBen wrote: Fri Aug 05, 2022 5:08 pm So I have added this to if (settings.curcan == 3). When it works it should then be able to read this shunt when ISA scale is selected.

I don't feel like I should be needing moving bytes around, as they are all in the order they need to be in for concatenation.
In theory this code should read Canbus message 03C3 msg 00 0F FF FF EE BC for example.
Then concatenate and calculate: FFFF - EEBC.

Code: Select all

case 0x3C3: // Jaguar Ipace ISA shunt current reading
          CANmilliamps = (inMsg.buf[2] | inMsg.buf[3]) - (inMsg.buf[4] | inMsg.buf[5]);
          if ( settings.cursens == Canbus)
          {
            RawCur = CANmilliamps;
            getcurrent();
          }
          break;
:?:
If you 'or' then all ones survive in the result. That doesn't make sense at all todo here.
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
LRBen
Posts: 471
Joined: Thu Jul 04, 2019 6:35 pm
Location: Somerset, UK
Has thanked: 42 times
Been thanked: 99 times

Re: Jaguar Ipace ISA shunt

Post by LRBen »

Bit more on this. I tried to reset it to defaults via canbus commands, and I am pretty sure the canbus message ID are hard coded as even resetting to defaults doesn't cause them to change.

Will take another look at getting SIMPBMS to read the current soon and update.
modellfan
Posts: 34
Joined: Tue Jul 12, 2022 11:20 am
Has thanked: 3 times
Been thanked: 5 times

Re: Jaguar Ipace ISA shunt

Post by modellfan »

Second value it sends is the temperature. Assuming, that the operation for both values is the same , we need to change signs for the proposed solution above.

Code: Select all

        switch (message.id)
        {
        case 0x3c3:
            current = (int32_t)(((message.data[4] << 8) + (message.data[5])) - ((message.data[2] << 8) + (message.data[3])));
            Serial.print("Current: ");
            Serial.println(current);
            break;
        case 0x3D2:
            temp = (int32_t)(((message.data[4] << 8) + (message.data[5])) - ((message.data[2] << 8) + (message.data[3])));
            Temperature = temp / 10;
            Serial.print("Temperature: ");
            Serial.println(Temperature, 2);
        default:
            break;
        }
LRBen
Posts: 471
Joined: Thu Jul 04, 2019 6:35 pm
Location: Somerset, UK
Has thanked: 42 times
Been thanked: 99 times

Re: Jaguar Ipace ISA shunt

Post by LRBen »

Got it working with SIMP BMS.

Code: Select all

case 0x3C3: // Jaguar Ipace ISA shunt current reading
          CANmilliamps = inMsg.buf[5] + (inMsg.buf[4] << 8) + (inMsg.buf[3] << 16) + (inMsg.buf[2] << 24);
          if ( settings.cursens == Canbus)
          {
            RawCur = CANmilliamps;
            getcurrent();
          }
          break;
tom91
Posts: 1272
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 97 times
Been thanked: 201 times

Re: Jaguar Ipace ISA shunt

Post by tom91 »

Yes this code works, as I proposed a few posts back. I have this also working in the EVS-BMS firmware already.

If anyone wants this it can be push requested per SimpBMS firmware.
Founder Volt Influx https://www.voltinflux.com/
User avatar
marcexec
Posts: 121
Joined: Tue May 14, 2019 12:52 pm
Location: Dublin, Ireland
Has thanked: 516 times
Been thanked: 45 times

Re: Jaguar Ipace ISA shunt

Post by marcexec »

I also have a IVT-S-500-U0-I-CAN2 that I bought used.
Thanks for sharing the above, it works for me on the iPDM56 ("frame" there):

Code: Select all

void handle_can1_frame(const CAN_FRAME &frame)
{
switch (frame.id)
        {
        case 0x3c3:
            current = (int32_t)(((frame.data.bytes[4] << 8) + (frame.data.bytes[5])) - ((frame.data.bytes[2] << 8) + (frame.data.bytes[3])));
            Serial.print("Current: ");
            Serial.println(current);
            break;
        case 0x3D2:
            temp = (int32_t)(((frame.data.bytes[4] << 8) + (frame.data.bytes[5])) - ((frame.data.bytes[2] << 8) + (frame.data.bytes[3])));
            temperature = temp / 10;
            Serial.print("Temperature: ");
            Serial.println(temperature, 2);
        default:
        	Serial.print("CAN1 received frame ");
	        print_frame(frame);
	        Serial.println();
          break;
        }


}
I'm getting

Code: Select all

Current: 79
Temperature: 10100
CAN1 received frame id=0x3D2 0x4 0x4 0x0 0x0 0x0 0xD0 0x0 0x0
on the serial monitor.
I gather it doesn't have a useful temperature reading or am I doing the calc wrong?
Also any idea what's behind 0x3D2 on the iPace's config? Is it worth trying to reset the shunt to factory? Or just ignore this one?
A motorcyclist is never late, Frodo Baggins. Nor is he early. He arrives precisely when he means to.
Getting started guide for Celeron55's iPDM56
My Suzuki RF400 build @ES
Honda IMA & Lebowski howto
Image
Post Reply