I ended up with lots of needs for extra inputs and outputs in addition to the GS450H VCU or the ZombieVerter (to which I'll swap at some point):
- Shifter LEDs are controlled by 4 lines
- Cruise control inputs
- Driver door needs to be monitored and warning alarm to be sounded in certain situation according to Finnish legislation for EV conversions
- Vacuum pump control based on sensor
- Cabin heating pump
- Radiator cooling fan
- System needs to be powered up in situations other than ignition key operation (charging by OBC or fast charging; remote operated heating in the future, maybe 12V top-up if it gets low)
- I wanted to have extra logic for controlling the power steering pump and the vacuum pump so that when the car is charging they don't turn on even if ignition is on
- Battery heater PWM control
- Battery coolant loop pump power (maybe PWM in the future)
- Battery cooling/heating solenoid valve
- OBC 12V feed needs to be switched separately from the rest of the system for cable plug-in monitoring
- Fuel gauge needs to be driven
- I want to drive some other gauges in the future too
- I'd like to do CHAdeMO comms with this in the future too. Generally I need a piece of hardware where I can reliably run my own embedded software and have all the protections and outputs that I need.
- Other uses in the future. A project like this is never finished and always needs spare i/o for extensions.
So, I came up with the design for essentially what's a slightly weirdly designed VCU but which I dubbed the iPDM56, an intelligent power distribution module in the chinese 56-pin enclosure.
I'm seeing if I can make this into a product for anyone to use.
It is characterized by a large number of power outputs, both low and high side, and by the input/logic side solderable jumper/pull-up/pull-down/filter matrix which allows integrating it into one-off systems in some ways that are not generally possible with common VCU style controllers. It has a relatively wimpy MCU.
It is meant to act as an I/O extender module alongside another VCU, but you could wire it up to a throttle pedal and a CAN controlled inverter if you don't need much code or want to specifically minimize the amount of code and have control and knowledge over all of your code (like me).
It is programmed as an Arduino Uno, by uploading your sketch to it. There is no other programming interface, no UIs, nothing. It runs the code you upload to it, and that's it.
The USB port is brought to the waterproof 56-pin connector so that continuous development of the code is possible while it is installed in a vehicle, without the need for Wi-Fi, bluetooth, laptop CAN adapters or anything fancy like that. You just plug the thing into your laptop via USB, just like an Arduino Uno. In case you want to just program it once, there's a USB Micro-B connector on board.
Included with the documentation, there is an open source software template which includes a utility library, specifically designed for the hardware, which I personally also use. It makes programming common functions a breeze, given that you have some Arduino programming experience.
The hardware is well documented, with well laid out schematics, board layouts and easy to read connector pinouts, but I will keep the hardware production files to myself for now, and sell the boards myself. I am not planning to get rich, but I would like to stay strongly in the development loop and be able to maintain the quality of the hardware. Once I get bored of that, I'll publish the HW project files. No promises, but you've seen me publish open source before.
I want this to cost 100€ inc. VAT and shipping, without enclosure, or 150€ for 2, but I'll still have to run the numbers. The price will include absolutely no support of any kind, and you shouldn't buy it unless you're comfortable developing code for Arduinos. By default, it does nothing, there is no software, and also the default software template does nothing unless you add your own code to it.
Github link:
https://github.com/celeron55/ipdm56
I also made this VCU comparison table in the Wiki to learn about the differences between VCUs. It only has a couple in the table and even those are missing some data for now, but I think it's already interesting. There's also a to-do list for adding other ones:
https://openinverter.org/wiki/VCU_Comparison
Photo of v1.0 with some jumpers added for a specific use case. Note that the white wire is replacing a trace I burned up by accidentally trying to destroy the MCU by feeding 12V not to the external connector, but to the internal jumper strip (even then the protection kind of worked, yay for those absolutely massive TVSes!) and the output pull-down resistor has a better GND location in v1.1:
Render of v1.1, which I'm currently having a batch made of:
The v1.1 connector pinout: