VMS ECU

Viking Motorsports (VMS) Engine Control Unit (ECU) is the main control board of a custom made electric race car for Formula SAE. Its development was supported by Beta project and the board was designed, assembled and tested at College of Engineering, Portland State University in 2016. The board runs stock Paparazzi sofware as a base.
250px|thumb|right|ECU installed in the race car
250px|thumb|right|ECU and the race car at Portland State University display
== Current status ==
As of February 2016, the hardware is essentially mature (revision 1.0) and it runs Paparazzi (an example airframe configuration is provided). More software development needs to be done in order to comply with Formula SAE rules.
== Features ==
* 4 layer PCB board for better EMI
* Fully waterproof enclosure (IP-65 rated) and 48-pin Deutsch-TM header
* ARM Cortex-M4 168MHz MCU
* Intel Edison as a linux companion computer
* SD card logging on both MCU and Intel Edison
* Wifi & Bluetooth connectivity (Intel Edison)
* 2x insulated CAN bus
* 2x RS232
* 4x Analog input (5V)
* 2x Analog output (5V)
* 2x Digital input (Switch-to-Ground)
* 6x Digital input (Switch-to-Battery)
* 2x High-Side digital output
* 4x Low-side digital output
* 12-24V power input
* 5V power output
* Reverse polarity and overvoltage input protection on all I/O
* AspirinIMU with 3-axis gyro, accel and magnetometer and MS5611 barometer
* Ublox GPS with external antenna
* USB/JTAG for programming/debugging
The board is fully enclosed in a waterproof enclosure, and is intended to be used in harsh and dusty environments, such as automotive racing.
File:ECU_pcb.jpeg|200px|ECU v1.0 PCB
File:ECUv1-0_PCB.jpeg|200px|ECU v1.0 assembled PCB
File:ECU_v1_test.jpeg|200px|ECU v1.0 during I/O testing
== Pinout ==
Pins Name and Type are specified with respect to the ECU board. Note that the headers are in the order A-C-D-B (left to right, looking at the board from the top - component side). The pinout is designed so the related pins are adjacent in the wiring harness.
File:Ecu_pinout.png|200px|ECU v1.0 I/O pinout
File:Ecu_v-1-0_top.png|200px|ECU v1.0 board top-view
Deutsch Header A
Pin #	Name	Type	Description 	Color
1 	GND 	PWR 	For analog sensors	Black
2 	5V 	PWR 	For analog sensors	Yellow
3 	AIN1	IO 	Analog input 5V 	Orange
4 	GND 	PWR 	For analog sensors	Black
5 	5V 	PWR 	For analog sensors	Yellow
6 	AIN2	IO 	Analog input 5V 	Orange
7 	GND 	PWR 	For analog sensors	Black
8 	5V 	PWR 	For analog sensors	Yellow
9 	AIN3	IO 	Analog input 5V 	Orange
10 	GND 	PWR 	For analog sensors	Black
11 	5V 	PWR 	For analog sensors	Yellow
12 	AIN4	IO 	Analog input 5V 	Orange
Deutsch Header C
Pin #	Name 	Type	Description 	Color
1 	GND 	PWR 	For digital inputs	Black
2 	DIN_STG1	IO 	Switch to ground 	Magenta
3 	GND 	PWR 	For digital inputs	Black
4 	DIN_STG2	IO 	Switch to ground 	Magenta
5 	GND 	PWR 	For power in 	Black
6 	VIN 	PWR 	12-24V power in 	Red
7 	DIN_STB1	IO 	Switch to battery 	Pink
8 	DIN_STB2	IO 	Switch to battery 	Pink
9 	DIN_STB3	IO 	Switch to battery 	Pink
10 	DIN_STB4	IO 	Switch to battery 	Pink
11 	DIN_STB5	IO 	Switch to battery 	Pink
12 	DIN_STB6	IO 	Switch to battery 	Pink
Deutsch Header D
Pin #	Name 	Type	Description 	Color
1 	GND 	PWR 	For analog outputs 	Black
2 	AOUT1 	IO 	Analog output 5V 	Light Tan
3 	GND 	PWR 	For analog outputs 	Black
4 	AOUT2 	IO 	Analog output 5V 	Light Tan
5 	GND 	PWR 	For high-side drivers 	Black
6 	VOUT 	PWR 	12-24V power out (directly connected to VIN) for low-side drivers	Red
7 	CAN1_H	IO 	CAN high 	Blue
8 	CAN1_L	IO 	CAN low 	Cyan
9 	GND 	PWR 	For high-side drivers 	Black
10 	VOUT 	PWR 	12-24V power out (directly connected to VIN) for low-side drivers	Red
11 	CAN2_H	IO 	CAN high 	Blue
12 	CAN2_L	IO 	CAN low 	Cyan
Deutsch Header B
Pin #	Name 	Type	Description 	Color
1 	GND 	PWR 	For RS232 	Black
2 	SERIAL_IN1 	IO 	RS232 input (12V) 	Green
3 	SERIAL_OUT1	PWR 	RS323 output (12V) 	Light Green
4 	GND 	PWR 	For RS232 	Black
5 	SERIAL_IN2 	IO 	RS232 input (12V) 	Green
6 	SERIAL_OUT2	PWR 	RS323 output (12V) 	Light Green
7 	DOUT_LS1 	IO 	Low-side output 	Brown
8 	DOUT_LS2 	IO 	Low-side output 	Brown
9 	DOUT_LS3 	IO 	Low-side output 	Brown
10 	DOUT_LS4 	IO 	Low-side output 	Brown
11 	DOUT_HS1 	IO 	High-side output (12V)	White
11 	DOUT_HS2 	IO 	High-side output (12V)	White
== Schematics and board files ==
The ECU is a fairly complex board, as shown in schematics below. The Eagle schematics and board files are on Github
File:Ecu_schematics_1.png|200px|Power (12V, 5V, 3.3V, 1.8V)
File:Ecu_schematics_2.png|200px|MCU, SD card
File:Ecu_schematics_3.png|200px|IMU, CAN, Serial, GPS
File:Ecu_schematics_4.png|200px|Intel Edison
File:Ecu_schematics_5.png|200px|Digital outputs
File:Ecu_schematics_6.png|200px|Digital inputs
File:Ecu_schematics_7.png|200px|Analog inputs
File:Ecu_schematics_8.png|200px|Analog outputs
File:Ecu_pinout.png|200px|Deutsch-TM 48-pin header
== Gerber files == 
Also available on Github.
== Ordering and assembly == 
<img src="https://oshpark.com/assets/badge-5b7ec47045b78aef6eb9d83b3bac6b1920de805e9a0c227658eac6e19a045b9c.png" alt="Order from OSH Park"/>
There is a shared project on OshPark - $307 for 3 PCBs
There is Digikey BOM for easy ordering here (some additional parts like the enclosure and the Aspirin IMU have to be ordered separately).