Electronic Hardware Design of An Autonomous Vehicle

Download Full-Text PDF Cite this Publication

Text Only Version

Electronic Hardware Design of An Autonomous Vehicle

Prof. Shaista Khanam


Garvit Garg


Umang Waghela


Pratik Waghela


Abstract The world is thriving towards technological advancement and so as the transportation industry. Hence it is necessary to introduce such technology in transportation sector which would transform the orthodox perception of people. And hence Autonomous cars were introduced to transportation industry. The captivating fact about autonomous car is that, it can drive its way throughout with any human assistance. There are various challenges associated with this project. The car has to make decisions into real time and drive its way through the desired path. If it is not capable of doing so, then the results might be gruesome which may lead to accidents and lose of life as well as property. For developing such an autonomous vehicle many complex algorithms are used which involves Machine Learning, Artificial Intelligence, Neural Networks and Image Processing. The autonomous vehicle must be capable of providing accurate outputs in real time which can be reliable for the proper execution of commands. Hence it is proposed to develop such electronic hardware for autonomous car which can achieve desired results by referring numerous recently published papers. The data will be captured with the help of sensors and processed by an algorithm. The output of this algorithm will provide necessary information regarding steering, braking and acceleration. And these are the major components taken into consideration for this project that is calibrating the acceleration, braking and steering into real time application through the data obtained from training algorithm.

KeywordsDriverless, hardware, steering, acceleration, braking.


    Every year approximately 1.25 million people die in road accidents. The numbers are quite astonishing. The major reason for these accidents is mistake made by driver while driving car. Hence to avoid such mistake, the transportation industry felt need to revolutionize the way of driving cars and hence they came up with an idea of self driving cars. Since this car does not require any human intervention the mishaps caused by drivers can be avoided completely. Therefore autonomous driving system allows the vehicle to drive by itself without requiring help from a human. The vehicle equipped with autonomous driving capability detects the environment, locates its position, and operates the vehicle to get to the specified destination safely without human input.

    Though there are many researches going in developing autonomous car by tech giants and renowned institutions across the globe, the information available to students who are willing to build this project is scanty. Hence designing electronic hardware of autonomous car from scratch is very challenging. The main reason is that the autonomous vehicles need to make critical decision in real life environment and improper results can be detrimental to human life. For developing such autonomous vehicles many complex algorithms are used which involves Machine Learning, Artificial Intelligence, Neural Networks and Image Processing. The proposed system has to work in real time and execute desired commands. Accuracy of proposed model will be very critical in designing such system. Solving above stated problems will lead to reliable and revolutionize the entire transportation industry.


    This literature is provided by NVIDIA, wherein they proposed end-to-end autonomous vehicle using various algorithms [2].. Though there was detailed specification regarding Software methodologies but there was hardly anything regarding Hardware implementation techniques. Only multiple software development techniques were proposed. NVIDIA has used very highly sophisticated processors and algorithms for implementation of autonomous vehicle. DRIVE APX2 is worlds first commercially available level 2+ automated driving systems. This lets manufacturer bring driver assistance features, as well as intelligent cockpit and visualization capabilities, to passenger cars and commercial trucks. NVIDIA has a wide range of products and DRIVE AGX is one such open autonomous vehicle computing platform that serves as the brain for autonomous vehicles. They use software that enables important self driving functionalities such as sensor fusion and perception. Finally the photorealistic simulation was performed since it is safe and scalable solution for testing and validating self- driving platform before it hits the road. NVIDIA DRIVE is the data center that integrates powerful GPUs, cameras, radar, and lidar[3].

    The MIT developers [4] provided analysis of driver behavior and Interaction with automation. It provides the

    variability between driver style, experience and other characteristics that contribute to their understanding, trust and use of automation. The MIT developers developed complex maps using 3-D scans which are computationally intensive to generate and process. They proposed an autonomous control system that learns the steering pattern of human drivers as they navigate through the road in small area, using only data from camera feeds and simple GPS-like map. Here MIT developers had captured human expressions and their reactions in crucial decision making actions. This data consists of the pressure with which the driver holds steering wheel, pressure applied while braking, and change of expression in some unorthodox situation to which the driver has to make sudden decisions. The system uses machine learning model called a convolution neural network (CNN), commonly used for image recognition. During training, the system watches and learns how to steer from a human driver which later is correlates steering wheels rotations to road curvatures it observes through cameras and an inputted map. The autonomous vehicle based on the above data made decisions the same way as it made decisions in presence of driver. Similar issue of lack of information on Hardware techniques was observed in this literature also, which was one of a primary reason for undertaking this project.

    Sensors play a vital role in driving autonomous vehicles. They gather physical information from the surrounding and convert those physical signals into electrical ones which are then relayed to the vehicles onboard microcontroller. For instance, many autonomous vehicles use radar sensors to detect the location of surrounding objects such as automobiles in another lane. Radar systems can detect presence of any object in their path by continuously emitting a high power rays which are reflected back from the surface of an object in its path, thus enabling it to detect the presence of object. It can not only detect the presence of object but also it is capable of calculating location, speed, movement direction through angle, timing and strength of reflected waves. Such data can prove to be very essential for an autonomous car. In addition to radar, autonomous vehicles typically rely upon several other types of sensors, including Global Positioning Satellite (GPS) receivers, sonar, video cameras, and lidar (which is essentially aser-based radar). Collectively, these sensors provide information about the core issues associated with self driving car. The issues are related to location of car, movement of car, acceleration, braking and steering angle of autonomous car also nearby fixed obstacles such as buildings and sign boards and surrounding safety traffic features which includes observing signal lights, safety signs and lane markings.[5]


    fig.1. Block diagram

    Autonomous Car hardware is an important part which further consists of Steering, Braking and Acceleration

    .The input will be provided by the software. This input will later passed to respective microcontrollers handling steering and acceleration execution. When the input for steering arrives, it will be bypassed to the steering microcontroller which will take care of steering execution by performing series of operation. Similarly when the input for acceleration arrives it will bypassed to microcontroller 2 which will take care of executing acceleration of car.


    Steering is one of the most prominent assemblies of a car which enables a car to take desired path while driving on the road. Hence its efficiency and designing must be given a top priority. The conventional mechanical car model consists of rack and pinion assembly for the execution of steering actions carried out by humans. But for an autonomous vehicle the entire designing of steering needs to be redesigned. So the thought behind it was basically to design an assembly which can automatically respond to provided steering commands and execute appropriate actions which included taking left and right turn. Hence to fulfill all the above mentioned criteria, it was proposed to use stepper motor, a stepper motor driver and a micro controller. The entire designing of this assembly was driven by an idea that a command generated through software must be fed into the micro controller. The micro controller in response will generate appropriate signal level which will drive a stepper motor using motor driver.


    The Steering assembly comprises of stepper motor, a stepper motor driver, a micro controller and a set of few gears.

    1. Stepper Motor

      A Nema 23 7.2 kg-cm stepper most is proposed to be used for steering assembly. A stepper motor is a DC brushless motor which consists of rotors or a permanent magnet surrounded by windings. When a current is provided to each windings step by step, it will induce magnetic fields into the rotors and cause the propulsion of motor. This motion of motor is in steps and the rotations of motor can be calibrated manually through micro controller by giving appropriate step command. The entire car weight would be approximately 7 kilogram so to drive this car it necessary to select stepper motor which can withstand this entire weight. So Nema 23 was taken into consideration because this motor can provide a torque of 7.2 kg-cm which means it can withstand a weight of 7.2 kilogram for 1 cm of displacement. This motor is driven by 1A input current. It has a shaft diameter of 6.35mm. The step angle is 1.8o so the number of steps required to complete entire 360o are 200. Hence to execute steering actions the stepper motor needs to take appropriate steps. The input data to the microcontroller will be in the form of angles and hence it is very important to convert this angle value into steps to execute steering action which is given by (1)

      No. of steps= (200/360)*(Angle value) (1) where the angle value will be input to which the micro controller will generate appropriate step value. This step value will be fed into the stepper motor.

    2. TB6600 Stepper motor driver

      Initially the stepper motor was tested with L298d motor driver but the results were not satisfactory as stepper motor missed few steps while operating. Hence it became very important to select such motor driver which does not miss any of steps and provide a stable output current of 1A because the operating current of Nema 23 stepper motor is 1A [5]. So TB6600 stepper motor driver was taken in consideration as it satisfies all the above mentioned criteria. Also the autonomous vehicle will be continuously into operation, therefore heating of motor driver can be encountered frequently. This problem was also solved by TB6600 motor driver as it comes with heat sink to avoid overheating, thus reducing unnecessary power consumption.

    3. Arduino Uno Microcontroller

      Arduino Uno is a microcontroller embedded with Atmega328 chip. The entire board comprises of input output ports, analog and digital ports. The conversion of angles into steps will be performed by Arduino Uno. A special digital pin will be dedicated for continuous monitoring of angle value. Once the steering angle value is available on this pin, the conversion of this angle value to number of steps will be carried out by Arduino Uno and accordingly the output will be fed to 4 lines of TB6600 stepper motor driver connected to 4 digital pins of Arduino Uno [6].

    4. Gear Assembly

    Running through multiple tests of proposed steering assembly it was concluded that the assembly was inefficient while taking sharp turns and hence to eliminate this problem it was proposed to introduce a

    pair of gears for optimum response to steering action. One larger gear and one smaller gear were designed. As per the design, the width of larger gear was proposed 9mm and it consisted of 55 teeths whereas the smaller gear comprised 10 teeths. The smaller gear was connected to stepper motor and the larger gear was connected to the steering shaft of the car. The following fig. 2 represents designed gear assembly

    fig.2. Gear assembly


    In IC engine car when pedal is pushed by driver, it allows air to flow into the carburetor. This air is mixed with fuel and is introduced to spark by spark plugs. Hence combustion of fuel starts which pushes the pistons thus causing acceleration of car. Acceleration is motion of car, so its importance lies within the core values of locomotion [8]. But for an autonomous vehicle entire accelerating assembly should be able to drive car automatically. So designing such an assembly which would respond to provided accelerating commands with greater efficiency and least delay was a challenge. Accelerating motion of a car is in forward as well as backward direction. So the proposed model for acceleration comprises of a high rpm DC motor, microcontroller and a motor driver. When the sensors detects a clear road the car will start accelerating slowly but as soon as it detects any obstacle into its path, the car must stop that is deceleration should take place. When the processed accelerating values arrive into the microcontroller of acceleration assembly, it will generate appropriate signals which will be fed to motor driver. The motor driver in response will cause high rpm DC motor to rotate and thus acceleration in an autonomous car will be achieved. On the other hand when any obstacle arrives in front of the car, decelerating values will be fed into microcontroller. Appropriate signals will be generated by this microcontroller and will be fed into motor driver. The motor driver will then start decreasing rpm of DC motor and thus deceleration will be achieved.


    The acceleration assembly comprises of high rpm DC motor, a motor driver and a micro controller.

    1. DC motor

      The entire acceleration of the car is depending on this Dc motor and therefore right selection of motor becomes very important. The DC motor must be capable to driving entire 7 kilograms of cars weight also with greater efficiency and less delay. So it was proposed to use a 650rpm DC motor because this motor satisfies all the above mentioned criteria. This DC motor operates at 12V DC and its length is 75mm. The current required to drive this motor is 2A. The gear on this motor shaft comprises of 12 teeths which is attached with the acceleration gear box. Thus taking cre of efficiency and delays.

    2. L298n motor driver

      During testing of DC motor with L298d motor driver it was observed that the current provided by this driver was not sufficient to drive Dc motor. L298d motor driver provides 1A current whereas the motor required 2A current. Also the proposed acceleration model consisted of deceleration as well as braking of car. Therefore it becomes necessary to select such motor driver which when provided commands by microcontroller would respond and generate appropriate signal levels to achieve acceleration, deceleration and braking. Hence it was proposed to use L298n Dual H bridge motor driver which provides a stable output current of 2A. This driver operates at 5-35V DC but the best results were obtained when it is operated at 12V DC [7].

    3. Arduino Uno microcontroller

    Arduino Uno is a microcontroller embedded with Atmega328 chip. The entire board comprises of input output ports, analog and digital ports. The car will be driven at constant speed until and unless it detects any obstacle. So the role of arduino is to maintain constant speed as well as decrease speed of car when an obstacle is detected.


    Braking is the most prominent assembly of any car. It was conventionally introduced to ensure safety of drivers and pedestrians. Braking action stops the motion of car. In mechanical cars braking is achieved when a human applies pressure on the brake pedals. The oil in the pipes connecting brake pedal and brake pad is pushed forward. As a result brake pads make contact with tire and the car stops due to friction between brake pads and the tire. But while designing a braking assembly for autonomous vehicle a special car must be taken of response time.

    The proposed model for braking will comprise of same components as that used in acceleration assembly. When an obstacle is detected in front of the car, it will generate an interrupt in form of voltage on the line which will be connected on the arduino. The arduino will be constantly checking for any interrupt on this line. As soon the interrupt will is detected the arduino will generate a low voltage signal which will be fed to

    L298d motor driver and finally stop the motion of the car.


    The following flow charts below will represent the codes fed into Arduino Uno microcontroller in order to control steering, acceleration and braking of designed autonomous vehicle.

    1. Acceleration

      The proposed acceleration mechanism will be controlled by code represented in fig. 3 mentioned below.

      fig.3. Acceleration mechanism flow chart

      Here the acceleration value refers to varying voltage values fed to Arduino at the input. These values will be provided through software stimulation. The proposed acceleration mechanism will consist of acceleration as well deceleration of car and hence it becomes very important to distinguish between these values. So it is proposed that if any high voltage value appears at input then it will be treated as acceleration of the car. And if any low voltage value appears at the input then it will be treated as deceleration of car. The Arduino will constantly read for any one of these values available on input pin. Once the high input is detected, it will call function 1 which comprises of code for performing acceleration of car. Later the increased speed will be set to maximum. And if low input is detected then it will call function 2 which comprises of code for deceleration of car. Then the speed of the car will be gradually decreased to minimum.

    2. Steering

    The proposed steering mechanism will be controlled by code represented in fig. 4 mentioned below.

    fig.4. Steering mechanism flow chart

    Here the steering angle input refers to the angle values which will be fed into Arduino. These angle values will be provided through software stimulation. The Arduino will constantly read for any value available on input pin. Once the input is detected, it will call function 1 which comprises of code for performing right turn by vehicle. After execution of this function, the steering mechanism must return to its initial position. Therefore after certain delay Arduino will call function 2 which comprises of code for performing left turn by vehicle. In order to return to its initial position, the car has to take left turn by the amount it took right turn so that both the value neutralizes each other and steering returns to its initial position. In order to differentiate between left turn and right turn, it was proposed that right turn will always indicate positive angle values whereas left turn indicates negative value. So when Arduino detects any positive angle value then first it will call function 1 to take right turn and if it detects any negative value then it will call function 2 to take left turn. The execution of right turn will be same has that of left turn explained earlier in this section.


    The components of steering mechanism were assembled and design of gears for steering was achieved using calculation show below. These gears were then 3D printed and used into the car. Also the desired results for acceleration of car were achieved. In Arduino at value

    255, the car was observed to attain maximum speed and as soon as it detected any obstacle into its path the car starts to decelerate until its motion stops. Calibration of steering mechanism might limit the progress of steering assembly because it is very tedious task as it requires highly sophisticated design and measuring instruments. Also the car wont be able to accelerate at high speed because when Arduino is 8-bit micro-controller so 2^8 which Is 255. Therefore maximum speed can be achieved at 255 only not beyond that.


    Calculation for steering mechanism:

    Gear1 teeth=55 Gear2 teeth =10


    T1= 39.6 N-cm

    where, T1 – Torque of required to move steering


The steering, acceleration and braking mechanism for an autonomous vehicle have been successfully designed. Components of steering assembly were assembled. The designed autonomous car was able to achieve desired acceleration results, the car accelerated and maintained a constant maximum speed. Still work regarding varying speed is to be proposed in future which can be achieved by using highly sophisticated microcontroller and motor drivers.


The authors of this paper would like to extend their gratitude towards Prof. Shaista Khanam, who mentored us with her erudition to achieve desired results throughout this process.

Also the authors would like to extend a vote of thanks to Head of Department Dr. Vikas Gupta. His insights have proved to be the most valuable ones.

And last but not the least the authors would like to thank all the staff members for providing their staunch support throughout this project


  1. https://www.asirt.org/safe-travel/road-safety- facts/#:~:text=Annual%20Global%20Road%20Crash%20Statis tics,resulting%20in%20long%2Dterm%20disabilities.

  2. https://images.nvidia.com/content/tegra/automotive/images/ 2016/solutions/pdf/end-to-end-dl-using-px.pdf

  3. http://mit.edu/2019/human-reasoning-ai-driverless-car- navigation-0523

  4. https://wiki.dfrobot.com/TB6600_Stepper_Motor_Driver_S KUDRI0043

  5. https://components101.com/microcontrollers/arduino-uno

  6. http://wiki.sunfounder.cc/index.php?title=Motor_Driver_M odule-


  7. https://www.yourmechanic.com/article/how-caracceleration- works- by-logan-utsman

Leave a Reply

Your email address will not be published.