ZombieVerter VCU: Difference between revisions

From openinverter.org wiki
Jump to navigation Jump to search
(ISA shunt)
Line 125: Line 125:
The leaf Inverter itself can supply UDC data for precharge (set the Shunt Type = 0)  
The leaf Inverter itself can supply UDC data for precharge (set the Shunt Type = 0)  


==== [[Tesla Model S/X Small Drive Unit ("SDU")| Tesla SDU with Zombieverter]] ====
==== [[Tesla SDU with Zombieverter]] ====
[[File:Zombieverter SDU Wiring.png|alt=Zombieverter Can Bus Control of SDU |none|thumb|421x421px]]
[[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==

Revision as of 23:40, 31 January 2025

Zombiverter VCU board

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

Introduction

There is a growing supply of OEM(original equipment manufacture) EV and hybrid parts; inverters, chargers, dc/dc converters, heaters, etc, requiring some control method in order to reuse them in a EV conversion.

After reverse engineering the communication signals for these devices, we need a control board to tell the device in question what todo. These devices often talk different "languages" some use 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?


hence the "zombieverter" VCU

The Zombieverter includes the following features:

hardware:

  • on board WIFI
  • 3x High side PWM drivers
  • 5x low side outputs
  • 3x input pins (pull to ground only)
  • 3x CANbus interfaces
  • Linbus
  • sync serial interface
  • OBD-II interface
  • etc

Software:

  • web based user interface
  • contactor control
  • charger control
  • charge timer
  • motor(inverter) control
  • heater control
  • water pump control
  • coolant fan control
  • throttle mapping
  • motor regen
  • cruise control(?)
  • BMS limits
  • IVT shunt initialization
  • data logging and graphing
  • etc

Currently supported OEM hardware:

*this list is always growing and changing, not everything is fully tested and verified


Assembling the VCU

Looking to build a zombiverter VCU your self or your kit has missing hardware?

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

The enclosure kit options:

  1. Enclosure Kit with Header, connector and pins[1]
  2. Connector and pins[2]
  3. Prewired 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

https://www.youtube.com/watch?v=iu9ffpkcxkQ

Wiring

Pin Out Diagrams

VCU pinout diagram




GS450H with zombieverter

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

Error creating thumbnail: File with dimensions greater than 12.5 MP

As of software release V2.20A, the IVT shunt used for UDC data is no longer required for precharge.

The leaf Inverter itself can supply UDC data for precharge (set the Shunt Type = 0)

Tesla SDU with Zombieverter

Zombieverter Can Bus Control of SDU

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

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

web interface:

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.


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

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 your ZV fails on the update and the Web User Interface is reporting "firmware: null" it's possibleyou'll need to reflash the firmware, bootloader via an STLink and/or delete any existing .bin and .Json files from the files section.

  1. Firstly, download the bootloader and latest zombieverter firmware from here [4] and here [5] as .hex files, this ensures you don't need to know the address of the file and avoids user error when flashing via STLink (I used a cheap STLink v2 clone without issue but it seems there is a mix of experiences with them).
  2. Download STMCubeProgrammer (other STM flashing softwares are available but the following instructions are based on what has worked for me).
  3. Upgrade the firmware on your STLink dongle using STMCubeProgrammer (I'm not sure if this is 100% necessary but seems prudent).
  4. Connect the Clock (SWclk), Gnd and Data (SWDio) of your STLink to the Zombieverter test points (near to the STM32 chip, they are labelled C, G, D) as well as 12V and Gnd to the Zombieverter main power pins and ensure your STMCubeprogrammer is able to connect to it, I also disconnected the wifi board just incase.
  5. Perform a "full chip erase", then reflash the latest bootloader and firmware hex files.
  6. Remove your STLink from the zombieverter, connect the wifi board and check connectivity.
  7. Begin Zombieverter-ing.

References