
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:
- Nissan Leaf Gen1/2/3
- Lexus GS450h
- Lexus GS300h
- Toyota Prius/Yaris/Auris Gen 3
- Mitsubishi Outlander motors/inverter
- OpenInverter replacement board
Chargers/DCDCs:
- Nissan Leaf PDM Gen 1/2/3
- Mitsubishi Outlander OBC
- Tesla model S dcdc
- BMW i3 LIM CCS
- Chademo
- Foccci CCS
- EVS Charge Port Controller
- Elcon/TC
Heaters:
BMS:
- Nissan leaf BMS
- kangoo bms
- orion bms
- SimpBMS
- ISA shunt
- BMW SBOX
- VW EBOX
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
- Development thread
- Purchasing:
- GitHub repo
- Hardware: ZombieVerter V1*
- Software: latest stable software release
- Zombie Backpack
- plug and play zombieverter wiring harness
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:
- Enclosure Kit with Header, connector and pins[1]
- Connector and pins[2]
- Pre-wired connector [3]
- 3d printable enclosure
- zombie backpack
The original connectors are from Aptiv (Delphi):
- Aptiv 56-pin connector
- Aptiv 56-pin header
- Removal tool for connector terminals: Manufacturer: Aptiv (formerly Delphi) Part Number: 210S048
building your own board:
Looking to build a ZombieVerter VCU yourself or the kit is missing hardware?
- Zombiverter hardware page for additional build instructions
*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
- GS450H with ZombieVerter
- Leaf stack with ZombiVerter
- Tesla SDU with ZombieVerter
- Chademo with Zombieverter
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
- A fully built + programed Zombieverter VCU
- 12V power supply
- Computer/tablet for accessing the web interface
How to access the web interface
- Provide stable 12V power to the Zombieverter:
- GND (pin55)
- 12V+ (pin56)
- The on-board LED light "acty" should be now flashing (if not see Zombieverter programing)
- Using your computer, connect to the Zombieverters WIFI access point. SSID: "inverter" or "zom_vcu"
- Password is: inverter123
- In a web browser navigate to: 192.168.4.1
- 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.
- programming a blank board
- re-flashing a bricked board
- software architecture overview
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:
- Wire the ISA shunt to 12V+ and canbus input.
- Under shunt can in the web interface, select the canbus the shunt is connected to
- Hit save parameters to flash.
- Under Comms in the web interface, select ISAMode option. By default its set to "Normal" (Off)
- 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
- 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.