ZombieVerter VCU - openinverter.org wiki

7 min read Original article ↗
ZombieVerter VCU board (NOTE: V1.2 is preproduction, V1.a is the current latest hardware revision)

Introduction

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

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

The issue is that each of these components and manufacturers, use different methods of control and communication.

Developing controllers for these devices is complex, and time consuming and often require very dedicated communication protocols. Instead of making custom boards for every part that's been decoded, why not just make a general purpose VCU (vehicle control unit) with a verity 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!

Features

Hardware:

  • On-board WiFi
  • 3x high side PWM drivers
  • 5x low side outputs
  • 3x low side inputs
  • 3x canbus
  • LIN bus
  • sync serial
  • etc.

Software:

  • Web based user interface
  • Battery system
    • contactor control
    • precharge control
    • BMS limits
    • shunt data
  • charging system
    • on board charger control
    • charge interfaces
    • charging timers
    • dcdc control
    • 12v battery tending
  • Motors
    • motor/inverter control
    • throttle mapping
    • regen mapping
  • thermal management
    • water pump control
    • fan control
    • cabin heater control
  • OBD-II interface
  • Data logging and graphing
  • mappable canbus
  • etc.

Currently supported OEM hardware:

*This list is always growing and changing, and not everything is verified working

Motors/Drive units:

Chargers/DCDCs:

Heaters:

BMS:

Vehicle Integration (dash, heat, etc):

  • 1998-2005 BMW 3-series (E46)
  • 1996-2003 BMW 5-series (E39)
  • 2001-2008 BMW 7-series (E65)
  • BMW E9x
  • Mid-2000s VAG
  • Subaru

Resources

Assembling the VCU

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

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

Enclosure kit options:

  1. Enclosure Kit with Header, connector and pins[1]
  2. Connector and pins[2]
  3. Pre-wired connector [3]
  4. 3d printable enclosure
  5. zombie backpack

The original connectors are from Aptiv (Delphi):

building your own board:

Looking to build a ZombieVerter VCU yourself or the kit is missing hardware?

*only design files for PCB V1 are publicly available on GitHub, design files for the latest PCB release (V1.a) are only available through Damien Maguire's Patreon and require membership at the Design Files tier or higher.

Wiring

General zombieverter wiring:

Vehicle-specific configurations

*cross referencing OEM wiring diagrams is highly recommended

Generic input and outputs 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

parameter type 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 op mode "run"
WarnIndication OUTPUT activates when zombieverter is in a error state
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 regen threshold value is met
ReverseLight OUTPUT activates when reverse direction is selected
CoolingFan OUTPUT activates when "FanTemp" setpoint is reached
HVActive OUTPUT activates when the HV system is live, often used for switched 12v supply to the outlander OBC
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 NOT FUNCTIONING
DCFCRequest DIGITAL INPUT used to enter zombie into "DCFC" op mode (chademo)
ProxPilot ANALOGUE INPUT detects when charge cable is plugged in
BrakeVacSensor ANALOGUE INPUT vacuum sensor input, use for triggering BrakeVacPump DIGITAL OUTPUT
PWMTim3

Zombieverter parameters + setup

Parameters:

Powering up and connecting to the web interface

The zombieverter parameters must be configured in the web interface before powering on the EV system.

first isolate the zombiverter before applying 12v power for the first time:

The following is required

  1. A fully built + programed Zombieverter VCU
  2. 12V power supply
  3. Computer/tablet for accessing the web interface

How to access the web interface

  1. Provide stable 12V power to the Zombieverter:
    • GND (pin55)
    • 12V+ (pin56)
  2. The on-board LED light "acty" should be now flashing (if not see Zombieverter programing)
  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 web interface should now load! (if having issues, power cycle the zombie)

Troubleshooting

zombieverter not going into op mode "run" :

spot Values:

  • "din_break" does not show "on", it must be off to allow potnom to be shown.
    • check wiring setup
  • UDC value not updates during precharge.
    • check that your UDC value source is configured correctly (shunt type, proper can bus, ect)

wiring:

  • check contactor wiring.
    • some contactors are polarity sensitive
    • is the negative contactor output pin set correctly in the web interface?
    • are they wired to be low side switched?
  • check can H / can L wiring
    • are can lines set to the correct bus? ie leaf motor wired to can 2 and set inverter = can 2
    • is there too many devices sharing one can bus? (possible can id collision)
    • is canbus terminated? ie reads 60ohms when powered off?
  • check IGN power relay wiring
    • is the "ignition"/ "enable" pin on your charger/inverter/etc driven via a zombie controlled relay?
    • is the relay firing during startup?

ESP32 CanBus Web Interface

If the CanBus Web Interface is used it must be noted that the Node ID is hard coded to 3 (note Foccci default is 22)

flashing firmware and device config

*zombiverter boards from the webshop, come pre-programed and do not require any additional programing to work.

  • re-flashing a bricked board


The zombieverter has the ability to configure some devices connected to it, make them "plug and play"

  • ISA/IVT shunt (after initialisation)
  • foccci

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.

References

  1. https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE (Backup: Web Archive)
  2. https://de.aliexpress.com/item/32822692950.html (Backup: Web Archive)
  3. https://www.aliexpress.com/item/1005003512474442.html (Backup: Web Archive)