ZombieVerter VCU

From openinverter.org wiki
Revision as of 04:39, 9 November 2022 by Asavage (talk | contribs) (Specified a value for "now".)
Jump to navigation Jump to search
KINDLY NOTE:
  • A fully tested V1a kit is now (Nov2022) available for general sale here. The boards are now shipping with the Wemos wifi module and all parts will be included in the kit. The Olimex header is still there for those who may prefer that option. See this post for the Wemos wifi module mounting location.

Development continues and you can follow and contribute along with the development here on the forum

Support is available via a separate thread on the forum

Introduction

Rather than crack open inverters and swap components about to drive them, what if we simply send them the messages they're expecting? This has been the case with a couple of existing designs (Nissan leaf inverter and GS450h) and thanks to the SAM3X8E microcontroller no longer being stocked by JLCPCB this project looks to take it further.


So rather than driving an inverter powerstage this version sends CAN for the Leaf inverter or Sync serial for the GS450h and of course can be expanded to any number of others. This will be the default firmware for all VCU products from now on and future hardware will support future fun packed stuff like FLEXRAY!!!


It's basically an rip off homage and builds on other people's hard work in the shape of the following projects


What we have as of now is the openinverter wrapper with things like :

  • Throttle cal and mapping,
  • Precharge and contactor control,
  • Temp derating,
  • BMS limits,
  • for/rev/neutral control,
  • Graphing and monitoring,
  • Firmware updates via the web interface,
  • Cruise control,
  • Fuel gauge driver,
  • etc

Hardware

Location of remaining parts

So you've ordered your kit, first things first, watch the following two videos to assemble it.

Due to chip shortages (written summer 2021) the board isn't fully assembled so you will need to do some soldering, or take it to a local phone repair shop (or similar) who'll find soldering at this scale like playing with Duplo (Legos to you Yanks).

Parts to be fitted to ZombieVerter VCU
Name Part Numer Alternative Part Number
CONN1
IC10 MCP25625T
IC14 TJA1020 MCP2004
IC19 NCV7356
IC20 TJA1055T
IC21, IC22 AD5160
IC27, IC28, IC29 FAN3122


The enclosure kit links

You only need one, but below are two options - one with just the connector, and the other prewired with 3M long leads.

  • Enclosure Kit with Header, connector and pins: Link to Aliexpress
  • Prewired connector with 3M leads (limited colors which will not match standard wire colouring conventions): Link to Aliexpress


The kits do not come with M3 screws needed to secure the board to the enclosure (2 need to be slightly longer), and to secure the lid. Nor a gasket for the lid.


Note that in addition to the VCU, the inverter and transmission, you will require a specific CANBUS connected shunt: Isabellenhütte Heusler


Build and Configuration Videos

ZombieVerter VCU V1 Build Part 1

ZombieVerter VCU V1 Build Part 1
Video Highlights

00:33 Warning and suggestion to go watch cat videos instead
01:06 Recap about the ZombieVerter VCU Build Part 1
03:04 How to get one
03:35 Design files currently require E10 Patreon membership/contribution if wanting to build your own
04:28 Components still requiring soldering
05:03 IC19 - 8 pin SOIC for single wire CAN (NCV7356)

06:00 IC10 - SPI CAN controller and transceiver (MCP25625T)
06:30 IC1,3,5,6,7,24,25,26 load driver mosfets (NCV8402)
07:20 Do you need these components?
08:40 Soldering begins - IC19
09:10 Soldering iron for SOIC parts
09:27 Applying flux using Damien's favorite Flux, UV80
10:34 Magnifier headset
13:27 Soldering MCP25625
15:55 Suggests getting an phone/computer repair shop to help out if needed
17:05 Using hot air gun to warm the board and position the chip
19:34 Soldering NCV8402s
23:28 Clean soldering with IPA Solvent
24:40 First power up test using bench power supply to limit current to a few hundred mA
26:47 60mA current draw with no wifi board
27:35 Wifi module
29:50 Power up test with wifi draws 90mA
30:25 Enclosure kit(s)
36:02 Soldering the PCB header (56 pin)
44:28 Installing in the enclosure
50:30 Cameo appearance by Gome cat

ZombieVerter VCU V1 Build Part 2

ZombieVerter VCU V1 Build Part 2
Video Highlights

00:34 Health warning and suggestion to go watch cat videos instead
01:42 Intro
03:20 Pinouts of the 56 pin connector
04:16 Pins 55,56 - Ground and +12V
04:49 Pins 53,54 - Reverse and Forward Direction. Apply +12V to the pin for the direction needed.
Configurable in the web interface to flip these since direction is relative
07:32 Pins 52 - Start. Momentarily apply +12V to send a start signal
08:15 Pin 51 - HV Request. Apply +12v to precharge and bring up the high voltage system
(and not the drive components)
09:05 Pin 50 - General Purpose 12V Input. Reserved for future use
09:23 Pin 49 - Brake Input. Connect to brake light switch to apply +12V signaling brakes are applied
10:15 Pins 45,46,47,48 - Throttle. +5V power, ground, and 1 or 2 hall effect sensor inputs

11:00 Pins 25,26,27,28 - 3 CAN bus interfaces. CAN EXT is for vehicle/body communication,
CAN EXT 2 for the ISA shunt comms,
CAN EXT 3 (with solderable jumpers to change modes) is for general purpose like charger, heater control
14:45 Pin 24 - Local Interface Network (LIN)
15:56 Pins 16,17,18,19,20,21,22,23 - Toyota Hybrid Inverter specific using async serial comms.
17:21 Pin 15 - Ignition T15 In. Apply +12V to turn Ignition on. Puts VCU in run mode
18:54 Pins 37,38,39,40,41,42 - Toyota Hybrid Transmission shift control
19:42 Pins 35,36 - POT1 & POT2. Digital potentiometer outputs to drive analog gauges (fuel, etc)
21:10 Pins 32,33,34 - Low Side (LS) switches for Inverter Power, Positive side Main Contactor, Precharge Contactor
23:21 Pin 31 - General Purpose +12V Output. LS switch for Negative side Main Contactor
24:01 Pins 12,13,14,29,30 - Toyota Hybrid System controls
25:24 Pins 10,11 - Digital to Analog Converter (DAC) 1 & 2. Reserved for future use - additional analog instruments etc.
26:33 Pins 8,9 - 0-5V Analog Inputs 1 & 2. Reserved for future use (ie not implemented yet)
27:06 Pins 5,6,7 - Pulse Width Modulation (PWM) 1-3 +12V output signals. Reserved for future use (ie not implemented yet)
27:56 Pins 3,4 - General Purpose +12V Outputs 2 & 3. Reserved for future use (ie not implemented yet)
28:29 Pins 1,2 - RS232 Rx/Tx Serial connection for alternation VCU communication (solder jumper configurable). Reserved for future expansion
30:11 CAN bus connected Isabellenhutte Huesler Shunt
38:45 Web Interface
44:10 How to perform a software update via the web interface using a precompiled binary
47:32 UI Features - Commands
52:50 UI Features - Update
53:30 UI Features - Parameters
1:11:32 UI Features - Spot Values
1:21:54 Epilogue

ZombieVerter VCU V1 Part 3

ZombieVerter VCU V1 Part 3
Video Highlights

00:38 Intro/Recap of part 2
01:04 Description of 2018 Nissan Leaf components used in the video
03:47 VCU, wiring harness, 12V battery, ISA shunt, contactors
07:06 12V battery - negative to chassis ground with fuse, and ground to VCU pin 55
07:52 12V battery - positive to PDM positive terminal and distribution block
08:42 12V battery - permanent fused +12v from PDM positive terminal to inverter and PDM
09:14 12V battery - permanent fused +12v to vcu, relay controlled by VCU for switched +12v to inverter and PDM
10:41 12V battery - permanent fused +12v to contactor coil positives
10:57 12V battery - permanent fused +12v to switch to provide things like T15 on signal to VCU
12:42 Other end of permanent 12v feed to inverter and PDM connections
13:23 Other end of switched +12v feed to inverter and PDM connections
13:36 Other end of switched 12v ground connection
13:52 Twisted pair wires from EV CAN CAN EXT 2 High (pin 28) and CAN EXT 2 Low (pin 27) to inverter
15:46 To use the PDM for charging, wire control pilot (CP) and plug present (PP) from PDM to charge socket
16:29 High voltage setup and controlling it with the VCU
17:08 Positive and precharge contactors (only 2 for the test rig - usually would have a negative contactor as well)
17:40 High voltage positive and negative junction. The ISA shunt connected between negative and PDM to distribute high voltage negative to the components

18:13 V1 ISA shunt connection to PDM after the contactors/precharge system to monitor high voltage applied to the drivetrain
18:51 Contactor control using negative side connections via VCU (very brief description)

21:55 Leaf PDM Internals, starting with high voltage connections
23:08 Leaf PDM Internals, single phase AC charging connections
23:49 CCS type 2 socket connections
24:50 Gome Cat comes in to say hello
25:45 Control switches. +12v, forward input, terminal 15 input, start input, high voltage request input.
26:24 Step 1 is close switch providing +12v to the forward input and T15 connections to enable "ignition on" mode
26:45 Step 2 is toggle start input to activate precharge, closing of main contactor, and inverter main relay (assuming all conditions are met)
27:25 Example throttle from mid 2000s BMW. Two channel hall effect sensor
28:46 Charging description when plugging in charger cable
29:31 Throttle Calibration using spot values for pot and pot2 in auto refresh mode while pressing the pedal across it's range, noting the min/max and recording the min+10 for potmin, and max-10 for potmax for each pot under parameters. Also select dual channel potmode if using two channels (will not work in single channel mode with 2 channels wired up)
37:37 Running the motor
40:07 Checking status, observing parameters
47:44 Problems/gotchas - PRECHARGE error (no high voltage supply, udc not > udcsw within 5s)
50:16 Problems/gotchas - too high udcmin setting and no motor spin, potum will not go positive
53:59 Problems/gotchas - too low udcmax (max voltage to allow regen) - motor spins without slowing when throttle released
56:13 Explanation of udclim as redundant cutoff voltage to shut off contactors
56:40 Explanation of idcmax and idcmin current limits
57:00 Explanation of tmphsmax heatsink max temp too low, and min setting allowed of 50C
59:08 Problems/gotchas - throtmax too low, no motor spin
1:01:46 Charging example using Leaf_PDM - seems incomplete, see below
1:03:00 Wifi Connection to the VCU and upgrading firmware
1:06:23 Resolve update fail/hang - activity led stops flashing, no data on web interface (power cycle)
1:10:25 Gome cat in it's natural habitat
1:13:19 Causes of wifi issues
1:16:49 Initializing the ISA shunt
1:20:55 Demonstrating regen
1:22:11 Automatic charge start/stop using Leaf PDM
1:24:03 Epilogue

Installation

Pin Out Diagram

VCU pinout diagram
List of connections to system components (GS450 application)


Further information for a GS450 system can be found here: Lexus GS450h Drivetrain

Note: In the software port 0 = EXT2 and port 1 = EXT


Initial start-up and testing

Wifi Setup

The VCU is configured by connecting to its wifi access point. For existing units this is something like SSID: ESP-03xxxx, no password. For future units (shipped after 20/10/21) this will be SSID: inverter (or zom_vcu) PASSWORD: inverter123

NOTE: Recent units have a new wifi module that isn't automatically assigning an IP via DHCP. See this thread for details, and if you can help resolve the issue. Until then, you need to manually assign an IP of 192.168.4.2 (anything other than 192.168.14.1 on the 192.168.4.0/24 subnet) to your device.

Then navigate to 192.168.4.1 to see the huebner inverter dashboard.

Configuration Setup

Get familiar with the interface and check that all of the parameters make sense. If in doubt, make sure the default value is set. At each stage the current state of the system and any error can be seen on the interface, for example opmode and lasterr. Press refresh at the top of the screen to update the values.


You will need the HV supply connected, which can be a lower voltage (50-100V), current limited power supply for test purposes. Set udcmin to some value below that (e.g. 50V for a 100V supply) and udcsw to 10V lower than the supply.

  • Apply the Ignition T15 in 12V signal. The relay supplying 12V to the inverter should now be on.


  • Check the accelerator by applying it gradually and watching / refreshing the interface. You should see values at pot change as the pedal is pressed. potmin should be set just above where your off-throttle position is, and potmax just below the value seen at maximum travel. Same for pot2min and pot2max, if they are electrically connected. The resulting value as a 0-100 value can be seen at potnom.

If it does not show up, check for errors and check that throtmax is not set to zero! Check that tmpm is less than tmpmmax, as it can derate the potnom value down as far as zero!


  • Apply the Start 12V signal for a short time. The pre-charge relay should turn on, and the voltage available at the inverter and the U1 input of the ISA shunt should quickly rise. If the udc reading goes above udcsw within 5 seconds then the main contactor(s) should close. If all is well, invstat should now be "on", opmode should be "run".

If you do not see a good value at udc, it may be that your external shunt is not connected properly or is not initialised.

If you do not see a good value at Invudc, it may be that the inverter is not powered, or the communication signals are not correctly wired.

if the status stays at "PRECHARGE" then you possibly didn't hold the start signal on for long enough!


  • Once the contactors are on, select forwards direction. For example if dirmode is set to "Switch" then a 12V signal applied to the Forward input will work.
  • Carefully apply the accelerator and the motor should begin to turn. Do not spin the motor up to any speed if you are using a test power supply.
  • Note: Leaf VCU requires minimum of 180v to operate, it is also sensible to test with rev limit set to 1000 RPM.

Software

Github for the project: https://github.com/damienmaguire/Stm32-vcu


Various binaries can be found in the support thread, here, however, unless you have a specific reason not to, end users should use a released version from https://github.com/damienmaguire/Stm32-vcu/releases.


GD variant:

Status as of November 20 2021

Early boards fitted with the GigaDevices GD32F107 aka "GD chip" require different firmware routines than STM32F107 equipped boards. See this Zombieverter VCU Support Thread forum post

The GigaDevices `GD32F107 was chosen as an alternative to the ST equivalent due to microchip shortages during the COVID-19 pandemic. A specific branch of firmware code for the GD32F107 variant is found here: https://github.com/damienmaguire/Stm32-vcu/tree/GD_Zombie However development of this variant was abandoned shortly after it's release.

As of this writing , The GD_Zombie branch has fallen behind and substantially diverged from the primary code base. It has been suggested that work needs to be done to make the present firmware chip agnostic via detection routines. See this Zombieverter Development Thread forum post. As of this writing that work has yet to be undertaken and remains to be organized and completed. And issue has be devoted to tracking this progress here: Issue #21

Here is a link to a post with a pre compiled bin and hex for the GD_Zombie created by Damien on the 23/11/21; ZombieVerter VCU Support - Page 9 - openinverter forum This is based on the 16/6/21 code it is not an update. Ensure you rename the binaries to stm32_vcu.xxx to ensure no wifi issues.

UPDATE November 23 2021

Updated information about the necessary edits to make to the STM32 based firmware have been posted in a forum post here. In order to get the firmware to compile and run on the GD32F107 you must make the following changes:

In the file "anain.cpp" @ line 68:

68 - // adc_start_conversion_regular(ADC1); // Comment out for GD MCUIn the file "stm32_can.cpp" @ starting at line 305 modify as follows :

305 - gpio_set_mode(GPIO_BANK_CAN2_RE_RX, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO_CAN2_RE_RX);

306 - gpio_set(GPIO_BANK_CAN2_RE_RX, GPIO_CAN2_RE_RX);

307 - // Configure CAN pin: TX.-

308 - gpio_set_mode(GPIO_BANK_CAN2_RE_TX, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_CAN2_RE_TX);


If you properly clone the repository with git on the command line that looks like this;

git clone --recurse-submodules git@github.com:damienmaguire/Stm32-vcu.git

That recursively pulls in copies of libopeninv, etc and tracks them...   Hence your file-path should look like

./Stm32-vcu/libopeninv/src/

within the libopeninv src (source) directory you will find anain.cpp and stm32_can.cpp

Make the above changes to these files for the GigaDevices GD32F107.

Software update

As supplied, both the ESP8266 (the wifi plug-in board) and the STM32 (main MPU) are pre-loaded.

The "UART Update" field on the GUI can be given a stm32_vcu.bin file to update the firmware. Note that at this time, loading via Windows 10 is suspect and may lock you out of the board. Ubuntu works best.

If you are unable to build your own, use the stm32_vcu.bin that Damien posted on 10/30/2021 in the ZombieVerter VCU Support thread.


By using the ST-Link V2 in-circuit loader, .hex files can be sent to the board to initialize a fresh STM32 MCU, or if it can't be loaded via the bootloader.

If you are unable to build your own, use the stm32_vcu.hex that Damien posted on 10/30/2021 in the ZombieVerter VCU Support thread.


The connections needed to use the ST-Link loader are shown below:

0B35D4F9-BA64-46E7-A570-A0CE1D619D63.jpg

Initializing an ISA Shunt

Under Comms in the web interface, there is now an ISAMode option. By default its in "Normal". If you want to initialize a new shunt, connect it up, power on the shunt and vcu, select "Init", hit save parameters to flash. Power cycle the vcu and shunt at same time (they should be on same 12v feed anyway). The shunt will initialize. Select ISAMode "normal", save to flash again and reboot again. The shunt should now be up and running.

Supported OEM Hardware

  • Nissan Leaf Gen1/2/3 inverter via CAN
  • Nissan Leaf Gen2 PDM (Charger and DCDC)
  • CCS DC fast charge via BMW i3 LIM - currently type 2 only, type 1 under development
  • Lexus GS450h inverter / gearbox via sync serial
  • Toyota Prius/Yaris/Auris Gen 3 inverters via sync serial
  • 1998-2005 BMW 3-series (E46) CAN support
  • 1996-2003 BMW 5-series (E39) CAN support
  • 2001-2008 BMW 7-series (E65) CAN Support
  • Mid-2000s VAG CAN support
  • Opel Ampera / Chevy Volt 6.5kw cabin heater

Troubleshooting

Serial Connection

If you're having trouble connecting using the serial interface, note that the parameters are 115200 8-N-2, which is different from the conventional 115200 8-N-1.