ZombieVerter VCU

From openinverter.org wiki
Revision as of 17:43, 1 February 2025 by Bratitude (talk | contribs)
Jump to navigation Jump to search

An open-source EV conversion VCU (vehicle control unit) for controlling salvaged EV components!

Zombiverter VCU board

Introduction

Modern EV conversion projects often look to reuse salvaged parts from OEM vehicles, such as the motors, batteries and chargers.

The issue is that each part, and manufacture, use different methods of control and communication. Even when the methods of control are decoded, you are left with having to develop some sort of VCU to run the devices. These devices often talk different "languages", such as CANBUS, LINBUS, sync serial, PWM, etc

Instead of making custom boards for every device that's been decoded, why not just make a general purpose VCU (vehicle control unit) with lots of different types of inputs and outputs?

introducing: the "Zombieverter" VCU

a general purpose EV conversion VCU.

With a large array of inputs/outputs, control logic, and a web interface for configuration and data logging. The Zombieverter is a powerful, flexible and customizable VCU well suited for EV conversions. its also an open source project!

The Zombieverter supports popular salvaged EV parts such as:

  • Nissan leaf motor, PDM/OBC, and batteries
  • Mitsubishi outlander hybrid rear drive unit, and OBC (on board charger)
  • Lexus gs450H and gs300H hybrid gearbox's
  • chademo and ccs fast charging
  • and more!

The Zombieverter features the following:

hardware:

  • on board WIFI
  • 3x High side PWM drivers
  • 5x low side outputs
  • 3x input pins (pull to ground only)
  • 3x CANbus interfaces
  • Linbus
  • sync serial interface
  • OBD-II interface
  • etc

Software:

  • web based user interface
  • contactor control
  • charger control
  • charge timer
  • motor(inverter) control
  • heater control
  • water pump control
  • coolant fan control
  • throttle mapping
  • motor regen
  • cruise control(?)
  • BMS limits
  • IVT shunt initialization
  • data logging and graphing
  • etc

Currently supported OEM hardware:

*this list is always growing and changing, not everything is fully tested and verified


Assembling the VCU

Looking to build a Zombieverter VCU your self or the kit is missing hardware?

the enclosure and header are required if you did not order a fully built board

The enclosure kit options:

  1. Enclosure Kit with Header, connector and pins[1]
  2. Connector and pins[2]
  3. Prewired connector [3]

The original connectors are from aptiv (delphi):


videos on assembly, powering up, updating, etc:

https://www.youtube.com/watch?v=geZuIbGHh30&list=PLh-aHjjWGgLVCsAqaCL6_jmn_QqhVlRiG

https://www.youtube.com/watch?v=_JRa_uFyVkY&list=PLh-aHjjWGgLUWaetAmShkv6gmvk7vLaHd


Wiring

VCU pinout diagram

each device requires different wiring setups, settings and power requirements.

*cross referencing OEM wiring diagrams is highly recommended

wiring the zombieverter with:

Power wiring:

The zombieverter requires a permanent 12v connection. This is so that it can mange charging, timers, and monitor systems when the car is at rest. The average draw at idle is 150 mA

  • pin 55 to 12v- ground
  • pin 56 to 12v+ positive

the zombieverter controls power/ "ignition" signals to other devices (inverters, chargers, and dcdc converters) when required. This is done by triggering a external 12v relay. Low-side switching, meaning that it pulls to ground.

  • pin 32 to ground pin on a 12v relay
  • relay positive pin to 12v+

on the switch side of the realy connect one pin to 12v+ and the other to the enable pin on the device your trying to control.

such as:

  • Leaf inverter enable pin
  • Leaf PDM enable pin
  • Mitsubisihi OBC enable pin

Contactor wiring:

the zombieveter manages the Negative, Positive and PreCharge contactors in a ev conversion. This is done based off a series of voltage measurements (UDC), which can be supplied from a variety of sources:

  • ISA IVT shunt
  • nissan leaf inverter
  • bmw SBOX

with out a proper UDC measurement, the zombieverter will fail precharge and never go into run mode.

The contactor control pins on the zombieverter are low-side switching, meaning that they pull to ground.

The positive leads from the contactors need to be connected to 12v+ and the ground leads to:

  • pin 31 for the negative contactor
  • pin 33 for the positive contactor
  • pin 34 for the pre-charge contactor

Throttle pedal wiring:

The zombieverter supports dual-channel throttle, this redundancy is for safety incase one channel fails or drops out. its highly recommended to use dual channel throttle. single channel is an option.

connect the following to the zombieverter pins:

  • pin 45 to throttle grounds
  • pin 46 to throttle channel 2
  • pin 47 to throttle channel 1
  • pin 48 to throttle positives

Start, Run, and Direction wiring:

The zombieverter requires 2 inputs to get into "drive" mode. These pins need to be pulled high (connected to 12v +)

  • pin 15 to "on" switched input (key switched to "on")
  • pin 52 to "start" momentary input (momentary key switched "ignition")

Forward and Reverse:

These pins need to be pulled high (connected to 12v +)

  • pin 53 reverse
  • pin 54 forward


Input/output pins:

The Zombieverter has a number of selectable input/output pins that can be used for a number of functions. These pins are:

Low side Outputs.

  • GP Out 3
  • GP Out 2
  • Neg Contactor switch/GP Out 1
  • Trans SL1- (If not using the GS450H)
  • TransSL2- (If not using the GS450H)

*Low side output connect to ground when activated.

The low side outputs in Zombie are ideal for switching relays, such as for coolant pumps.

High side PWM.

  • PWM 3
  • PWM 2
  • PWM 1
  • Pump PWM - Limited to GS450 Oil pump pwm or tacho pwm output

These are high side 12v outputs, usually for controlling gauges or auxiliary items than need a pwm signals.

*not suitable for controlling relays.

Ground Input pins

These pins pull down to ground only. Do not connect any voltage to these pins.

PB1

PB2

PB3

Pin functions:

Note: While the web interface will allow you to select input pins or output pins, some will not actually work.

example: a input switch wired but set to negContactor

  • ChaDemoAIw - OUTPUT - activates when Chademo charger handshake initiates
  • OBCEnable - OUTPUT: activates as part of the ExtCharger module
  • HeaterEnable - OUTPUT: activates only in run mode and when coolant pump is on*
  • RunIndication - OUTPUT: activates when zombie is in run mode
  • WarnIndication - OUTPUT: activates when a error occurs with the zombieverter
  • CoolantPump - OUTPUT: activates during precharge, usually used for coolant pumps
  • NegContactor - OUTPUT: activates when the negative contactor needs to be closed. ie precharge, run, charge mode, etc
  • BrakeLight - OUTPUT: activates when a set brake light on threshold value is met
  • ReverseLight - OUTPUT: activates when reverse direction is selected
  • CoolingFan - OUTPUT: activates when FanTemp setpoint is reached
  • HVActive - OUTPUT: activates when contactors are closed and VCU is in run or charge mode
  • BrakeVacPump DIGITAL OUTPUT: activates when BrakeVacSensor threshold value is met
  • CpSpoof - PWM OUTPUT: used to spoof CP signal to OBC when using a charging interface such as FOCCCI or I3LIM
  • GS450Hpump - PWM OUTPUT: used to run GS450H oil pump
  • HeatReq - DIGITAL INPUT
  • HVRequest - DIGITAL INPUT - starts precharge cycle and puts VCU into charge mode
  • ProxPilot - ANALOGUE INPUT - detects when charge cable is plugged in
  • BrakeVacSensor - ANALOGUE INPUT - vacuum sensor input, use for triggering BrakeVacPump DIGITAL OUTPUT
  • PWMTim3 -

Proximity Pilot

This analogue input used to detect a charging cable is plugged in.

ZombiePP.png

A resistor to the 5v needs to be connected to the analogue in pin, 330 ohms in the spec, and R5 needs to be another resistor between analogue in pin and ground. Type 1 connectors should be a 2.7k ohm resistor and type 2 should be 4.7k ohm. Note the charging port may already have this resistor installed.

Open up the Zombie UI and choose ProxPilot for the function of the analogue in pin. Then start plotting PPVal and then plug in, you can then use this to select your PPThreshold. Bare in mind the resistance will vary on the cable plugged in depending on the Amps it can supply.


https://www.youtube.com/watch?v=U3c4V8vMb6k Video here for the setup and demonstration.

List and Overview of Zombieverter Parameters and Spot Values

Initial start-up and testing

powering up and connecting to the web interface:

The following is required:

  1. fully built Zombieverter VCU
  2. 2 wires for power
  3. 12v power supply
  4. computer/ tablet for accessing the web interface

How to access the web interface:

  1. provide stable 12v power to pins 55, 56 on the zombieverter
  2. the on-board LED light "acty" should be now flashing
  3. using your computer, connect to the zombieverters WIFI access point. SSID: "inverter" or "zom_vcu"
  4. password is: inverter123
  5. in a web browser navigate to: 192.168.4.1
  6. the openinverter web interface should now load!


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.4.1 on the 192.168.4.0/24 subnet) to your device.

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 [note this is the opposite for versions 1.06A to 1.11A ). 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.

Software

VCU boards from the webshop, come pre-programed and do not require any additional septs taken to work.

for programming a blank board see: zombiverter programing

web interface:

Overview of Zombieverter Parameters and Spot Values


Initializing an ISA Shunt:

  1. wire the ISA shunt to 12v+ and canbus input.
  2. under shunt can in the web interface, select the canbus the shunt is connected to
  3. hit save parameters to flash.
  4. Under Comms in the web interface, select ISAMode option. By default its set to "Normal" (Off)
  5. select "Init"
  6. hit save parameters to flash
  7. Power cycle the vcu and shunt at same time (they should be on same 12v feed anyway).
  8. The shunt will initialize.
  9. Select ISAMode "normal"
  10. save to flash again
  11. reboot the VCU

The shunt should now be up and running.

If the shunt doesn't initialize correctly, separate the shunt and VCU power supply, and power cycle the VCU two or three seconds after the shunt power is cycled. This has fixed an initialize issue for a number of ISA shunts.

Parameters

page with zombieverter parameters and their value ranges, ZV pinmap etc.

Source: https://www.youtube.com/watch?v=wjlucUWX_lc

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.

Recovering the Zombieverter from a failed update

if the zombieverter fails in the middle of a software update and the Web User Interface is reporting "firmware: null" it's possible you'll need to re-flash the firmware, and bootloader via an STLink.

  1. Firstly, download the bootloader and latest zombieverter firmware from here [4] and here [5] as .hex files, this ensures you don't need to know the address of the file and avoids user error when flashing via STLink (I used a cheap STLink v2 clone without issue but it seems there is a mix of experiences with them).
  2. Download STMCubeProgrammer (other STM flashing softwares are available but the following instructions are based on what has worked for me).
  3. Upgrade the firmware on your STLink dongle using STMCubeProgrammer (I'm not sure if this is 100% necessary but seems prudent).
  4. Connect the Clock (SWclk), Gnd and Data (SWDio) of your STLink to the Zombieverter test points (near to the STM32 chip, they are labelled C, G, D) as well as 12V and Gnd to the Zombieverter main power pins and ensure your STMCubeprogrammer is able to connect to it, I also disconnected the wifi board just incase.
  5. Perform a "full chip erase", then reflash the latest bootloader and firmware hex files.
  6. Remove your STLink from the zombieverter, connect the wifi board and check connectivity.
  7. Begin Zombieverter-ing.

References