ZombieVerter VCU: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
No edit summary
 
(33 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[File:Zombie model.png|thumb|614x614px|Zombiverter VCU board]]
[[File:Zombie model.png|thumb|614x614px|ZombieVerter VCU board]]
==== An open-source EV conversion VCU (vehicle control unit) for controlling salvaged EV components! ====
==== An open-source EV conversion VCU (vehicle control unit) for controlling salvaged EV components! ====
* '''[https://openinverter.org/forum/viewtopic.php?f=3&t=1277 Development thread]'''  
* '''[https://openinverter.org/forum/viewtopic.php?f=3&t=1277 Development thread]'''  
* [https://github.com/damienmaguire/Stm32-vcu/releases '''latest stable software release''']
* [https://github.com/damienmaguire/Stm32-vcu/releases '''latest stable software release''']
* '''[https://github.com/damienmaguire/Stm32-vcu github repo]'''
* '''[https://github.com/damienmaguire/Stm32-vcu GitHub repo]'''
* '''[https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombieverter-vcu-built fully built VCU boards]'''
* '''[https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombieverter-vcu-built fully built VCU boards]'''
* '''[https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombie-vcu partially-built VCU boards]'''
* '''[https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombie-vcu partially-built VCU boards]'''
==Introduction ==
==Introduction ==
Modern EV conversion projects often look to reuse salvaged parts from OEM vehicles, such as the motors, batteries and chargers.  
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 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?  
The issue is that each of these components and manufacturers, use different methods of control and communication.  


introducing: the "Zombieverter" VCU  
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?


'''''a general purpose EV conversion VCU.'''''  
==== '''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.   


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


==== The Zombieverter supports popular salvaged EV parts such as: ====
==== The ZombieVerter supports popular salvaged EV parts such as: ====


* Nissan leaf motor, PDM/OBC, and batteries
* Nissan Leaf components
* Mitsubishi outlander hybrid rear drive unit, and OBC (on board charger)
* Mitsubishi Outlander hybrid components
* Lexus gs450H and gs300H hybrid gearbox's
* Toyota and Lexus hybrid components
* tesla model S dcdc converter
* CHAdeMO and CCS DC fast charging
* chademo and ccs fast charging  
* and more!
* etc


==== The Zombieverter features the following: ====
==== The ZombieVerter features the following: ====


==== hardware: ====
==== Hardware: ====


* on board WIFI
* On-board WiFi
* 3x High side PWM drivers
* 3x high side PWM drivers
* 5x low side outputs
* 5x low side outputs
* 3x input pins (pull to ground only)
* 3x input pins (pull to ground only)
* 3x CANbus interfaces
* 3x CANbus interfaces
* Linbus
* LIN bus
* sync serial interface
* sync serial interface
* OBD-II interface
* OBD-II interface
* etc
* etc.


==== Software: ====
==== Software: ====


* web based user interface
* Web based user interface
* contactor control
* Contactor control
* charger control
* Charger control
* charge timer
* Charge timer
* motor(inverter) control
* Motor (inverter) control
* heater control
* Heater control
* water pump control
* Water pump control
* coolant fan control
* Coolant fan control
* throttle mapping
* Throttle mapping
* motor regen
* Motor regen
* cruise control(?)  
* Cruise control (?)
* BMS limits
* BMS limits
* IVT shunt initialization   
* IVT shunt initialization   
* data logging and graphing
* Data logging and graphing
* etc
* etc.
=== Currently supported OEM hardware: ===
=== Currently supported OEM hardware: ===
<nowiki>*</nowiki>this list is always growing and changing, not everything is fully tested and verified
<nowiki>*</nowiki>This list is always growing and changing, and not everything is verified working
 
==== Motors/Drive units: ====
 
* [[Nissan leaf motors|Nissan Leaf Gen1/2/3 inverter/motor via CAN]]
* [[Nissan leaf motors|Nissan Leaf Gen1/2/3 inverter/motor via CAN]]
* Nissan Leaf Gen2(and 3?) PDM (Charger and DCDC)
* [[Lexus GS450h Drivetrain|Lexus GS450h inverter / L110 gearbox via sync serial]]
*[[BMW I3 Fast Charging LIM Module|CCS DC fast charge via BMW i3 LIM]] - type 2 + type 1
* Lexus GS300h inverter / L210 gearbox via sync serial
* [[Chademo with Zombieverter|Chademo dc fast charging]]
* [[Lexus GS450h Drivetrain|Lexus GS450h inverter / gearbox via sync serial]]
* Lexus GS300h inverter/ gearbox via sync serial
* Toyota Prius/Yaris/Auris Gen 3 inverters via sync serial
* Toyota Prius/Yaris/Auris Gen 3 inverters via sync serial
* [[:Category:Mitsubishi|Mitsubishi Outlander motors/inverter]]
* openinverter controler
===== Chargers/DCDCs: =====
* [[Nissan leaf pdm|Nissan Leaf PDM (Charger and DCDC)]] Gen1,2 & 3
* [[Mitsubishi Outlander DCDC OBC|Mitsubishi Outlander OBC (charger/DCDC)]]
* [[Tesla Model S/X DC/DC Converter|tesla model S dcdc]]
* [[BMW I3 Fast Charging LIM Module|CCS DC fast charge via BMW i3 LIM]] - type 2 + type 1
* [[Chademo with Zombieverter|Chademo DC fast charging]]
* [[Foccci|Foccci CCS faster charger controller]]
* [https://citini.com/product/evs-charge-port-controller/ EVS-Charge Port Controller]
* Elcon charger
===== Heaters: =====
*[[Volkswagen Heater|VAG/VW PTC water heater via LIN bus]]
*[[VAG PTC Air Heater|VAG/VW cabin heater via LIN bus]]
* [[Chevrolet Volt Water Heater|Opel Ampera / Chevy Volt 6.5kW cabin heater]]
* [[Mitsubishi Outlander Water Heater|Mitsubishi outlander hybrid water heater]]
===== BMS: =====
* [[Nissan Leaf BMS|Nissan leaf BMS]]/battery pack
* [[Renault Kangoo 36|kangoo bms]]
*orion bms
*simp bms
*[[Isabellenhütte Heusler|ISA shunt]]
*[[BMW Hybrid Battery Pack#S-Box|BMW SBOX]]
*VW EBOX
===== Cars(for canbus control over dash, etc): =====
* 1998-2005 BMW 3-series (E46) CAN support
* 1998-2005 BMW 3-series (E46) CAN support
* 1996-2003 BMW 5-series (E39) CAN support
* 1996-2003 BMW 5-series (E39) CAN support
Line 74: Line 103:
* BMW E9x CAN support
* BMW E9x CAN support
* Mid-2000s VAG CAN support
* Mid-2000s VAG CAN support
* subaru CAN support
* Subaru CAN support
*[[Chevrolet Volt Water Heater|Opel Ampera / Chevy Volt 6.5kw cabin heater]]
*[[:Category:Mitsubishi|Mitsubishi outlander motors/inverter]]
*[https://citini.com/product/evs-charge-port-controller/ EVS-Charge Port Controller]
*Foccci ccs faster charger controller
*VAG/VW PTC water heater via lin
**VAG/VW cabin heater via lin
*Mitsubishi outlander OBC (charger/dcdc)
 
 
== Assembling the VCU ==
== Assembling the VCU ==
Looking to build a zombiverter VCU your self or your kit has missing hardware?  
Looking to build a ZombieVerter VCU yourself or the kit is missing hardware?  


* [[Zombiverter hardware]] page for additional build instructions
* [[Zombiverter hardware]] page for additional build instructions


* [https://github.com/damienmaguire/Stm32-vcu github with PCB, schematic, pinouts, etc]
* [https://github.com/damienmaguire/Stm32-vcu Github with PCB, schematic, pin-outs, etc]
 
''The enclosure and header are required if you did not order a [https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombieverter-vcu-built '''fully built board''']''


''the enclosure and header are required if you did not order a [https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombieverter-vcu-built '''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 programing|ZombieVerter programming]]
===The enclosure kit options:===
===The enclosure kit options:===


# [https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE Enclosure Kit with Header, connector and pins]<ref>https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE (Backup: [https://web.archive.org/web/20220524004318/https://www.aliexpress.com/item/32857771975.html Web Archive])</ref>  
# [https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE Enclosure Kit with Header, connector and pins]<ref>https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE (Backup: [https://web.archive.org/web/20220524004318/https://www.aliexpress.com/item/32857771975.html Web Archive])</ref>  
#[https://www.aliexpress.com/item/32822692950.html Connector and pins]<ref>https://de.aliexpress.com/item/32822692950.html (Backup: [https://web.archive.org/web/20221119203700/https://www.aliexpress.us/item/2251832636378198.html?gatewayAdapt=glo2usa4itemAdapt&_randl_shipto=US Web Archive])</ref>
#[https://www.aliexpress.com/item/32822692950.html Connector and pins]<ref>https://de.aliexpress.com/item/32822692950.html (Backup: [https://web.archive.org/web/20221119203700/https://www.aliexpress.us/item/2251832636378198.html?gatewayAdapt=glo2usa4itemAdapt&_randl_shipto=US Web Archive])</ref>
#[https://www.aliexpress.com/item/1005003512474442.html Prewired connector]  <ref>https://www.aliexpress.com/item/1005003512474442.html (Backup: [http://web.archive.org/web/20221120105651/https://www.aliexpress.us/item/3256803326159690.html?gatewayAdapt=glo2usa4itemAdapt&_randl_shipto=US Web Archive])</ref>
#[https://www.aliexpress.com/item/1005003512474442.html Pre-wired connector]  <ref>https://www.aliexpress.com/item/1005003512474442.html (Backup: [http://web.archive.org/web/20221120105651/https://www.aliexpress.us/item/3256803326159690.html?gatewayAdapt=glo2usa4itemAdapt&_randl_shipto=US Web Archive])</ref>


The original connectors are from aptiv (delphi):
The original connectors are from Aptiv (Delphi):


* [https://www.aptiv.com/en/solutions/connection-systems/catalog/item?id=13669859_en aptive 56pin connector]  
* [https://www.aptiv.com/en/solutions/connection-systems/catalog/item?id=13669859_en Aptiv 56-pin connector]
* [https://www.aptiv.com/en/solutions/connection-systems/catalog/item?id=33511394_en aptive 56pin header]
* [https://www.aptiv.com/en/solutions/connection-systems/catalog/item?id=33511394_en Aptiv 56-pin header]
* [https://www.tti.com/content/ttiinc/en/apps/part-detail.html?partsNumber=210S048&mfgShortname=FCA&productId=161404611 Removal tool for connector terminals: Manufacturer: Aptiv (formerly Delphi)]  Part Number: 210S048
* [https://www.tti.com/content/ttiinc/en/apps/part-detail.html?partsNumber=210S048&mfgShortname=FCA&productId=161404611 Removal tool for connector terminals: Manufacturer: Aptiv (formerly Delphi)]  Part Number: 210S048
=== 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 ==
[[File:ZombieVerter VCU V1 cable side pinout2.jpg|thumb|alt=|VCU pinout diagram |513x513px]]Each device requires different wiring setups, settings and power requirements.
<nowiki>*</nowiki>cross referencing OEM wiring diagrams is highly recommended
'''Wiring the ZombieVerter with:'''
* [[GS450H with zombieverter|GS450H with ZombieVerter]]
* [[Leaf stack with zombiverter|Leaf stack with ZombiVerter]]
* [[Tesla SDU with Zombieverter|Tesla SDU with ZombieVerter]]
* [[Chademo with Zombieverter]]
=== 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.'''
* [[File:Gernice-zombie.png|thumb|583x583px|general zombie and battery box wiring]]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.'''''




=== videos on assembly, powering up, updating, etc: ===
'''The contactor control pins on the ZombieVerter are ''low-side switching'', meaning that they pull to ground.'''
https://www.youtube.com/watch?v=geZuIbGHh30&list=PLh-aHjjWGgLVCsAqaCL6_jmn_QqhVlRiG


https://www.youtube.com/watch?v=_JRa_uFyVkY&list=PLh-aHjjWGgLUWaetAmShkv6gmvk7vLaHd
The positive leads from the contactors need to be connected to 12V+ and the ground leads to:


https://www.youtube.com/watch?v=iu9ffpkcxkQ
* 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.


== Wiring ==
Connect the following to the ZombieVerter pins:
[[File:ZombieVerter VCU V1 cable side pinout2.jpg|thumb|alt=|VCU pinout diagram |452x452px]][[File:Zombie 56 connector.jpg|thumb|448x448px|zombieverter pinout from https://github.com/damienmaguire/Stm32-vcu/blob/master/Hardware/Zombie/ZombieVerter_V1%20-%20Schematic.pdf]]


each device requires different wiring setups, settings and power requirements.
* Pin 45 to throttle grounds
* Pin 46 to throttle channel 2
* Pin 47 to throttle channel 1
* Pin 48 to throttle positives


<nowiki>*</nowiki>cross referencing OEM wiring diagrams is highly recommended
=== 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 +)'''


'''wiring the zombieverter with:'''
* Pin 15 to "on" switched input (key switched to "on")
* Pin 52 to "start" momentary input  (momentary key switched "ignition")


* [[GS450H with zombieverter]]
==== Forward and Reverse ====
* [[Leaf stack with zombiverter]]
These pins need to be ''pulled high'' (connected to 12V +)
* [[Tesla SDU with Zombieverter]]


=== Input/output pins: ===
* Pin 53 reverse
The Zombieverter has a number of selectable input/output pins that can be used for a number of functions. These pins are:
* 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:


<u>Low side Outputs.</u>
<u>Low side Outputs.</u>
Line 135: Line 217:
* Neg Contactor switch/GP Out 1
* Neg Contactor switch/GP Out 1
*Trans SL1- (If not using the GS450H)
*Trans SL1- (If not using the GS450H)
*TransSL2- (If not using the GS450H)
*Trans SL2- (If not using the GS450H)


'''*Low side output connect to ground when activated.'''  
'''*Low side output connect to ground when activated.'''  
Line 148: Line 230:
*Pump PWM - Limited to GS450 Oil pump pwm or tacho pwm output
*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.  
These are high side 12V outputs, usually for controlling gauges or auxiliary items than need a pwm signals.  


'''*not suitable for controlling relays.'''
'''*not suitable for controlling relays.'''
Line 165: Line 247:
''Note: While the web interface will allow you to select input pins or output pins, some will not actually work.''  
''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''  
''example: a input switch wired but set to negContactor''
*ChaDemoAIw - '''OUTPUT''' - activates when Chademo charger handshake initiates  
{| class="wikitable"
*OBCEnable - '''OUTPUT''': activates as part of the ExtCharger module
|+
*HeaterEnable - '''OUTPUT''': activates only in run mode and when coolant pump is on*
!Pin
*RunIndication - '''OUTPUT''': activates when zombie is in run mode
!IN/OUT/PWM
* WarnIndication - '''OUTPUT:''' activates when a error occurs with the zombieverter
!Function
*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
|ChaDemoAIw
*BrakeLight - '''OUTPUT''': activates when a set brake light on threshold value is met
|'''OUTPUT'''
*ReverseLight - '''OUTPUT''': activates when reverse direction is selected
|activates when Chademo charger handshake initiates
*CoolingFan - '''OUTPUT''': activates when FanTemp setpoint is reached
|-
*HVActive '''OUTPUT''': activates when contactors are closed and VCU is in run or charge mode
|OBCEnable
*BrakeVacPump '''DIGITAL OUTPUT''': activates when BrakeVacSensor threshold value is met
|'''OUTPUT'''
*CpSpoof - '''PWM OUTPUT''': used to spoof CP signal to OBC when using a charging interface such as FOCCCI or I3LIM
|activates as part of the ExtCharger module
*GS450Hpump - '''PWM OUTPUT''': used to run GS450H oil pump
|-
*HeatReq - '''DIGITAL INPUT'''
|HeaterEnable
*HVRequest - '''DIGITAL INPUT''' - starts precharge cycle and puts VCU into charge mode
|'''OUTPUT'''
*ProxPilot - '''ANALOGUE INPUT''' - detects when charge cable is plugged in
|activates only in run mode and when coolant pump is on*
*BrakeVacSensor - '''ANALOGUE INPUT''' - vacuum sensor input, use for triggering BrakeVacPump '''DIGITAL OUTPUT'''
|-
*PWMTim3 -
|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'''
|NOT FUNCTIONING
|-
|DCFCRequest
|'''DIGITAL INPUT'''
|Chademo Charge Interface enable contactors to charge
|-
|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====
==== Proximity Pilot====
Line 192: Line 341:


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.
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://youtu.be/U3c4V8vMb6k?t=351 <br />Video explaining the setup and demonstration.]
== Initial start-up and testing ==
=== Powering up and connecting to the web interface ===
==== '''The following is required''' ====
# A fully built ZombieVerter VCU
# Two wires for power
# 12V power supply
# Computer/tablet for accessing the web interface
'''How to access the web interface'''
# Provide stable 12V power to pins 55, 56 on the ZombieVerter
# The on-board LED light "acty" should be now flashing
# 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 openinverter web interface should now load!




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


List and Overview of [[Zombieverter Parameters and Spot Values]]
'''NOTE:''' Recent units have a new WiFi module that isn't automatically assigning an IP via DHCP. See [https://openinverter.org/forum/viewtopic.php?f=5&t=2001 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.


== Initial start-up and testing ==
===Configuration===
once the
<nowiki>*</nowiki>work in progress*
 
[[Zombieverter Parameters and Spot Values|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'''


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
these voltage(UDC) levels are set with the following parameters:


'''NOTE:''' Recent units have a new wifi module that isn't automatically assigning an IP via DHCP. See [https://openinverter.org/forum/viewtopic.php?f=5&t=2001 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.
* '''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.


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.


'''Forward/Reverse'''


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.
input options:


*Apply the '''Ignition T15 in''' 12V signal.  The relay supplying 12V to the inverter should now be on.
* '''switch'''
* '''button'''
* '''switchReversed'''
* '''buttomReversed'''


*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'''.
==== Inverter ====
''work in progress''


''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!''
==== Charger ====


''work in progress''


*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".
==== Input Values ====
Check that din_break does not show "on", it must be off to allow potnom to be shown.
----
* 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 udc, it may be that your external shunt is not connected properly or is not initialised.''
Line 227: Line 432:


''if the status stays at "PRECHARGE" then you possibly didn't hold the start signal on for long enough!''
''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 inverter requires minimum of 180v to operate, it is also sensible to test with rev limit set to 1000 RPM.
[[leaf stack with zombiverter]]


==Software==
==Software==
Line 240: Line 437:
VCU boards from the webshop, '''''come pre-programed''''' and '''do not require any additional septs taken to work'''.
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]]  
For programming a blank board see: [[zombiverter programing|ZombiVerter programing]]
 
=== web interface: ===


For re-flashing a bricked board refer to the Troubleshooting section below.
==== Initializing an ISA Shunt: ====
==== Initializing an ISA Shunt: ====


# wire the ISA shunt to 12v+ and canbus input.
# Wire the ISA shunt to 12V+ and canbus input.
# under shunt can in the web interface, select the canbus the shunt is connected to
# Under shunt can in the web interface, select the canbus the shunt is connected to
# hit save parameters to flash.
# Hit save parameters to flash.
# Under Comms in the web interface, select ISAMode option. By default its set to "Normal" (Off)
# Under Comms in the web interface, select ISAMode option. By default its set to "Normal" (Off)
# select "Init"
# Select "Init"
# hit save parameters to flash
# Hit save parameters to flash
# Power cycle the vcu and shunt at same time (they should be on same 12v feed anyway).
# Power cycle the vcu and shunt at same time (they should be on same 12V feed anyway).
# The shunt will initialize.
# The shunt will initialize.
# Select ISAMode "normal"
# Select ISAMode "normal"
# save to flash again
# Save to flash again
# reboot the VCU
# Reboot the VCU


The shunt should now be up and running.
The shunt should now be up and running.
Line 263: Line 459:


== Parameters ==
== Parameters ==
[[Zombieverter Parameters and Spot Values|page with zombieverter parameters and their value ranges, ZV pinmap etc.]]
[[Zombieverter Parameters and Spot Values|page with ZombieVerter parameters and their value ranges, ZV pinmap etc.]]


Source: https://www.youtube.com/watch?v=wjlucUWX_lc
Source: https://www.youtube.com/watch?v=wjlucUWX_lc
Line 272: Line 468:
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.
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 ===
=== 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.
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.


# Firstly, download the bootloader and latest zombieverter firmware from here <ref>https://github.com/damienmaguire/Stm32-vcu/releases/</ref> and here <ref>https://github.com/jsphuebner/tumanako-inverter-fw-bootloader/releases</ref> 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).
I used a cheap STLink v2 clone without issue but it seems there is a mix of experiences with them.
# Download STMCubeProgrammer (other STM flashing softwares are available but the following instructions are based on what has worked for me).
 
# Upgrade the firmware on your STLink dongle using STMCubeProgrammer (I'm not sure if this is 100% necessary but seems prudent).
# Firstly, download the bootloader from [https://github.com/jsphuebner/tumanako-inverter-fw-bootloader/releases here] and latest ZombieVerter firmware from [https://github.com/damienmaguire/Stm32-vcu/releases/ here] as .hex files. This ensures you don't need to know the address of the file and avoids user error when flashing via STLink  
# 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.
# Download STMCubeProgrammer from [https://www.st.com/en/development-tools/stm32cubeprog.html#get-software here] (other STM flashing softwares are available but the following instructions are based on what has worked for me).
# Upgrade the firmware on your STLink dongle using STMCubeProgrammer. I'm not sure if this is 100% necessary but seems prudent.
# Connect the Clock (SWclk), Gnd and Data (SWDio) of your STLink to the ZombieVerter test points. On the ZombieVerter Board, they are labelled C, G, D.
# Connect 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.
# Perform a "full chip erase", then reflash the latest bootloader and firmware hex files.
# Perform a "full chip erase", then reflash the latest bootloader and firmware hex files.
# Remove your STLink from the zombieverter, connect the wifi board and check connectivity.
# Remove your STLink from the ZombieVerter, connect the wifi board and check connectivity.
# Begin Zombieverter-ing.
# Begin ZombieVerter-ing.
 
=== 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)


==References==
==References==

Latest revision as of 14:13, 5 April 2025

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

The ZombieVerter supports popular salvaged EV parts such as:

  • Nissan Leaf components
  • Mitsubishi Outlander hybrid components
  • Toyota and Lexus hybrid components
  • CHAdeMO and CCS DC 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, and not everything is verified working

Motors/Drive units:

Chargers/DCDCs:
Heaters:
BMS:
Cars(for canbus control over dash, etc):
  • 1998-2005 BMW 3-series (E46) CAN support
  • 1996-2003 BMW 5-series (E39) CAN support
  • 2001-2008 BMW 7-series (E65) CAN Support
  • BMW E9x CAN support
  • Mid-2000s VAG CAN support
  • Subaru CAN support

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.

  • general zombie and battery box wiring
    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 NOT FUNCTIONING
DCFCRequest DIGITAL INPUT Chademo Charge Interface enable contactors to charge
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.


Video explaining 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

work in progress

Charger

work in progress

Input Values

Check that din_break does not show "on", it must be off to allow potnom to be shown.


  • 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

For re-flashing a bricked board refer to the Troubleshooting section below.

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.

I used a cheap STLink v2 clone without issue but it seems there is a mix of experiences with them.

  1. Firstly, download the bootloader from here and latest ZombieVerter firmware from here as .hex files. This ensures you don't need to know the address of the file and avoids user error when flashing via STLink
  2. Download STMCubeProgrammer from here (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. On the ZombieVerter Board, they are labelled C, G, D.
  5. Connect 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.
  6. Perform a "full chip erase", then reflash the latest bootloader and firmware hex files.
  7. Remove your STLink from the ZombieVerter, connect the wifi board and check connectivity.
  8. Begin ZombieVerter-ing.

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)

References