ZombieVerter VCU

From openinverter.org wiki
Revision as of 15:04, 4 February 2025 by Marcexec (talk | contribs) (Spelling and capitalisation)
Jump to navigation Jump to search
ZombieVerter VCU board

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

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 manufacturer, 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. It's also an open source project!

The ZombieVerter supports popular salvaged EV parts such as:

  • Nissan leaf motor, PDM/OBC, and batteries
  • Mitsubishi Outlander hybrid front & 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
  • LIN bus
  • 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 yourself or the kit is missing hardware?

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

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

For programming a blank board see: ZombieVerter programming

The enclosure kit options:

  1. Enclosure Kit with Header, connector and pins[1]
  2. Connector and pins[2]
  3. Pre-wired 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 supply. This is so it can manage charging, timers, and monitor systems when the car is at rest.

The average power 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), powering those devices when required. This is done by triggering an external 12V relay. ZombieVerter controls the external relay using low-side switching, meaning that it pulls the ground pin of the relay to ground.

  • Pin 32 to ground pin on a 12V relay
  • Relay positive pin to 12V+
  • One of the relays switch pin to 12V+

This effectively provides a switched 12V supply, controlled by the ZombieVerter.

Used to switch "enable" mode to devices via:

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

Contactor wiring

The Zombieveter manages the Negative, Positive and PreCharge contactors in an EV conversion.

This is done based off a series of voltage measurements (UDC), this voltage value (UDC) can be supplied from a variety of sources:

  • ISA IVT shunt
  • Nissan leaf inverter
  • BMW S-BOX
  • etc.

Without 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 in case one channel fails or drops out. It's 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)
  • Trans SL2- (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

Pin IN/OUT/PWM Function
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.

Initial start-up and testing

Powering up and connecting to the web interface

The following is required

  1. A fully built ZombieVerter VCU
  2. Two 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

*work in progress*

full list and overview of ZombieVerter Parameters and Spot Values

Basic parameters and spot values

Throttle

You should see values pot change as the pedal is pressed.

  • potmin should be set just above where your off-throttle position is
  • potmax just below the value seen at maximum travel
  • Same for pot2min and pot2max

The resulting in a 0-100 potnom value.

  • throtmin is the minimum (most negative) allowed potnom at all times
  • throtmax is the maximum (most positive) allowed potnom request in forward
  • throtramp is how much potnom ramps up with the pedal pushed (potnom change per %/10ms)
  • throtramprpm stops applying throtramp above a set motor rpm
  • revlim is a rev limiter

Contactors

A set HV battery voltage value is required to run the precharge and main contactors.

The voltage is measured using the UDC value. which is supplied from the shuntType:

  • ISA
  • SBOX
  • VAG
  • LEAF

these voltage(UDC) levels are set with the following parameters:

  • udcmin is the minimum battery voltage derate
  • udclim is maximum battery voltage derate
  • udcsw is Voltage point at which precharge is considered finished, and the main contactor will close.


Forward/Reverse

input options:

  • switch
  • button
  • switchReversed
  • buttomReversed

Inverter

Charger


  • 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!

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

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