ZombieVerter VCU: Difference between revisions
mNo edit summary |
No edit summary |
||
Line 29: | Line 29: | ||
* etc | * etc | ||
=== The Zombieverter | ==== The Zombieverter features the following: ==== | ||
==== hardware: ==== | ==== hardware: ==== | ||
Line 104: | Line 104: | ||
* [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 aptive 56pin 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: === | === videos on assembly, powering up, updating, etc: === | ||
Line 133: | Line 134: | ||
The low side outputs in Zombie are ideal for switching relays, such as for coolant pumps. | The low side outputs in Zombie are ideal for switching relays, such as for coolant pumps. | ||
<u>High side PWM.</u> | <u>High side PWM.</u> | ||
Line 146: | Line 145: | ||
'''*not suitable for controlling relays.''' | '''*not suitable for controlling relays.''' | ||
<u>Ground Input pins</u> | <u>Ground Input pins</u> | ||
Line 163: | Line 160: | ||
''example: a input switch wired but set to negContactor'' | ''example: a input switch wired but set to negContactor'' | ||
*ChaDemoAIw - OUTPUT - | *ChaDemoAIw - '''OUTPUT''' - activates when Chademo charger handshake initiates | ||
*OBCEnable - OUTPUT: activates as part of the ExtCharger module | *OBCEnable - '''OUTPUT''': activates as part of the ExtCharger module | ||
*HeaterEnable - OUTPUT: activates only in run mode and when coolant pump is on | *HeaterEnable - '''OUTPUT''': activates only in run mode and when coolant pump is on* | ||
*RunIndication - OUTPUT: activates when zombie is in run mode | *RunIndication - '''OUTPUT''': activates when zombie is in run mode | ||
* WarnIndication - OUTPUT | * WarnIndication - '''OUTPUT:''' activates when a error occurs with the zombieverter | ||
*CoolantPump - OUTPUT: activates during precharge, usually used for coolant pumps | *CoolantPump - '''OUTPUT''': activates during precharge, usually used for coolant pumps | ||
*NegContactor - OUTPUT: activates | *NegContactor - '''OUTPUT''': activates when the negative contactor needs to be closed. ie precharge, run, charge mode, etc | ||
*BrakeLight - OUTPUT: activates when brake | *BrakeLight - '''OUTPUT''': activates when a set brake light on threshold value is met | ||
*ReverseLight - OUTPUT: activates when direction is | *ReverseLight - '''OUTPUT''': activates when reverse direction is selected | ||
*CoolingFan - OUTPUT: activates when FanTemp setpoint is reached | *CoolingFan - '''OUTPUT''': activates when FanTemp setpoint is reached | ||
*HVActive - OUTPUT: activates when contactors are closed and VCU is in run or charge mode | *HVActive - '''OUTPUT''': activates when contactors are closed and VCU is in run or charge mode | ||
*BrakeVacPump DIGITAL OUTPUT: when BrakeVacSensor | *BrakeVacPump '''DIGITAL OUTPUT''': activates when BrakeVacSensor threshold value is met | ||
*CpSpoof - PWM OUTPUT: used to spoof CP signal to OBC | *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 | *GS450Hpump - '''PWM OUTPUT''': used to run GS450H oil pump | ||
*HeatReq - DIGITAL INPUT | *HeatReq - '''DIGITAL INPUT''' | ||
*HVRequest - DIGITAL INPUT - | *HVRequest - '''DIGITAL INPUT''' - starts precharge cycle and puts VCU into charge mode | ||
*ProxPilot - ANALOGUE INPUT - | *ProxPilot - '''ANALOGUE INPUT''' - detects when charge cable is plugged in | ||
*BrakeVacSensor - ANALOGUE INPUT - | *BrakeVacSensor - '''ANALOGUE INPUT''' - vacuum sensor input, use for triggering BrakeVacPump '''DIGITAL OUTPUT''' | ||
*PWMTim3 - | *PWMTim3 - | ||
Line 202: | Line 199: | ||
== Initial start-up and testing == | == Initial start-up and testing == | ||
once the | |||
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 | ||
Revision as of 05:55, 1 February 2025
An open-source EV conversion VCU (vehicle control unit) for controlling salvaged EV components!
- Development thread
- latest stable software release
- github repo
- fully built VCU boards
- partially-built VCU boards
Introduction
Modern EV conversion projects often look to reuse salvaged parts from OEM 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?
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. its also an open source project!
The Zombieverter supports popular salvaged EV parts such as:
- Nissan leaf motor, PDM/OBC, and batteries
- Mitsubishi outlander hybrid rear drive unit, and OBC (on board charger)
- Lexus gs450H and gs300H hybrid gearbox's
- tesla model S dcdc converter
- chademo and ccs fast charging
- etc
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
- 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
- Nissan Leaf Gen1/2/3 inverter/motor via CAN
- Nissan Leaf Gen2(and 3?) PDM (Charger and DCDC)
- CCS DC fast charge via BMW i3 LIM - type 2 + type 1
- Chademo dc fast charging
- Lexus GS450h inverter / gearbox via sync serial
- Lexus GS300h inverter/ gearbox via sync serial
- Toyota Prius/Yaris/Auris Gen 3 inverters via sync serial
- 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
- Opel Ampera / Chevy Volt 6.5kw cabin heater
- Mitsubishi outlander motors/inverter
- 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
Looking to build a zombiverter VCU your self or your kit has missing hardware?
- Zombiverter hardware page for additional build instructions
the enclosure and header are required if you did not order a fully built board
The enclosure kit options:
The original connectors are from aptiv (delphi):
- aptive 56pin connector
- aptive 56pin header
- 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
https://www.youtube.com/watch?v=iu9ffpkcxkQ
Wiring
each device requires different wiring setups, settings and power requirements.
*cross referencing OEM wiring diagrams is highly recommended
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)
- 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.
*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
- 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 - starts precharge cycle and puts VCU into charge mode
- 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.
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
wiring the zombieverter:
Initial start-up and testing
once the
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.
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:
- wire the ISA shunt to 12v+ and canbus input.
- under shunt can in the web interface, select the canbus the shunt is connected to
- hit save parameters to flash.
- Under Comms in the web interface, select ISAMode option. By default its set to "Normal" (Off)
- select "Init"
- hit save parameters to flash
- Power cycle the vcu and shunt at same time (they should be on same 12v feed anyway).
- The shunt will initialize.
- Select ISAMode "normal"
- save to flash again
- reboot the VCU
The shunt should now be up and running.
If the shunt doesn't initialize correctly, separate the shunt and VCU power supply, and power cycle the VCU two or three seconds after the shunt power is cycled. This has fixed an initialize issue for a number of ISA shunts.
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.
- 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).
- 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).
- 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.
- 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.
- Begin Zombieverter-ing.
References
- ↑ https://www.aliexpress.com/item/32857771975.html?spm=a2g0s.9042311.0.0.39f24c4dWOmGPE (Backup: Web Archive)
- ↑ https://de.aliexpress.com/item/32822692950.html (Backup: Web Archive)
- ↑ https://www.aliexpress.com/item/1005003512474442.html (Backup: Web Archive)
- ↑ https://github.com/damienmaguire/Stm32-vcu/releases/
- ↑ https://github.com/jsphuebner/tumanako-inverter-fw-bootloader/releases