BMW i3 Inverter: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
(Added paragraphs explaining code update to fix SPI communication with gate driver board.)
No edit summary
Line 287: Line 287:
'''Gate Driver Board - SPI Commication'''
'''Gate Driver Board - SPI Commication'''


The BMW gate driver board communicates the DC bus voltage (ie traction battery voltage) and IGBT heatsink temperatures to the Openinverter via SPI.
The BMW i3 gate driver board communicates the DC bus voltage (ie traction battery voltage) and IGBT heatsink temperatures to the Openinverter via SPI.


On the Openinverter mini mainboard, pin 17 on JP2 is used for the SPI Clock signal, instead of its default assignment as 'Error Output'.
On the Openinverter mini mainboard, pin 17 on JP2 is normally used as an 'Error Output'. When used with the BMW i3, this pin must instead be used for the SPI Clock signal.


To avoid the clock signal being pulled high or low by the pin acting as an Error Output, find this section of code in vehiclecontrol.cpp:<syntaxhighlight lang="cpp">
To avoid the clock signal being pulled high or low by the pin acting as an Error Output, find this section of code in vehiclecontrol.cpp:<syntaxhighlight lang="cpp">
Line 296: Line 296:




</syntaxhighlight>and insert this below it to disable the Error Output:<syntaxhighlight lang="cpp">
</syntaxhighlight>and insert these lines of code below it, to disable the Error Output:<syntaxhighlight lang="cpp">
//Disable err_out so it doesn't pull the clock signal up or down
//Disable err_out so it doesn't pull the clock signal up or down
DigIo::err_out.Configure(GPIOC, GPIO10, PinMode::INPUT_FLT);
DigIo::err_out.Configure(GPIOC, GPIO10, PinMode::INPUT_FLT);

Revision as of 23:07, 24 December 2023

BMW I3 inverter

BMW I3 inverter

Forum thread: https://openinverter.org/forum/viewtopic.php?p=23214#p23214

BMW i3™ inverter drop-in board Available

https://openinverter.org/shop/index.php?route=product/product&product_id=72

Pinout for Ampseal Plug
Pin No Assigniment Description
1 12V
2 BRAKE_IN
3 PRECHARGE_OUT
4 CANL
5 CANH
6 DCSW_OUT
7 FORWARD_IN
8 REVERSE_IN
9 5V (OUT)
10 RESOLVER_S2/ENCODER_A Sin Hi
11 GND
12 RESOLVER_S1 Sin Lo
13 THROTTLE1
14 THROTTLE2
15 RESOLVER_R1 Ex Hi
16 RESOLVER_S3/ENCODER_B Cos Hi
17 MTEMP+
18 MTEMP-
19 RESOLVER_S4 Cos Lo
20 EMCYSTOP_IN
21 GND
22 RESOLVER_R2 Ex Lo
23 START_IN


There are 2 variants of the i3. one with the REX and one with out.

the REX variant has a additional 25kw inverter to run the onboard generator.

Power stage: Infineon FS800R07 IGBTs rated for 800amps 650v


Gate Driver Board

Gate Driver Board Pin out
Pin No I/O Description Notes Pin No I/O Description Notes
1 21 GND Switching Mosfets ?
2 I 32V in 22 GND Switching Mosfets ?
3 I 32V in 23
4 I IGBT A HI 24
5 I IGBT A LOW 25
6 I CS (ADC) 26 GND IGBT Driver ground
7 I SDI 27 GND IGBT Driver ground
8 I SDO 28 GND IGBT Driver ground
9 I SCK 29 GND IGBT Driver ground
10 I IGBT B HI 30 GND IGBT Driver ground
11 I IGBT B LOW 31 GND IGBT Driver ground
12 I IGBT C HI 32 GND IGBT Driver ground
13 I IGBT C LOW 33 5V IGBT Driver Power
14 34 5V IGBT Driver Power
15 35 I IGBT PSU 12V on
16 O IGBT DRIVER UVW Upper Ready 36 O IGBT Driver Fault
17 O IGBT DRIVER UVW Lower Ready 37 I 5V LEM Current sensor Power
18 O Current Sense C Signal 38 GND Current sensor Ground
19 O Current Sense B Signal 39 GND Current sensor Ground
20 O Current Sense A Signal 40 GND Current sensor Ground


Gate Driver Board - SPI Commication

The BMW i3 gate driver board communicates the DC bus voltage (ie traction battery voltage) and IGBT heatsink temperatures to the Openinverter via SPI.

On the Openinverter mini mainboard, pin 17 on JP2 is normally used as an 'Error Output'. When used with the BMW i3, this pin must instead be used for the SPI Clock signal.

To avoid the clock signal being pulled high or low by the pin acting as an Error Output, find this section of code in vehiclecontrol.cpp:

//Brake pin is used as SPI_MISO
DigIo::brk_out.Configure(GPIOC, GPIO5, PinMode::INPUT_FLT);

and insert these lines of code below it, to disable the Error Output:

//Disable err_out so it doesn't pull the clock signal up or down
DigIo::err_out.Configure(GPIOC, GPIO10, PinMode::INPUT_FLT);

Motor Resolver & Temperature Sensors

12-pin PCB header to connect to the motor sensors is an ERNI MiniBridge, part number 294920

Suspected wire colours to pin allocation below determined by schematic and multimeter trace, with resolver coils and temperature sensors checked for resistance.

Note as of 03 December 2023 this pinout has only been checked by manually rotating motor, but not under powered operation.

ERNI Minibridge Connector. Dots indicate pin 1.
Pinout for ERNI Microbridge
Pin No Colour Description Notes
1 Brown Sin Hi Twisted pair. 22.4 - 33.6 Ω.
2 Blue Sin Lo
3 Yellow Ex Hi Twisted pair. 22.4 - 33.6 Ω
4 Green Ex Lo
5 Red Cos Hi Twisted pair. 13.6 - 20.4 Ω
6 White Cos Lo
7 Blue Temperature

Sensor

From BMW Service Technical Training Manual - I01 High-voltage Components:

There are two stator coil temperature sensors.

The rotor temperature is determined using readings from the stator temperature sensors.

8 Grey
9 Red Temperature

Sensor

10 Grey
11 - Unused These wires terminate in one of the six pin connectors in the motor housing. There is nothing connected to them.
12 - Unused