ZombieVerter VCU: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
m (Added VCU and ZombieVerter categories)
m (missed a header)
 
(44 intermediate revisions by 18 users not shown)
Line 25: Line 25:




With onboard wifi, you can access the open inverter web interface to:
With onboard wifi, you can access the open inverter web interface (http://192.168.4.1/) to:


* set up/calibrate the different devices(inverter, charger, etc) connected to the vcu.
* set up/calibrate the different devices(inverter, charger, etc) connected to the vcu.
Line 40: Line 40:
* linbus
* linbus
* sync serial
* sync serial
* flexray
* etc
* etc


Line 48: Line 47:
* [[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 PDM (Charger and DCDC)
* Nissan Leaf Gen2 PDM (Charger and DCDC)
*[[BMW I3 Fast Charging LIM Module|CCS DC fast charge via BMW i3 LIM]] - type 2 (type 1 under development?)
*[[BMW I3 Fast Charging LIM Module|CCS DC fast charge via BMW i3 LIM]] - type 2 + type 1
* Chademo dc fast charging
* [[Chademo with Zombieverter|Chademo dc fast charging]]
* [[Lexus GS450h Drivetrain|Lexus GS450h inverter / gearbox via sync serial]]
* [[Lexus GS450h Drivetrain|Lexus GS450h inverter / gearbox via sync serial]]
* Lexus GS300h inverter/ gearbox via sync serial
* Lexus GS300h inverter/ gearbox via sync serial
Line 56: Line 55:
* 1996-2003 BMW 5-series (E39) CAN support
* 1996-2003 BMW 5-series (E39) CAN support
* 2001-2008 BMW 7-series (E65) CAN Support
* 2001-2008 BMW 7-series (E65) CAN Support
* BMW E9x CAN support
* Mid-2000s VAG CAN support
* Mid-2000s VAG CAN support
* subaru CAN support
* subaru CAN support
Line 61: Line 61:
*vw cabin heater via lin
*vw cabin heater via lin
*[[:Category:Mitsubishi|Mitsubishi outlander motors/inverter]]
*[[:Category:Mitsubishi|Mitsubishi outlander motors/inverter]]
* [[VAG MEB Chargers|vw onboard chargers]] (coming soon)
*[https://citini.com/product/evs-charge-port-controller/ EVS-Charge Port Controller]




Line 71: Line 71:




What we have as of now is the openinverter wrapper with things like :
features of the zombiverter offers:


*Throttle cal and mapping,
*Throttle mapping
*Precharge and contactor control,
*Precharge and contactor control
*Temp derating,
*coolant pump control
*BMS limits,
*Temp derating
*for/rev/neutral control,
*BMS limits
*Graphing and monitoring,
*for/rev/neutral control
*Firmware updates via the web interface,
*Graphing and monitoring  
*Cruise control,
*Firmware updates via the web interface
*Fuel gauge driver,
*Cruise control
**traction control*
*Fuel gauge driver
*heater controller
*charge timer
*custom pwm out puts
*etc
*etc


Line 121: Line 126:
|IC27, IC28, IC29
|IC27, IC28, IC29
|FAN3122
|FAN3122
|
|MIC4422YM (according to https://openinverter.org/forum/viewtopic.php?p=72827#p72827)
|}
|}


 
NOTE : R50 will need to be changed to 1k and C45 to 1n in order for LIN to work properly. This will be amended on further builds. So if you have a board ordered before 14/03/24 this change is required.
===The enclosure kit links===
===The enclosure kit links===


Line 131: Line 136:
*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>
*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>
*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>
*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>
*Prewired connector with 3M leads (limited colors which will not match standard wire colouring conventions)<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>
*Prewired connector with 3M leads (limited colors which will not match standard wire colouring conventions)<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>-Removal tool for connector terminals: Manufacturer: Aptiv (formerly Delphi) https://www.tti.com/content/ttiinc/en/apps/part-detail.html?partsNumber=210S048&mfgShortname=FCA&productId=161404611 TTI Part Number: 210S048 Mfr Part Number: 210S048




Line 139: Line 144:
'''Note that in addition to the VCU, the inverter and transmission, you will require a specific CANBUS connected shunt''': [[Isabellenhütte Heusler]]
'''Note that in addition to the VCU, the inverter and transmission, you will require a specific CANBUS connected shunt''': [[Isabellenhütte Heusler]]


=== Assemble VCU V1a ===
Basic description of the minimal assembly needed for the V1a Zombieverter board.
==== What comes in the package ====
[[File:ZombieVerterParts.jpg|none|thumb|Zombieverter Parts]]
==== Assembly Steps ====
You need to solder the pin header to the Wifi board, and the smaller pin socket to the Zombieverter board.  Since they both fit loosely, it's is best to plug the pin header into the pin socket, then set the stacks into the holes on the board, and set the wifi unit on top - getting all the pins into the holes.  This will be wobbly and won't sit up straight on it's own.  I set a block to the side that both the boards would touch, holding them upright.  I then carefully soldered the pins on the wifi unit.  The reason you have everything plugged together is to make sure that the pins will perfectly line up with the sockets.
[[File:WifiConnectorView.jpg|thumb|Shows which connector is soldered to which board.]]
[[File:WifiStackOnZV.jpg|none|thumb|Propping up the wifi on the loose connectors.]]
Then turn the Board over, and solder the socket pins to the Zombieverter.  Keep the Wifi board plugged in to be sure the sockets stay aligned properly! You'll need to find something to prop up the other side of the Zombieverter board so that it's level.
The next step is to solder the big multi-pin connector that hooks to everything else.  I bought the Enclosure Kit, which comes with the connectors.  Since the connector fits tightly to the board, you just need to carefully sqeeze the board down over the pins, and make sure it's pressed down for the full length of the connector.  Then you can just solder all the pins.
[[File:ZombieVerterConnector.jpg|none|thumb|Large connector soldered to board]]


===Build and Configuration Videos===
===Build and Configuration Videos, VCU V1===
====ZombieVerter VCU V1 Build Part 1====
====ZombieVerter VCU V1 Build Part 1====
<youtube>https://www.youtube.com/watch?v=geZuIbGHh30</youtube>
<youtube>https://www.youtube.com/watch?v=geZuIbGHh30</youtube>
Line 1,713: Line 1,732:
|}
|}
==Installation==
==Installation==
'''Pin Out Diagram'''[[File:ZombieVerter VCU V1 cable side pinout.jpg|thumb|alt=|VCU pinout diagram |none]]
[[File:Zomb-con-et.png|none|thumb|List of connections to system components (GS450 application)]]


=== '''Pin Out Diagrams''' ===


==== [[Lexus GS450h Drivetrain|GS450H with zombieverter]] ====
[[File:ZombieVerter VCU V1 cable side pinout2.jpg|thumb|alt=|VCU pinout diagram |none]]
[[File:Zomb-con-et2.png|none|thumb|List of connections to system components (GS450 application)]]
Further information for a GS450 system can be found here: [[Lexus GS450h Drivetrain]]
Further information for a GS450 system can be found here: [[Lexus GS450h Drivetrain]]


'''Note''': In the software port 0 = EXT2 and port 1 = EXT
'''Note''': Diagrams updated so CAN EXT and CAN EXT2 now match the schematic and web interface.
 
==== [[Leaf stack with zombiverter]] ====
[[File:Zombi-leaf-wiring1.png|none|thumb|416x416px|leaf stack to zombie]]
 
==== [[Tesla Model S/X Small Drive Unit ("SDU")| Tesla SDU with Zombieverter]] ====
[[File:Zombieverter SDU Wiring.png|alt=Zombieverter Can Bus Control of SDU |none|thumb|421x421px]]
Notes:


* This drawing is intended to show the minimum components and connections needed for Zombieverter control of an OI SDU via Can bus.  Adapting power and Can bus connections for other OI inverters should function in the same manner, but this needs verification.
* All power connections must be fuse protected.  Fuses are not shown for simplification.
* The following observations were made using Zombieverter firmware 2.20A and SDU firmware 5.35R:
# The Zombieverter does not enable inverter power prior to entering PreCharge mode.  An external device other than the inverter is required to supply the udc measurement for switch to Run mode.  This function is supported by the shunt and BMS options available in the Zombieverter parameters.
# A third device must be on the Can bus with the Zombieverter and Inverter.
# Requirements 1. and 2. are satisfied in the drawing by the IVT shunt.
# All devices except the Zombieverter are shown as powered by the ignition switch.  Some devices may need to move to permanent 12V supply to support other functions, such as charging.
# An inverter power relay is required for Zombieverter control.
# Can mapping to pass data and commands from the Zombieverter to the inverter is hard coded in the firmware for both devices.  Manual mapping is required for the inverter to transmit data to the Zombieverter.  The Zombieverter is hard coded to receive this data.  The following values need to be manually mapped in the inverter. Note: mapping uses hex address values, multipliers may need to change to provide correct values (confirm in Zombieverter spot values), inverter udc gets mapped to inv udc in the Zombieverter.
{| class="wikitable"
|'''Spot Value'''
|'''Hex Address'''
|'''Offset'''
|'''# Bits'''
|'''Multiplier'''
|'''Map'''
|-
|speed
|400
|0
|16
|1
|Tx
|-
|tmphs
|410
|0
|16
|10
|Tx
|-
|udc
|420
|0
|16
|10
|Tx
|-
|opmode
|430
|0
|8
|1
|Tx
|}


==Initial start-up and testing==
==Initial start-up and testing==
Line 1,726: Line 1,801:
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
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


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


Then navigate to 192.168.4.1 to see the huebner inverter dashboard.
Then navigate to 192.168.4.1 to see the huebner inverter dashboard.
Line 1,734: Line 1,809:




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.
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.
*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'''.
*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 below where your off-throttle position is, and '''potmax''' just above the value seen at maximum travel [note this used to be the opposite prior to version 1.06A). 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!''
''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".
*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 1,755: Line 1,829:
*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.
*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.
* 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 VCU requires minimum of 180v to operate, it is also sensible to test with rev limit set to 1000 RPM.
*
*
**''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 1,765: Line 1,839:
[https://github.com/damienmaguire/Stm32-vcu '''Github for the project:''' https://github.com/damienmaguire/Stm32-vcu]
[https://github.com/damienmaguire/Stm32-vcu '''Github for the project:''' https://github.com/damienmaguire/Stm32-vcu]


 
>Use this bootloader: https://github.com/jsphuebner/stm32-CANBootloader


'''Unless you have a specific reason not to, end users should use a released version from: https://github.com/damienmaguire/Stm32-vcu/releases<nowiki/>.'''
'''Unless you have a specific reason not to, end users should use a released version from: https://github.com/damienmaguire/Stm32-vcu/releases<nowiki/>.'''
Line 1,812: Line 1,886:
Make the above changes to these files for the '''GigaDevices GD32F107'''.
Make the above changes to these files for the '''GigaDevices GD32F107'''.


== Software update==
==Software update==


As supplied, both the ESP8266 (the wifi plug-in board) and the STM32 (main MPU) are pre-loaded.
As supplied, both the ESP8266 (the wifi plug-in board) and the STM32 (main MPU) are pre-loaded.
Line 1,829: Line 1,903:
[[File:0B35D4F9-BA64-46E7-A570-A0CE1D619D63.jpg|none|thumb]]
[[File:0B35D4F9-BA64-46E7-A570-A0CE1D619D63.jpg|none|thumb]]


===Initializing an ISA Shunt ===
===Initializing an ISA Shunt===
Under Comms in the web interface, there is now an ISAMode option. By default its in "Normal". If you want to initialize a new shunt, connect it up, power on the shunt and vcu, 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 and reboot again. The shunt should now be up and running.
Under Comms in the web interface, there is now an ISAMode option. By default its in "Normal" (Off on Rev 2). If you want to initialize a new shunt, connect it up, power on the shunt and vcu, select "Init" (On on Rev 2), 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" (Off on Rev 2), save to flash again and reboot again. The shunt should now be up and running.
==Supported OEM Hardware==
If the shunt doesn't initialise correctly, separate the shunt and VCU supplies and power cycle the VCU two or three seconds after the shunt power is cycled.
This has fixed an initialise issue for a number of ISA shunts and possibly requires a VCU code fix that delays the initialising for a few seconds to allow the shunt to power up.
 
==Pin Input/Output and functions==
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>
 
*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.
 
 
<u>High side PWM.</u>
 
*PWM 3
*PWM 2
*PWM 1
*Pump PWM - Limited to GS450 Oil pump pwm or tacho pwm output


* Nissan Leaf Gen1/2/3 inverter via CAN
These are high side 12v outputs, usually for controlling gauges or auxiliary items than need a pwm signals. They are not suitable for controlling relays.
* Nissan Leaf Gen2 PDM (Charger and DCDC)
 
* [[BMW I3 Fast Charging LIM Module|CCS DC fast charge via BMW i3 LIM]] - currently type 2 only, type 1 under development
 
* Lexus GS450h inverter / gearbox via sync serial
<u>Ground Input pins</u>
* Toyota Prius/Yaris/Auris Gen 3 inverters via sync serial
 
* 1998-2005 BMW 3-series (E46) CAN support
These pins pull down to ground only. '''Do not connect any voltage to these pins.'''
* 1996-2003 BMW 5-series (E39) CAN support
 
* 2001-2008 BMW 7-series (E65) CAN Support
PB1
* Mid-2000s VAG CAN support
 
* [[Chevrolet Volt Water Heater|Opel Ampera / Chevy Volt 6.5kw cabin heater]]
PB2
 
PB3
 
======Pin functions:======
''Note: While the web interface will allow input pins to be set to output and vice versa this will not actually work.''
*ChaDemoAIw - OUTPUT - used as part of the Chademo charging protocol for the charge allow output to the charger.
*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
*CoolantPump - OUTPUT: activates during precharge, usually used for coolant pumps
*NegContactor - OUTPUT: activates during precharge for negative contactor
*BrakeLight - OUTPUT: activates when brake input is detected
*ReverseLight - OUTPUT: activates when direction is reverse
*BrakeVacPump DIGITAL OUTPUT: when BrakeVacSensor below threshold this is turned on.
*HeatReq - DIGITAL INPUT
*HVRequest - DIGITAL INPUT - when used with ext charger setting will start precharge cycle and put VCU into charge mode.
*ProxPilot - ANALOGUE INPUT - detect a charging cable plug in, requires external resistors, values depend on type 1 or type 2
*BrakeVacSensor - ANALOGUE INPUT - read a vacuum sensor and turn on the BrakeVacPump DIGITAL OUTPUT
*CoolingFan - OUTPUT: activates when FanTemp setpoint is reached
*HVActive -  OUTPUT: activates when contactors are closed and VCU is in run or charge mode
*PWMTim3 -
*CpSpoof - PWM OUTPUT: used to spoof CP signal to OBC if also using a charging interface such as FOCCCI or I3LIM
*GS450Hpump - PWM OUTPUT: used to run GS450H oil pump
 
==== Proximity Pilot====
This analogue input used to detect a charging cable is plugged in.
[[File:ZombiePP.png|none|thumb]]
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]]
 
==Firmware ==
 
[Note: This is just an attempt to document what Damien verbally mentions in the VCU Firmware v2.20A video. Please flesh this out, (including the things I skip that he says aren't new), verify it, explain it better, etc, then delete this editor note. Anyone reading this note, it means no one has put further effort into it, don't trust it yet.]
 
[Note2: To keep this in mind too, there is a [[Zombieverter Parameters and Spot Values|page with zombieverter parameters and their value ranges, ZV pinmap etc.]] This was created in October for version 2.17.A as indicated in spot values table.]
 
Source: https://www.youtube.com/watch?v=wjlucUWX_lc
 
{| class="wikitable"
|-
! Parameter !! Explanation
|-
|'''General Setup'''||
|-
|Inverter||OEM Inverter being repurposed.
Leaf_Gen1 is not only for first gen leafs, it works with others.
|-
|Vehicle||Selection of vehicles supported by CAN
|-
|GearLvr||Various gear levers supported by CAN
|-
|Transmission||
|-
|interface||Charging Interface
Is there a system between the charging port and the onboard charger, various supported fast-charging interfaces.
|-
|chargemodes||What type of battery charger is in the vehicle.
|-
|BMS_Mode||Types of supported BMSs. Works with ShuntType parameter (?how?)
|-
|ShuntType||Type of current measuring shunts. Effects the list of BMS_Mode parameter.
|-
|InverterCan||
|-
|VehicleCan||
|-
|ShuntCan||
|-
|LimCan||
|-
|ChargerCan||
|-
|BMSCan||
|-
|ODB2CDan||
|-
|CanMapCan||
|-
|DCDCCan||
|-
|HeaterCan||
|-
|MotActive||Selects how to use the two-motor setups (MG1 and MG2) inside Toyota drivetrains.
Mg1and2 - Uses MG1 and MG2 (in what way? how?)
 
Mg1 - Just MG1
 
Mg2 - Just MG2
 
BlendingMG2and1 - For low speed driving, only MG2 is used, but when higher throttle demanded, also engages MG1 to help
|-
|'''Throttle'''||
|-
|revRegen||On/Off, sets if vehicle uses regenerative braking when in reverse.
|-
|throtmaxRev||Sets what percentage of throttle is available in reverse (is this scaled, or just capped?)
|-
|'''Charger Control'''||
|-
|ChgACVolt||AC voltage of charger.
|-
|ChgEff||Sets expected charger efficiency (to help software accommodate for losses? perhaps for timing predictions?)
|-
|ConfigFocci||On/Off one-click setup if using the open-source FOCCI (link?) DC Fast Charging hardware, communicates with the FOCCI module
|-
|'''General Purpose I/O'''||
|-
|PumpPWM||Selects between gear oil pump or repurposes as a tachometer signal.
GS450hOut - If using GS450h transmission oil pump drive.
 
TachoOut - If wanting to drive an analog tachometer from transmission pulses. Works with TachoPPR parameter.
|-
|PWM1Funct||General use PWM (?).
CpSpoof - Allows spoofing signals between different charging hardware to allow communication across CAN & PWM expectations. Works with CP_PWM parameter.
|-
|PB1InFunc||General use pin functions. I.E. Gear positions.
ONLY leave open/floating or connect to ground. No 12v, 5v anything ese. Do not have current or voltage driven into them, do not drive any signals with these, it will destroy the hardware.
|-
|ppthresh||Proximity Pilot (plug present) Threshold. Detects the presence of charge plug to enable charging.
|-
|DigiPot1Step||Sets resistance of digital potentiometer.
|-
|FanTemp||Allows fan control by setting temperature fans would turn on.
|-
|TachoPPR||Calibrates how many Pulses Per Revolution to give an analog tachometer, depending on what the OEM expectation was. Works with PumpPWM parameter.
|-
|'''PWM Control'''||
|-
|CP_PWM||This is effectively a spot value as the code that would use it is commented out. It shows the spoofed CP value if using i3LIM, CPC or Focci interface.
|}


== Troubleshooting ==
==Troubleshooting ==


=== Serial Connection ===
===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.
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.


== References ==
==References==
<references />
<references />
[[Category:Inverter]] [[Category:VCU]] [[Category:ZombieVerter]]
[[Category:Inverter]]  
[[Category:VCU]]  
[[Category:ZombieVerter]]

Latest revision as of 01:17, 18 December 2024

KINDLY NOTE:
  • A fully tested V1a kit is now (Nov2022) available for general sale here. The boards are now shipping with the Wemos wifi module and all parts will be included in the kit. The Olimex header is still there for those who may prefer that option. See this post for the Wemos wifi module mounting location.

Development continues and you can follow and contribute along with the development here on the forum

Support is available via this section on the forum

Introduction

There is a growing supply of OEM inverters, chargers, dc/dc converters, heaters, etc, requiring some control method in order to use them in a EV conversion. Instead of replacing the original logic board in these devices (with some devices it is physically impossible to do so), a vehicle control unit (vcu) which talks in its native communication protocol is a much more elegant solution. With a vcu, we can simply tell these logic boards what we want in a language they can understand, and they will do it. As far as they are concerned, they are still installed in the OEM vehicle they left the factory in.

What is not elegant is having a series of bespoke vcu boards for each device. Instead, a master vcu which can handle a variety of different communication protocols(thus a variety of devices) was born; the zombiVerter !

The zombieVerter is available via evbmw's web shop https://www.evbmw.com/index.php/evbmw-webshop/vcu-boards/zombie-vcu


Based around the original design of the open inverter platform, the zombieVerter consists of 2 main parts:

  • a web interface
  • a communication protocol


With onboard wifi, you can access the open inverter web interface (http://192.168.4.1/) to:

  • set up/calibrate the different devices(inverter, charger, etc) connected to the vcu.
  • tune control parameters (throttle, regen, charge speed, charge time, BMS limits, etc)
  • log info
  • graph and plot live data (rpm, amps, charge rate, etc)
  • update firmware


there are many different methods these OEM devices communicate, all which the zombieVerter can speak!

  • pwm
  • canbus
  • linbus
  • sync serial
  • etc


growing list of supported OEM hardware:


It's basically an rip off homage and builds on other people's hard work in the shape of the following projects


features of the zombiverter offers:

  • Throttle mapping
  • Precharge and contactor control
  • coolant pump control
  • Temp derating
  • BMS limits
  • for/rev/neutral control
  • Graphing and monitoring
  • Firmware updates via the web interface
  • Cruise control
    • traction control*
  • Fuel gauge driver
  • heater controller
  • charge timer
  • custom pwm out puts
  • etc

Hardware

Location of remaining parts

So you've ordered your kit, first things first, watch the following two videos to assemble it.

Due to chip shortages (written summer 2021) the board isn't fully assembled so you will need to do some soldering, or take it to a local phone repair shop (or similar) who'll find soldering at this scale like playing with Duplo (Legos to you Yanks).

Parts to be fitted to ZombieVerter VCU
Name Part Numer Alternative Part Number
CONN1
IC10 MCP25625T
IC14 TJA1020 MCP2004
IC19 NCV7356
IC20 TJA1055T
IC21, IC22 AD5160
IC27, IC28, IC29 FAN3122 MIC4422YM (according to https://openinverter.org/forum/viewtopic.php?p=72827#p72827)

NOTE : R50 will need to be changed to 1k and C45 to 1n in order for LIN to work properly. This will be amended on further builds. So if you have a board ordered before 14/03/24 this change is required.

The enclosure kit links

You only need one, but below are two options - one with just the connector, and the other prewired with 3m long leads. The reference part numbers are 211PC562S8009 and 211PC562S0008.


The kits do not come with M3 screws needed to secure the board to the enclosure (2 need to be slightly longer), and to secure the lid. Nor a gasket for the lid.


Note that in addition to the VCU, the inverter and transmission, you will require a specific CANBUS connected shunt: Isabellenhütte Heusler

Assemble VCU V1a

Basic description of the minimal assembly needed for the V1a Zombieverter board.

What comes in the package

Zombieverter Parts

Assembly Steps

You need to solder the pin header to the Wifi board, and the smaller pin socket to the Zombieverter board. Since they both fit loosely, it's is best to plug the pin header into the pin socket, then set the stacks into the holes on the board, and set the wifi unit on top - getting all the pins into the holes. This will be wobbly and won't sit up straight on it's own. I set a block to the side that both the boards would touch, holding them upright. I then carefully soldered the pins on the wifi unit. The reason you have everything plugged together is to make sure that the pins will perfectly line up with the sockets.

Shows which connector is soldered to which board.
Propping up the wifi on the loose connectors.

Then turn the Board over, and solder the socket pins to the Zombieverter. Keep the Wifi board plugged in to be sure the sockets stay aligned properly! You'll need to find something to prop up the other side of the Zombieverter board so that it's level.

The next step is to solder the big multi-pin connector that hooks to everything else. I bought the Enclosure Kit, which comes with the connectors. Since the connector fits tightly to the board, you just need to carefully sqeeze the board down over the pins, and make sure it's pressed down for the full length of the connector. Then you can just solder all the pins.

Large connector soldered to board

Build and Configuration Videos, VCU V1

ZombieVerter VCU V1 Build Part 1

ZombieVerter VCU V1 Build Part 2

ZombieVerter VCU V1 Part 3

ZombieVerter VCU V1 Build Part 4

Installation

Pin Out Diagrams

GS450H with zombieverter

VCU pinout diagram
List of connections to system components (GS450 application)

Further information for a GS450 system can be found here: Lexus GS450h Drivetrain

Note: Diagrams updated so CAN EXT and CAN EXT2 now match the schematic and web interface.

Leaf stack with zombiverter

leaf stack to zombie

Tesla SDU with Zombieverter

Zombieverter Can Bus Control of SDU

Notes:

  • This drawing is intended to show the minimum components and connections needed for Zombieverter control of an OI SDU via Can bus.  Adapting power and Can bus connections for other OI inverters should function in the same manner, but this needs verification.
  • All power connections must be fuse protected.  Fuses are not shown for simplification.
  • The following observations were made using Zombieverter firmware 2.20A and SDU firmware 5.35R:
  1. The Zombieverter does not enable inverter power prior to entering PreCharge mode.  An external device other than the inverter is required to supply the udc measurement for switch to Run mode.  This function is supported by the shunt and BMS options available in the Zombieverter parameters.
  2. A third device must be on the Can bus with the Zombieverter and Inverter.
  3. Requirements 1. and 2. are satisfied in the drawing by the IVT shunt.
  4. All devices except the Zombieverter are shown as powered by the ignition switch.  Some devices may need to move to permanent 12V supply to support other functions, such as charging.
  5. An inverter power relay is required for Zombieverter control.
  6. Can mapping to pass data and commands from the Zombieverter to the inverter is hard coded in the firmware for both devices.  Manual mapping is required for the inverter to transmit data to the Zombieverter.  The Zombieverter is hard coded to receive this data.  The following values need to be manually mapped in the inverter. Note: mapping uses hex address values, multipliers may need to change to provide correct values (confirm in Zombieverter spot values), inverter udc gets mapped to inv udc in the Zombieverter.
Spot Value Hex Address Offset # Bits Multiplier Map
speed 400 0 16 1 Tx
tmphs 410 0 16 10 Tx
udc 420 0 16 10 Tx
opmode 430 0 8 1 Tx

Initial start-up and testing

Wifi Setup

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

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.

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.


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

Github for the project: https://github.com/damienmaguire/Stm32-vcu

>Use this bootloader: https://github.com/jsphuebner/stm32-CANBootloader

Unless you have a specific reason not to, end users should use a released version from: https://github.com/damienmaguire/Stm32-vcu/releases.


GD variant:

Status as of November 20 2021

Early boards fitted with the GigaDevices GD32F107 aka "GD chip" require different firmware routines than STM32F107 equipped boards. See this Zombieverter VCU Support Thread forum post

The GigaDevices `GD32F107 was chosen as an alternative to the ST equivalent due to microchip shortages during the COVID-19 pandemic. A specific branch of firmware code for the GD32F107 variant is found here: https://github.com/damienmaguire/Stm32-vcu/tree/GD_Zombie However development of this variant was abandoned shortly after it's release.

As of this writing , The GD_Zombie branch has fallen behind and substantially diverged from the primary code base. It has been suggested that work needs to be done to make the present firmware chip agnostic via detection routines. See this Zombieverter Development Thread forum post. As of this writing that work has yet to be undertaken and remains to be organized and completed. And issue has be devoted to tracking this progress here: Issue #21

Here is a link to a post with a pre compiled bin and hex for the GD_Zombie created by Damien on the 23/11/21; ZombieVerter VCU Support - Page 9 - openinverter forum This is based on the 16/6/21 code it is not an update. Ensure you rename the binaries to stm32_vcu.xxx to ensure no wifi issues.

UPDATE November 23 2021

Updated information about the necessary edits to make to the STM32 based firmware have been posted in a forum post here. In order to get the firmware to compile and run on the GD32F107 you must make the following changes:

In the file "anain.cpp" @ line 68:

68 - // adc_start_conversion_regular(ADC1); // Comment out for GD MCUIn the file "stm32_can.cpp" @ starting at line 305 modify as follows :

305 - gpio_set_mode(GPIO_BANK_CAN2_RE_RX, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO_CAN2_RE_RX);

306 - gpio_set(GPIO_BANK_CAN2_RE_RX, GPIO_CAN2_RE_RX);

307 - // Configure CAN pin: TX.-

308 - gpio_set_mode(GPIO_BANK_CAN2_RE_TX, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_CAN2_RE_TX);


If you properly clone the repository with git on the command line that looks like this;

git clone --recurse-submodules git@github.com:damienmaguire/Stm32-vcu.git

That recursively pulls in copies of libopeninv, etc and tracks them...   Hence your file-path should look like

./Stm32-vcu/libopeninv/src/

within the libopeninv src (source) directory you will find anain.cpp and stm32_can.cpp

Make the above changes to these files for the GigaDevices GD32F107.

Software update

As supplied, both the ESP8266 (the wifi plug-in board) and the STM32 (main MPU) are pre-loaded.

The "UART Update" field on the GUI can be given a stm32_vcu.bin file to update the firmware. Note that at this time, loading via Windows 10 is suspect and may lock you out of the board. Ubuntu works best.

Unless you have a specific reason not to, end users should use a released version from: https://github.com/damienmaguire/Stm32-vcu/releases.


By using the ST-Link V2 in-circuit loader, .hex files can be sent to the board to initialize a fresh STM32 MCU, or if it can't be loaded via the bootloader.

Unless you have a specific reason not to, end users should use a released version from: https://github.com/damienmaguire/Stm32-vcu/releases.


The connections needed to use the ST-Link loader are shown below:

0B35D4F9-BA64-46E7-A570-A0CE1D619D63.jpg

Initializing an ISA Shunt

Under Comms in the web interface, there is now an ISAMode option. By default its in "Normal" (Off on Rev 2). If you want to initialize a new shunt, connect it up, power on the shunt and vcu, select "Init" (On on Rev 2), 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" (Off on Rev 2), save to flash again and reboot again. The shunt should now be up and running. If the shunt doesn't initialise correctly, separate the shunt and VCU supplies and power cycle the VCU two or three seconds after the shunt power is cycled. This has fixed an initialise issue for a number of ISA shunts and possibly requires a VCU code fix that delays the initialising for a few seconds to allow the shunt to power up.

Pin Input/Output and functions

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. They are 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 input pins to be set to output and vice versa this will not actually work.

  • ChaDemoAIw - OUTPUT - used as part of the Chademo charging protocol for the charge allow output to the charger.
  • 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
  • CoolantPump - OUTPUT: activates during precharge, usually used for coolant pumps
  • NegContactor - OUTPUT: activates during precharge for negative contactor
  • BrakeLight - OUTPUT: activates when brake input is detected
  • ReverseLight - OUTPUT: activates when direction is reverse
  • BrakeVacPump DIGITAL OUTPUT: when BrakeVacSensor below threshold this is turned on.
  • HeatReq - DIGITAL INPUT
  • HVRequest - DIGITAL INPUT - when used with ext charger setting will start precharge cycle and put VCU into charge mode.
  • ProxPilot - ANALOGUE INPUT - detect a charging cable plug in, requires external resistors, values depend on type 1 or type 2
  • BrakeVacSensor - ANALOGUE INPUT - read a vacuum sensor and turn on the BrakeVacPump DIGITAL OUTPUT
  • CoolingFan - OUTPUT: activates when FanTemp setpoint is reached
  • HVActive - OUTPUT: activates when contactors are closed and VCU is in run or charge mode
  • PWMTim3 -
  • CpSpoof - PWM OUTPUT: used to spoof CP signal to OBC if also using a charging interface such as FOCCCI or I3LIM
  • GS450Hpump - PWM OUTPUT: used to run GS450H oil pump

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

Firmware

[Note: This is just an attempt to document what Damien verbally mentions in the VCU Firmware v2.20A video. Please flesh this out, (including the things I skip that he says aren't new), verify it, explain it better, etc, then delete this editor note. Anyone reading this note, it means no one has put further effort into it, don't trust it yet.]

[Note2: To keep this in mind too, there is a page with zombieverter parameters and their value ranges, ZV pinmap etc. This was created in October for version 2.17.A as indicated in spot values table.]

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

Parameter Explanation
General Setup
Inverter OEM Inverter being repurposed.

Leaf_Gen1 is not only for first gen leafs, it works with others.

Vehicle Selection of vehicles supported by CAN
GearLvr Various gear levers supported by CAN
Transmission
interface Charging Interface

Is there a system between the charging port and the onboard charger, various supported fast-charging interfaces.

chargemodes What type of battery charger is in the vehicle.
BMS_Mode Types of supported BMSs. Works with ShuntType parameter (?how?)
ShuntType Type of current measuring shunts. Effects the list of BMS_Mode parameter.
InverterCan
VehicleCan
ShuntCan
LimCan
ChargerCan
BMSCan
ODB2CDan
CanMapCan
DCDCCan
HeaterCan
MotActive Selects how to use the two-motor setups (MG1 and MG2) inside Toyota drivetrains.

Mg1and2 - Uses MG1 and MG2 (in what way? how?)

Mg1 - Just MG1

Mg2 - Just MG2

BlendingMG2and1 - For low speed driving, only MG2 is used, but when higher throttle demanded, also engages MG1 to help

Throttle
revRegen On/Off, sets if vehicle uses regenerative braking when in reverse.
throtmaxRev Sets what percentage of throttle is available in reverse (is this scaled, or just capped?)
Charger Control
ChgACVolt AC voltage of charger.
ChgEff Sets expected charger efficiency (to help software accommodate for losses? perhaps for timing predictions?)
ConfigFocci On/Off one-click setup if using the open-source FOCCI (link?) DC Fast Charging hardware, communicates with the FOCCI module
General Purpose I/O
PumpPWM Selects between gear oil pump or repurposes as a tachometer signal.

GS450hOut - If using GS450h transmission oil pump drive.

TachoOut - If wanting to drive an analog tachometer from transmission pulses. Works with TachoPPR parameter.

PWM1Funct General use PWM (?).

CpSpoof - Allows spoofing signals between different charging hardware to allow communication across CAN & PWM expectations. Works with CP_PWM parameter.

PB1InFunc General use pin functions. I.E. Gear positions.

ONLY leave open/floating or connect to ground. No 12v, 5v anything ese. Do not have current or voltage driven into them, do not drive any signals with these, it will destroy the hardware.

ppthresh Proximity Pilot (plug present) Threshold. Detects the presence of charge plug to enable charging.
DigiPot1Step Sets resistance of digital potentiometer.
FanTemp Allows fan control by setting temperature fans would turn on.
TachoPPR Calibrates how many Pulses Per Revolution to give an analog tachometer, depending on what the OEM expectation was. Works with PumpPWM parameter.
PWM Control
CP_PWM This is effectively a spot value as the code that would use it is commented out. It shows the spoofed CP value if using i3LIM, CPC or Focci interface.

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.

References