BMW i3 Inverter: Difference between revisions
m (Added categories to the page to allow for better navigation) |
(Categories) |
||
(24 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
https://openinverter.org/shop/index.php?route=product/product&product_id=72 | https://openinverter.org/shop/index.php?route=product/product&product_id=72 | ||
'''<big>Overview</big>''' | |||
There are 2 variants of the i3, the standard i3 with motor power rated at 125kW and the i3s rated at 135kW. | |||
There are 2 subvariants, as REX versions have an additional 25kw inverter and onboard generator. | |||
Power stage: [https://www.infineon.com/dgdl/Infineon-HybridPACK2_Power_Modules-PB-v01_00-EN.pdf?fileId=db3a3043353fdc16013557f17ce67b60 Infineon FS800R07] IGBTs rated for 800amps 650v | |||
'''<big>Openinverter Drop-in Board</big>''' | |||
[[File:Openinverter i3 drop-in board.jpg|thumb|300x300px|Openinverter i3 drop-in board]] | |||
The drop-in board houses the openinverter, generates 32V for the gate driver board, communicates via SPI with the gate driver board to obtain voltage and temperature readouts, and provides outputs to operate contactors. See bottom of the page for list of modifications required for these boards to work. Pinouts for the three connectors on this board below. | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 32: | Line 48: | ||
| 9|| 5V (OUT) || | | 9|| 5V (OUT) || | ||
|- | |- | ||
| 10|| RESOLVER_S2/ENCODER_A || Sin | | 10|| RESOLVER_S2/ENCODER_A || Sin Hi | ||
|- | |- | ||
| 11|| GND || | | 11|| GND || | ||
|- | |- | ||
| 12|| RESOLVER_S1 || Sin | | 12|| RESOLVER_S1 || Sin Lo | ||
|- | |- | ||
| 13|| THROTTLE1 || | | 13|| THROTTLE1 || | ||
Line 42: | Line 58: | ||
| 14|| THROTTLE2 || | | 14|| THROTTLE2 || | ||
|- | |- | ||
| 15|| RESOLVER_R1 || | | 15|| RESOLVER_R1 || Ex Hi | ||
|- | |- | ||
| 16|| RESOLVER_S3/ENCODER_B || Cos Hi | | 16|| RESOLVER_S3/ENCODER_B || Cos Hi | ||
|- | |- | ||
| 17|| MTEMP+ || | | 17|| MTEMP+ || | ||
|- | |- | ||
| 18|| MTEMP- || | | 18|| MTEMP- || | ||
|- | |- | ||
| 19|| RESOLVER_S4 || Cos | | 19|| RESOLVER_S4 || Cos Lo | ||
|- | |- | ||
| 20|| EMCYSTOP_IN || | | 20|| EMCYSTOP_IN || | ||
Line 56: | Line 72: | ||
| 21 || GND || | | 21 || GND || | ||
|- | |- | ||
| 22|| RESOLVER_R2 || | | 22|| RESOLVER_R2 || Ex Lo | ||
|- | |- | ||
| 23|| START_IN || | | 23|| START_IN || | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Gate Driver Board | |+Pinout for Gate Driver Board | ||
!Pin No | !Pin No | ||
!I/O | !I/O | ||
Line 229: | Line 236: | ||
|35 | |35 | ||
|I | |I | ||
|IGBT PSU 12V | |IGBT PSU on (5V or 12V) | ||
| | | | ||
|- | |- | ||
Line 283: | Line 290: | ||
|} | |} | ||
[[ | Note: Pin 35 is connected to a [https://openinverter.org/forum/viewtopic.php?p=69712#p69712 mosfet gate on the gate driver board] and has been tested with both 5V and 12V. | ||
'''<big>Motor Resolver & Temperature Sensors</big>''' | |||
12-pin PCB header to connect to the motor sensors is an ERNI MiniBridge, part number 294920 | |||
Wire colours to pin allocation below determined by schematic and multimeter trace, with resolver coils and temperature sensors checked for resistance. Confirmed with motor bench test. [[File:ERNI Minibridge Connector.jpg|thumb|ERNI Minibridge Connector. Dots indicate pin 1.]] | |||
{| class="wikitable" | |||
|+Pinout for ERNI Microbridge | |||
!Pin No | |||
!Colour | |||
!Description | |||
!Notes | |||
|- | |||
|1 | |||
|Brown | |||
|Sin Hi | |||
| rowspan="2" |Twisted pair. 22.4 - 33.6 Ω. | |||
|- | |||
|2 | |||
|Blue | |||
|Sin Lo | |||
|- | |||
|3 | |||
|Yellow | |||
|Ex Hi | |||
| rowspan="2" |Twisted pair. 22.4 - 33.6 Ω | |||
|- | |||
|4 | |||
|Green | |||
|Ex Lo | |||
|- | |||
|5 | |||
|Red | |||
|Cos Hi | |||
| rowspan="2" |Twisted pair. 13.6 - 20.4 Ω | |||
|- | |||
|6 | |||
|White | |||
|Cos Lo | |||
|- | |||
|7 | |||
|Blue | |||
| rowspan="2" |Temperature | |||
Sensor | |||
| rowspan="4" |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 | |||
| rowspan="2" |Temperature | |||
Sensor | |||
|- | |||
|10 | |||
|Grey | |||
|- | |||
|11 | |||
| - | |||
|Unused | |||
| rowspan="2" |These wires terminate in one of the six pin connectors in the motor housing. There is nothing connected to them. | |||
|- | |||
|12 | |||
| - | |||
|Unused | |||
|} | |||
[[File:Mod 1. - Close SJ3.jpg|thumb|Mod 1. Close SJ3]] | |||
'''<big>Modifications required to drop-in boards</big>''' | |||
Five modifications are required for the drop-in boards to work, plus an additional one if using CAN communication. | |||
'''Mod''' '''1. Close SJ3 on the openinverter board with solder''' | |||
This enables SPI communications by assigned Pin 4 on JP2 as the MOSI line. [[Mini Mainboard|Additional explanation here]]. | |||
'''Mod''' '''2. Motor Resolver & Temperature Sensor Adaptor Boards''' | |||
[[File:Ampseal board.png|thumb|300x300px|Mod 2. - Ampseal adapter board]] | |||
[[File:ERNI Microbridge adapter board.png|thumb|300x300px|Mod 2. - ERNI Microbridge adapter board]] | |||
A [https://openinverter.org/forum/viewtopic.php?p=63903#p63903 pair of adaptor boards] (see also images to right) are available and shipped with the current drop-in boards. These enable the ERNI Microbridge connector from the resolver and motor temperature sensors to be connected to the required pins on the Ampseal connector. Design files for these boards will be posted on github at some point - if you need a copy in the meantime contact user 'CJW' or post on the i3 controller hacking thread. | |||
'''Mod''' '''3.''' '''Code Update for 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:<syntaxhighlight lang="cpp"> | |||
//Brake pin is used as SPI_MISO | |||
DigIo::brk_out.Configure(GPIOC, GPIO5, PinMode::INPUT_FLT); | |||
</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 | |||
DigIo::err_out.Configure(GPIOC, GPIO10, PinMode::INPUT_FLT); | |||
</syntaxhighlight> | |||
[[File:Mod 5. - Gate driver PSU.jpg|thumb|Mod 5. - Gate driver PSU power pin]] | |||
'''Mod 4.''' '''Check solder connections on the drop-in board''' | |||
The 40 pin surface mount Harwin connector to the gate driver board may have dry joints or shorts. | |||
'''Mod 5.''' '''Gate driver PSU power pin''' | |||
Pin 35 of the Harwin connector to the gate driver board is not connected to anything. Testing indicates this must be powered for the gate driver to work, at least on some boards. The motor has been run successfully with [https://openinverter.org/forum/viewtopic.php?p=70213#p70213 5V to this pin via a 100 Ohm resistor from the adjacent pin 34], which receives power from the openinverter's 5V supply. Some earlier notes in the i3 hacking thread suggest it may also have been tested with 12V. | |||
'''Mod 6. CAN slew rate pin''' | |||
This pin is floating but needs to be [https://openinverter.org/forum/viewtopic.php?p=41110#p41110 tied to ground with a resistor] if CAN communication is used. Can be any value from like 0R to 20k, the value controls the slew rate. | |||
'''<big>Openinverter Parameters</big>''' | |||
[https://openinverter.org/forum/viewtopic.php?p=69749#p69749 This initial set of parameters] have been used for successfull bench testing a motor with a pair of lead acid car batteries. Will update and eventually post a full set of parameters here once the motor is properly set up and has been tested with a high voltage battery. | |||
'''<big>Future Development</big>''' | |||
List of tasks to be completed to enable full use of these motors: | |||
# Motor temperature sensor to be mapped and added to code | |||
# Design files for adaptor boards posted to github | |||
[[Category:BMW]] [[Category:Inverter]] |
Latest revision as of 16:34, 20 December 2024
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
Overview
There are 2 variants of the i3, the standard i3 with motor power rated at 125kW and the i3s rated at 135kW.
There are 2 subvariants, as REX versions have an additional 25kw inverter and onboard generator.
Power stage: Infineon FS800R07 IGBTs rated for 800amps 650v
Openinverter Drop-in Board
The drop-in board houses the openinverter, generates 32V for the gate driver board, communicates via SPI with the gate driver board to obtain voltage and temperature readouts, and provides outputs to operate contactors. See bottom of the page for list of modifications required for these boards to work. Pinouts for the three connectors on this board below.
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 |
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 on (5V or 12V) | |||||
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 |
Note: Pin 35 is connected to a mosfet gate on the gate driver board and has been tested with both 5V and 12V.
Motor Resolver & Temperature Sensors
12-pin PCB header to connect to the motor sensors is an ERNI MiniBridge, part number 294920
Wire colours to pin allocation below determined by schematic and multimeter trace, with resolver coils and temperature sensors checked for resistance. Confirmed with motor bench test.
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 |
Modifications required to drop-in boards
Five modifications are required for the drop-in boards to work, plus an additional one if using CAN communication.
Mod 1. Close SJ3 on the openinverter board with solder
This enables SPI communications by assigned Pin 4 on JP2 as the MOSI line. Additional explanation here.
Mod 2. Motor Resolver & Temperature Sensor Adaptor Boards
A pair of adaptor boards (see also images to right) are available and shipped with the current drop-in boards. These enable the ERNI Microbridge connector from the resolver and motor temperature sensors to be connected to the required pins on the Ampseal connector. Design files for these boards will be posted on github at some point - if you need a copy in the meantime contact user 'CJW' or post on the i3 controller hacking thread.
Mod 3. Code Update for 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);
Mod 4. Check solder connections on the drop-in board
The 40 pin surface mount Harwin connector to the gate driver board may have dry joints or shorts.
Mod 5. Gate driver PSU power pin
Pin 35 of the Harwin connector to the gate driver board is not connected to anything. Testing indicates this must be powered for the gate driver to work, at least on some boards. The motor has been run successfully with 5V to this pin via a 100 Ohm resistor from the adjacent pin 34, which receives power from the openinverter's 5V supply. Some earlier notes in the i3 hacking thread suggest it may also have been tested with 12V.
Mod 6. CAN slew rate pin
This pin is floating but needs to be tied to ground with a resistor if CAN communication is used. Can be any value from like 0R to 20k, the value controls the slew rate.
Openinverter Parameters
This initial set of parameters have been used for successfull bench testing a motor with a pair of lead acid car batteries. Will update and eventually post a full set of parameters here once the motor is properly set up and has been tested with a high voltage battery.
Future Development
List of tasks to be completed to enable full use of these motors:
- Motor temperature sensor to be mapped and added to code
- Design files for adaptor boards posted to github