Overview

Background

Recently switching from the vehicle mechanics to the electrical sub-divison of the UBC Supermileage team, I was tasked with developing a new steering wheel for our UrbanConcept electric car. This involved developing the mechanical and electrical hardware design and will further require software implementation to our car's CANbus. The steering acts as the brain of the car and interacts with all the other nodes on the cars communication system. It also displays speed and power consumption data to our driver.

Competition

Our UrbanConcept electric car competes at Shell Eco-Marathon Americas in Sonoma, California which hosts many teams around North and South America.
Project 1

Mechanical

The OnShape CAD model can be found here.

The entire steering wheel consists of three parts: aluminum base plate, top shell, and the steering wheel base. As seen in the photo above, our current design imitates a Formula 1 steering wheel controller full of buttons. The curved edges around the top are made ergonomic for our driver and designed such that all the buttons are reachable. There are cutouts for the surface mount buttons, micro-usb connector to program our MCU, and also a opening on the side for the dead-man switch (emergency stop).

The aluminum base plate (seen in teal), is connected to our main steering system through a quick release. Because the wheel is plastic, the aluminum part is required to transmit torque to our steering column. The quick release mechanically and electrically disconnects the steering system to the car. The grey plastic piece is the bed of our wheel which also supports our main PCB with standoffs. The center hole is for all the wires to come from the quick release.

Our quick release.

Electrical

The ECAD design can be found here.

3D model of PCB.

Coming from our steering system, we have 7 lines coming up: 12V, 3.3V, ground, CAN high, CAN low, brake/throttle signal. These are bundled into two SL Molex connectors which connects to our main steering PCB. On our PCB we also have our STM32 Nucleo board which is compatible with the Arm Mbed library online and a CAN transceiver. We have a programmable display for the driver and 6 surface mount buttons for the driver: ignition, wipers, lights, horn, blinkers, and hazards. These are required systems for the car to compete at Shell-Eco Marathon. An important safety feature for the wheel is the dead-man switch is an QRD1114 phototransistor to detect if the hand is on the wheel or not. If an accident occurs, the drivers hand may come off the wheel and then the switch will disable the car.

Steering PCB schematic in KiCad.

Top layer PCB w/o ground pours.

Bottom layer PCB w/o ground pours.

Software

All of our software development was in C++ for our STM32 Nucleo MCU. Our code can be found at our github repo. GitHub

    Code Highlights
  • Sensor Data Integration
  • Priority Interrupts