Page 19 of 19

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Sat Oct 11, 2025 9:03 pm
by arber333
midway wrote: Fri Aug 08, 2025 9:36 am I also noticed a small difference from replacing inverters. Newer ones give more torque.
Today i went to replace the inverter to test if newer had more torque.
I removed the cables and inverter itself. I replaced my older inverter P/N 9410A081 with newer model P/N 9410A163 from 2020. After a short drive later this evening it really seems the takeoff is somewhat more powerful.
Megane is quite a bit heavier than Mazda, 1800kg vs 1200kg and 400kg more is showing no matter how i go at the throttle code. I will elaborate later...

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Mon Nov 24, 2025 8:32 pm
by arber333
Another update... I just went to drive Mazda and Megane with temperature outside about 0degC! I noticed several details at that temperature...
1. DCDC module wouldnt give 14V but rather 13.5Vdc near 0degC
2. Inverter would give less power at start by feeling, although it would still spin wheels at start if i press it...
3. I couldnt get more than 100km/h at reasonable power and acceleration. After that i would have to beg it upwards of 130km/h
It seems Mitsu components are protecting the battery and aux battery...

@midway, aot93, did you notice anything similar with your setup?

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Thu Nov 27, 2025 8:50 am
by arber333
To further elaborate...
Today with Mazda and Megane at temperatures at 6degC both cars operated at full capacity. No firmware change.

I also compared heaters that i use on both cars...
on Mazda i use P/N 7807A021
This heater draws about 8.5A which is about 3kW of power with the same telegram from here... https://openinverter.org/forum/viewtopi ... 728#p33728

on Megane however i use P/N 7807A053
This heater draws about 12A with the same CAN command telegram. That is in the range of 4.5kW and is quite comfortable even at sub zero temp...

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Thu Nov 27, 2025 8:53 am
by aot93
Interesting but it rarely gets that cold here, so I can't add anything

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Thu Nov 27, 2025 12:35 pm
by midway
Here in Siberia it's also abnormally warm, until I noticed a change in the inverter's behavior.

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Tue Dec 30, 2025 7:50 am
by arber333
Hm...
We just hit -4°C here in Slovenia!!!
As we drive to work together by our Ampera hybrid this week both my other EVs batteries are frozen solid. I do have heaters wired into BMS charging logic, but i did not consider i would have to thaw them out first. I am not inclined to push 15A into frozen battery alongside heating no matter for how short a time because there could be permanent electrode damage...

I decided to change the VCU code a bit. I would like to rewire a CAN1 to ZEVA BMS which works at 250kbps to sense when cell temperatures would be above 10degC before applying charging power... or similar. That would really make BMS connected with charger in all aspects.

But sadly i need this quick and i decided to simply add a comparator to the charging status and a manual limiting switch (previously sport switch) which is already used to limit regen in freezing temperatures...
...in "charging mode" just before HeaterComms(); i enter....

Code: Select all

    if (active_map == 1 && VCUstatus == 6) //  in charge mode chargercurrent 'limited'
    {
    chargercurrent = 0;
    }
This will limit charging in conjunction with limit switch
____________________________________________________________________________

Even better if i use charger temperature sensors with "sport" switch to limit charging when outside temperature is about 1degC.

Code: Select all

    if (active_map == 1 && DCDCTemp <= 1) //  in charge mode chargercurrent 'limited'
    {
    chargercurrent = 0;
    }
I will let you know how this works out today...
For the future i will be working on joint CAN bus with ZEVA BMS

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Sat Jan 31, 2026 8:31 pm
by arber333
From some posts back i developed new Teensy 4.1 VCU board here...
https://evmeganetech.wordpress.com/2025 ... velopment/

Part of design was curiousity and making the most out of the wiring. But i also wanted more options for controling CAN decvices such as ZEVA BMS.
My VCU allready operates on CAN2 channel and there are Inverter, Charger, Heater and AC compressor on that line.

Plan was to fully utilize ZEVA CAN reporting on channel CAN1 to gain actual Voltage, Current, Temperature and SOC reports from ZEVA.

End goal is VCU integrated BMS and CHADEMO charging which should be operating on its own CAN bus. That would be CAN3 then.

There was just ONE obstacle! And that would be my VCU couldnt read ZEVA CAN traffic. Could as well be a mile apart!!!
I tried to change CAN transciever, replacing 120R resistor, i even tested another ESP32 board connected to the same CAN.

To make long story short, i forgot that mailboxes for FlexCAN library specify which ID AND which type of message would be filtered in.
So i forgot to set them up to receive extended CAN messages....EXT.
I really needed to cleanup the code...

First i corrected some obvious mistakes.....

Code: Select all

FlexCAN_T4<CAN1, RX_SIZE_256, TX_SIZE_16> Can1;
FlexCAN_T4<CAN2, RX_SIZE_256, TX_SIZE_16> Can2;

#define NUM_TX_MAILBOXES 6
#define NUM_RX_MAILBOXES 10
There are only 16 possible mailboxes per CAN port. So i had to select between TX and RX. RX should be more important because there is true filtering going on.

Of course i forgot to setup mailbox filters to EXT so that they could sense extended IDs.
FlexCAN allows to declare two position IDs in EXT mailboxes and it will use them as EXT such as 0x28 should be automatically used as 0x00000028

Code: Select all

// setup mailbox
  Can1.setMaxMB(16);
  Can2.setMaxMB(16);


  Can1.setMaxMB(NUM_TX_MAILBOXES + NUM_RX_MAILBOXES);
  for (int i = 0; i < NUM_RX_MAILBOXES; i++)
  {
    Can1.setMB((FLEXCAN_MAILBOX)i, RX, EXT);  //CAN1 mailboxes set to receive STD and EXT messages
  }

  Can2.setMaxMB(NUM_TX_MAILBOXES + NUM_RX_MAILBOXES);
  for (int i = 0; i < NUM_RX_MAILBOXES; i++)
  {
    Can2.setMB((FLEXCAN_MAILBOX)i, RX, STD); // Only STD messages filtered
  }
  
  // open mailbox
  for (int i = NUM_RX_MAILBOXES; i < (NUM_TX_MAILBOXES + NUM_RX_MAILBOXES); i++)
  {
    Can1.setMB((FLEXCAN_MAILBOX)i, TX, EXT); //CAN1 mailboxes set to transmitt STD and EXT messages
    Can2.setMB((FLEXCAN_MAILBOX)i, TX, STD);
  }

// setup filters
  Can1.setMBFilter(REJECT_ALL);
  Can1.enableMBInterrupts();
  Can2.setMBFilter(REJECT_ALL);
  Can2.enableMBInterrupts();
 // Can3.setMBFilter(REJECT_ALL);
 // Can3.enableMBInterrupts();

  // prepare which IDs we will look for in mailbox on CAN1
  Can1.onReceive(MB0, canRX_28); // BMS Current sensor
  Can1.onReceive(MB1, canRX_1E); // BMS report
  Can2.onReceive(MB0, canRX_305); // Eltek Charger Stats
  Can2.onReceive(MB1, canRX_377); // Charger LV Stats
  Can2.onReceive(MB2, canRX_38A); // Charger LV Stats
  Can2.onReceive(MB3, canRX_389); // Charger HV Stats
  Can2.onReceive(MB4, canRX_398); // Heater Stats  
  Can2.onReceive(MB5, canRX_289); // Inverter RPM Battery and Torque
  Can2.onReceive(MB6, canRX_299); // Inverter Temps
  Can2.onReceive(MB7, canRX_732); // Inverter current
  Can2.onReceive(MB8, canRX_733); // Inverter Temps
  Can2.onReceive(MB9, canRX_388); // AC compressor HV Stats

  Can1.setMBFilter(MB0, 0x28); // message ID will be handled as extended because it is EXT mailbox
  Can1.setMBFilter(MB1, 0x1E);
  Can2.setMBFilter(MB0, 0x305);  
  Can2.setMBFilter(MB1, 0x377);
  Can2.setMBFilter(MB2, 0x38A);
  Can2.setMBFilter(MB3, 0x389);
  Can2.setMBFilter(MB4, 0x398);  
  Can2.setMBFilter(MB5, 0x289);
  Can2.setMBFilter(MB6, 0x299);
  Can2.setMBFilter(MB7, 0x732);
  Can2.setMBFilter(MB8, 0x733);
  Can2.setMBFilter(MB9, 0x388);  
Now that i received something i setup reading functions to gather data. Of course data was in form of 16bit and 24bit integers. Because there would be some aritmetic involved i decided to use float values

For the current sensor ther is an offset to allow positive and negative values. I prepared equasion to substract offset and divide by milliAmps.
The EVMS should receive battery current over CAN bus on ID 40. The packet contains a single 24-
bit value (big endian format) for instantaneous battery current, in milliamps. The value is unsigned
but with a 8388608 offset, i.e subtract this number from the received value to get a signed value
for current in milliamps.

Code: Select all

float BMS_24current = 0; // current value is 24bit value for milliamps
float BMS_voltage = 0; // voltage value is 16bit value for 0.1V
float BMS_SOC = 0; // value is 16bit value for 0.1Ah
uint8_t BMS_temp = 0; // Temperature of the BMS - 40
.....

void canRX_28(const CAN_message_t &msg) // receive telegram ID40 in 24bit value
{
BMS_24current = (((msg.buf[0] << 16) | (msg.buf[1] << 8) | msg.buf[2]) - 8388608) / 1000.0f; // 8388608 is sensor offset!
}

// We need to receive voltage as well
void canRX_1E(const CAN_message_t &msg) // receive telegram ID30 in 16bit value
{
BMS_error = msg.buf[0]; // We also receive the error status from byte 0
BMS_SOC = ((msg.buf[1] << 8) | msg.buf[2]) / 10.0f; // SOC status in AH value
BMS_voltage = ((msg.buf[3] << 8) | msg.buf[4]) / 10.0f; // Voltage
BMS_temp = (msg.buf[7]) - 40; // Voltage
}
Result is a good value in serial report. Evident from screenshots...
Works with heater on as well as in charging bome with negative value current report.

Now i can move to another step with CHADEMO signal programming.

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Mon Mar 16, 2026 7:10 am
by lumonic
arber333 wrote: Mon Sep 29, 2025 8:49 am I made my own design now with the same form and signal pinout in mind. That way if i would replace first VCU with my board the thing would directly work with the teensy chip and cable harness. The only difference would be the new expanded input, output pins with two new analog pins.
Do you have a BOM for the PCBA? I didnt see anything in the folder with the gerbers.

-Jerry

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Mon Mar 16, 2026 10:23 am
by arber333
lumonic wrote: Mon Mar 16, 2026 7:10 am Do you have a BOM for the PCBA? I didnt see anything in the folder with the gerbers.

-Jerry
No its a prototype for now. To be made for hand assembly. There is perfectly enough data in pcb file for that.
When i get everything to how i want it i will publish schematic and BOM too.

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Tue Mar 17, 2026 7:32 am
by lumonic
OK, I need to download the software to read that file. I mostly use altium for work.

Re: Outlander VCU - Rear inverter, Charger and BMS

Posted: Fri Mar 27, 2026 7:57 pm
by arber333
lumonic wrote: Tue Mar 17, 2026 7:32 am OK, I need to download the software to read that file. I mostly use altium for work.
the hex file from my tests. For now this works with Outlander components on CAN2 and ZEVA BMS on CAN1