Maurice Bos


The DUT12 is the twelfth car of the DUT Racing Team, a student project at the TU Delft I'm a member of.

It is a four wheel driven electric race car, with which we won the formula student competition in 2012! It is not only the lightest car at the competition with less than 148 kilograms, but it also accelerates the fastest: 0 to 100 kmph in 2.13 seconds, which is an official world record!

(Check for more info about the car.)

My task in the team was to write the software for the main control unit in the car, which basically controls all electronics in the car.

Electronic Control Unit (ECU)

The ECU communicates with the sensor nodes (designed and made by Harmjan Treep) and reads out several other sensors (GPS speed, accelerometers, gyroscopes, accumulator management system, ...) directly to collect data. The data is then stored in flash memory, with a self designed file system optimized for this kind of data. Apart from that, it controls the main relays, dashboard, the brake light, and of course the four motors.

A controller (made in Simulink by our vehicle dynamics department, lead by Sven van Koutrik) runs on the ECU while the car is driving. It calculates the optimal settings for speed and torque for all four motors at 200Hz. One of the things it does is making sure none of the wheels are slipping. This means that the driver can just give 100% throttle and the ECU will make sure the car performs an almost perfect acceleration without wheelspin.

All data is continuously checked for consistency and safety: The throttle pedal has two sensors, and if they don't agree with each other, the car is shut down directly. Also, temperatures, voltages, and lots of other data is checked at all times to ensure the safety of the driver and the car.

The ECU can communicate with a computer, so we can easily read out the data from the data acquisition or change settings. All communication is compressed using zlib to speed it up.

All software is written in C++, and is compiled using GCC with a custom linker script and custom startup code. The real time operating system is interfaced using a self designed transparent C++ wrapper, which allows me to use processes and messages as objects in C++.

The ECU software consists of the following parts:

The ECU runs on a LPC1788 ARM Cortex M3 processor from NXP. The ECU hardware (pcb) is designed and made by Michael Polushkin.

PC Software

The car can be connected to a computer. Communication with the computer goes over the CAN bus, because I didn't have the time to implement USB.

These are the tools I wrote for the computer, they all run on both Windows and Linux:


And last but not least, I designed some fonts for the dashboard. You can use them freely in your own projects if you want.

More ...

I could write pages more of interesting details about the DUT12, its hardware, its software and everything around it. But I'm not going to do that, since there are way too much cool projects to be done in way too little time.

If you want to know anything more about the DUT12, just e-mail me! (