AddThis

Bookmark and Share
Showing posts with label Final Year Projects. Show all posts
Showing posts with label Final Year Projects. Show all posts

Saturday, 25 June 2022

Solar Panel Cleaning Robot

 Solar panels are one of the most economical and low-maintenance forms of producing since they don't have any moving components. Despite all of its advantages, if dust, filth, and grime are allowed to build up, solar panels' efficiency may suffer. Solar panels must be cleaned on schedule if optimal power production efficiency is to be maintained. Solar panel cleaning by hand is risky and time-consuming, however.


By ensuring that the solar panels are maintained clean without endangering people, this solar panel cleaning robot intends to preserve the effectiveness of solar energy generation.


The roller brush and water sprayer on this robot are designed to remove all dirt and grime from the panels' surface. Through an onboard tank, the sprayer receives its water supply. This robot can cling to the slippery solar panel surface thanks to the rubber caterpillar tracks. This robot works wirelessly and remotely.


This robot can assist increase the efficiency of solar panels in smaller applications like rooftop solar panels in homes and workplaces, in addition to large-scale industrial applications like specialised solar power plants.

Solar panel cleaning robot features include:


keeps solar panels clean to maintain their effectiveness.

Worker safety is ensured through remote and wireless operation.

All dust, filth, grime, and debris are cleaned using a roller brush.

equipped with an onboard water tank that supplies the water sprayer.

Design that is user-friendly, portable, and small.

A water tank with a motorised pump and four DC motors are used by the solar panel cleaning robot to propel the vehicle utilising caterpillar wheels. The robotic vehicle features a metal chassis and a controller circuitry that is controlled by a wireless RF remote.


The robotic vehicle receives wireless control movement information from a remote controller. After receiving the data, the controller instructs the wheel motors to turn in the correct directions to produce the intended movement. A geared DC motor drives the front brush, which is mounted to the front of the main chassis. A dc pump is utilised to move water for cleaning to the front of the brush utilising an integrated water pipe on the front panel. Thus, the device enables simple wireless control of solar panel cleaning.


Solar powered irrigation system

 The irrigation pump in the autonomous irrigation system is powered by solar energy. Monitoring the soil's water level and manually controlling the irrigation system get tiresome. As a result, instead of utilising conventional energy, the system generates solar power using photovoltaic cells. An op-amp IC that serves as a comparator and measures the soil moisture level is necessary for the project. Two copper wires are placed into the soil at a certain depth to gauge the soil's moisture content. The sensors provide data to the microcontroller, which interfaces with the relay driver IC to activate the relay and cause the pump motor to turn ON or OFF. An LCD screen displays the pump status.






IOT Car Parking System

 In today's contemporary, crowded cities, parking is a huge problem. There are just too many cars on the road and not enough places to park them. Effective parking management solutions are now required as a result of this. Therefore, we show how to implement an IOT-based parking management system that enables effective parking spot usage. We utilise IR sensors to detect parking space occupancy and DC motors to represent gate opening motors in order to illustrate the idea. We now operate the system using an AVR microcontroller and a wifi modem for internet access. For internet connection and IOT administration GUI design, we utilise IOTGecko. Using IR sensors, the system determines if parking spaces are occupied. In order to open the gate automatically, it also employs IR technology to detect the presence of a vehicle at the entrance. To enable online parking slot availability checks, the system scans the number of parking spaces that are available and updates data with the cloud server. This enables customers to find hassle-free parking by checking the availability of parking spots online from any location. Thus, the system offers customers an effective IOT-based parking management solution while resolving the parking problem for cities.



Internet of Things-based smart garbage monitoring system (IoT)

 An extremely creative technology that will assist to keep cities clean is the IOT Garbage Monitoring system. This system keeps an eye on the trash cans and provides information through a web page on the amount of trash being gathered in the cans. The device does this by detecting the rubbish level and comparing it to the depth of the garbage containers using ultrasonic sensors positioned above the bins. The system uses a microcontroller from the AVR family, an LCD display, a WiFi modem to relay data, and a buzzer. A transformer with a 12V output powers the device. The status of the amount of waste collected in the bins is shown on the LCD panel. A web page, however, is created so that the person who is watching it may see the status. The website displays a visual of the trash cans and emphasises the waste that has been collected in colour to demonstrate how much garbage has been gathered. The waste level status is shown on the LCD panel. When the amount of rubbish being collected exceeds the predetermined limit, the system activates the buzzer. Thus, by presenting a graphical depiction of the bins through the IOT Gecko web development platform, this system aids in keeping the city clean by notifying about the waste levels of the bins.


Arduino Uno-based IoT Humidity and Temperature Monitoring

 We can control any electrical device in homes and businesses with the Internet of Things (IOT). Additionally, from anywhere in the globe, you may read data from any sensor and visually analyse it. Using an Arduino Uno and an ESP8266-01 module, we can read the temperature and humidity data from the DHT11 sensor and upload it to a ThingSpeak cloud. The Arduino Uno is an MCU that receives temperature and humidity data from a DHT11 sensor, processes it, and sends it to an ESP8266 module. One of the top platforms for the Internet of Things is the WiFi module known as ESP8266. It can send a data packet to the IOT cloud.


For Arduino IoT-based applications, ThingSpeak offers several excellent tools. We can operate our system via the Internet using the Channels and websites supplied by ThingSpeak, and we can monitor our data from anywhere using the ThingSpeak website. ThingSpeak "Collects" the sensor data, "Analyzes and Visualizes" the data, and "Acts" by starting a response. In this article, we will describe how to submit data to the ThingSpeak server using an ESP8266 WiFi module.






Tuesday, 20 July 2010

A Parking Management System using Service Science, Management and EngineeringA Parking Management System using Service Science, Management and Enginee

Parking facilities are vital for most organization that encourages business grown. Though this industry is undergoing a revolution, applying new technologies such as Service Science Management and Engineering (SSME) to achieving better performance and customer satisfaction, is still lagging especially in Malaysia. Based on this concern, this study was undertaken with the purpose to unfold and understand the need for a better and efficient system for parking management.

The focus of this research is incorporating the SSME concept by integrating important components of business, management and technologies, in order to provide quality parking services for customers and thereby improve the management of parking systems.

In a nutshell, the primary goal of this study is to improve the current car parking service system and this is carried out through service innovation which is inherently multidisciplinary. This study used a various data collection such as questionnaire and survey to find out the problems faced by parking patrons. Open-ended questions in the last part of the survey are used to find out the extent of user knowledge on SSME concepts and to capture user requirements to be used in the development of an efficient Parking System (IPS). IPS not only has elements from advanced parking information systems but it incorporates essential elements of SSME approach.

The use of in-surface sensors, CCTVs and interactive signboards at the parking entrance help to alleviate the problems faced by parking users. The evaluation findings derived through a second survey showed beyond doubt that the proposed system has excellent advantages over the existing manual system. Future research should consider allowing the system to be web based where parking bay bookings could be made from handheld devices, home PCs and notebooks.

Download Abstract

Download Project

Download References

Friday, 4 June 2010

Water Spy - A Submarine Robot

Abstract

Water spy is a specially designed Robot for under water operation. As its main aim is to work underwater so main objective should be that it should be capable of moving in any direction so we had provided it with such a driving power that it can move deep beneath water. To provide driving power six motors have been used. Also for surveillance robot that it should have capability of vision we are using a black and white CCD camera.
The robot is controlled by remote control. Wireless control of robot is achieved using DTMF code signals.
Microcontroller AT 89C51 has been used to control the direction of robot. H-bridge motor driver circuit has been used to provide reversible drive to the dc motors. Main body of Robot is made up of PVC pipes.

Chapter 1 : INTRODUCTION

Project entitled “Water Spy- A Submarine Robot” is a robot which works under water.
Conventionally we see many robots which work on ground but we thought to accept challenge to make robot which could be operate beneath water.
Major challenge encountered to is to balance the body of robot under water. Firstly we had to select motors which could operate beneath water. So critical circuit should be isolated from water. Some of the function which we had successfully implemented on robot that it can travel up, down, forward, backward, left, right beneath water.
Two water tanks required to keep robot beneath water which force it to float and three air tanks are required to stabilize moment of robot under water. Robot is equipped with six DC motors which provide motion to robot in different directions. Also we can add CCD camera to see underneath water world.
Control of driving motor is done through H-bridge motor drives which can easily controls the motors for direction as well as start/stop function. Control signals provided to robot are through wireless remote implemented using FM with DTMF. In all seven function tags are provided on remote control which control total movement of robot.
Main problem encountered is to provide power to motor circuit. Batteries required are too heavy so power is supplied through cable. This problem could be further overcome by using light weight Ni-Cd batteries.

Chapter 2 : BLOCK DIAGRAM & DESCRIPTION

Water Spy Robot using Microcontroller

DIFFERENT MODULES OF PROJECT:
A. DTMF TRANSMITTER.
B. DTMF RECEIVER.
C. CONTROL CIRCUIT.
D. MOTOR DRIVER CIRCUIT.
E. MAIN BODY.
F. POWER SUPPLY.

2.2 DTMF TRANSMITTER:
DTMF TRANSMITTER





1. DTMF ENCODER:
The code generator part employs a keyboard, IC UM 91215B and few other components. The IC UM 91215B is a ‘DUAL TONE MULTI FREQUENCY’ i.e. DTMF generator. Whenever a no. on the keyboard is pressed corresponding multiplexed frequency consisting of a lower band frequency and an upper band frequency is generated.

2. FM TRANSMITTER:
The DTMF code signals from UM 91215B is then frequency modulated and transmitted in air using FM transmitter. The carrier frequency is determined by coil L1 and trimmer capacitor C1 (they can be adjusted to change the frequency of the transmission). An antenna of 10 to 15cm length is used for satisfactory range. The antenna is necessary because the transmitter unit has to be housed in metallic cabinet to protect the frequency drift caused due to stray EM

2.3 DTMF RECEIVER
DTMF RECEIVER
The DTMF code signals from UM 91215B are frequency modulated and transmitted in air using FM transmitter. The antenna connected to FM receiver receives FM signals from remote control and demodulates them. Output of FM receiver is replica of the DTMF coded signal given to FM transmitter section. These DTMF coded signals are given to MT 8870 DTMF decoder. IC MT 8870 decodes the DTMF signals and gives 4 bit BCD output.

2.4 CONTROL CIRCUIT:
BCD output of DTMF receiver is then given to AT 89C51 Microcontroller. Depending on the BCD code at the output of receiver the software program inside the microcontroller controls the direction and selection of the motors on main body.

2.5 MOTOR DRIVER CIRCUIT:
In the design of the motor driver circuit we had considered the following points:
• The required direction of rotation.
• The current and voltage requirement.
• The interfacing with the logic circuit.
• Quick Switching.
Considering all these requirements we choosed H-bridge motor driver for providing reversible drive to the motors. This circuit consumes very less power in stand still condition and provides the armature current of 3A (our requirement is 200mA).Here opposite pairs of transistors are triggered to generate the required polarity of voltage as per the required direction of motor.

2.6 MAIN BODY:
Main body consists of water filled tank, air filled tank, stabilization tank & motor with fans attached to it. Air filled and water filled tanks are made up of PVC pipes. Stabilization tank is used for balancing of main body beneath water while the rotating fans provide motion to the body.

2.7 POWER SUPPLY:
• 9v Ni-Cd battery: This battery is used as a supply for transmitter circuit.
• 5v supply: 5v supply is used to provide power to the control circuit.
• 12v supply: 12v supply is used to provide power to the motor driver circuit.


Chapter 3: SPECIFICATIONS

Parameter : Value
Power Supply


Transmission Unit

Encoding Unit

Decoding Unit

Operating Frequency Of Crystal

Transmission Frequency

Control Unit

Motor Driver

Display

Camera

Motors
:


:

:

:

:

:

:

:

:

:

:
Input: 230v,50Hz +-10%
Output: +5v, +12v.

FM transmitter and receiver.

UM 91215B(Tone Dialing Mode)

MT 8870.

3.579545MHz

96MHz

Microcontroller AT 89C51

NEC B882

Common cathode 7 segment

Black & White CCD camera

DC 12v

Chapter 4 : HARDWARE DESCRIPTION

4.9 WORKING
Water Spy Submarine Robot is specially designed for under water applications. Wireless control is provided to the robot using the concept of DTMF.IC 91215B is a DTMF generator, when a key on keypad is pressed it generates a particular DTMF code. These DTMF code single is then frequency modulated using FM transmitter. Antenna radiates this FM signal in to its surrounding.

At receiver section FM receiver is tuned to receive the transmitted signals. It then demodulates the received signal and its output is replica of transmitted DTMF code. This DTMF code signal is given as input to the IC 8870 DTMF decoder. It decodes the DTMF code signal and gives 4-bit BCD code at its output pins. Decoder generates a unique BCD code for each key pressed on the keypad. This BCD output is connected to the input port of AT89C51 microcontroller. Based on this BCD code microcontroller generates control signals using software program inside it, which controls selection and direction of the motors.

Output of microcontroller is given to the H-bridge motor driver circuit which provides reversible drive to the motors used. Thus implementing all, we could operate the robot successfully underwater.


Chapter 5 : SOFTWARE DESCRIPTION

5.1 ALGORITHM:
1. Start.
2. Point DPTR to table 1 containing data equivalent to the output of decoder.
3. Read the data at port 1.
4. Compare port 1data with data pointed by DPTR.
5. If compared data is equal, point DPTR to table 2 & send corresponding data at port 2.
6. Send corresponding data at port 0 for display.
7. Jump to step 2.

Chapter 6 : PERFORMANCE EVALUATION

6.1 PCB CHECKING:
1. All the tracks of PCB are checked.
2. We checked continuity of all tracks.
3. High voltage was applied between two independent tracks to check any hair size short or air gap.

6.2 VISUAL TESTING:
1. Polarities of all the components like capacitors, connectors etc are checked.
2. It is seen that all the IC sockets are soldered properly.

6.3 MULTIMETER TESTING:
1. All the IC sockets and power supply are soldered and continuity is checked
2. Also VCC and GND voltage are checked.
3. Voltages at all the pins of the microcontroller are checked with respect to ground.
4. Values of all possible components are checked on multimeter.

6.4 TESTING OF KIT:
1. DTMF tones generated where tested using a speaker connected at its output.
2. We received DTMF signal on normal FM receiver while checking the FM transmitter.
3. We tested DTMF decoder using LED connected at the output lines.
4. Microcontroller’s working was ensured by debugging the program.


Chapter 7 : APPLICATIONS

1. An ultrasonically controlled robot submarine for pipe inspection.
A model submarine with four legs and umbilical is described that is both radio and ultrasonically controlled to walk in pipe. The ultrasonic communication system is described together with the problem and solutions encountered and worked out. Finally, the leg kinematics, and their actuation system and control are discussed.

2. Autonomous Underwater Vehicles
Autonomous underwater vehicles are an exciting topic for two reasons. First there are many interesting real-world applications for such systems. Effective autonomous under water vehicles would allow or facilitate exploration, salvage, search and rescue, and scientific studies in deep ocean areas. Second, the highly dynamic and noisy nature of underwater environment makes the problem a difficult one. Combined with the noise and dynamics of the environment are the additional problems of a possible lack of reference points and limited communications due to the water itself.

3. Autosub
A robot submarine expedition under the Antarctic sea ice has discovered a major food reserve in the Southern Ocean. The findings, show a dense band of the, took the revolutionary £5 million Autosub, one of the most advanced underwater probes ever.

Chapter 8 : ADVANTAGES

1. Under water movement in all possible directions i.e. right, left, forward, reverse, Up and down.
2. If camera attached can view the under water circumstances.
3. Least cost.
4. Movement of robot is remotely controlled.
5. It could remain beneath water for a long time which is difficult for human being.

Chapter 9 : DISADVANTAGES

1. Power supply to the motors is through wires.
2. Camera video signal shall be taken through wires (if used).
3. DC motor are used for underwater operation so may undergo electrolysis and rusting.

Chapter 10 : FUTURE ENHANCEMENT

1. We can add water proof cameras to see deep underneath world.
2. This camera can be powered by focusing light to light on the dark surfaces.
3. Receiver and Driver circuit can be made compact and mounted on the main body itself and can be powered using battery supply.
4. Sensor could be mounted on to the body to study the properties of water.

Thursday, 27 May 2010

Line Follower

A line follower is an autonomous bot that can follow a specific colored line painted on a surface of different contrast, such as white on black.

To start with first of all I will be discussing a small concept of light. I believe you all know that the light that strikes any platform is reflected. The reflection and absorption coefficient of light depend upon material, color of platform and other factors. In simple words the black surface absorbs the light and the white surface reflects it, this is the basic concept behind making a line follower.

Line Follower

So the line follower has an emitter and a reflector. The reflector receives the light and generates a voltage proportional to the intensity of the light, if this voltage is above a threshold it means SIGNAL=1 (logic one) else SIGNAL= 0 (logic zero).

Let’s take up an example where we have to move our bOt on black surface having white line. Suppose I have two Infra Red (IR) sensor pairs that are on different halves of a bOt with respect to geometrical central axis of the bOt. The sensors are placed in such a way that the white line lies in between both the sensors when the bOt is placed on the white track painted on black surface to move. Now if the white line is between both the sensors while moving forward both the sensors will be on black surface and the detectors/receivers will receive less amount of light since black absorbs light and hence signal provided by both the infra-red receivers will be low.

Line Follower explanation

Now if the heading/direction of the white line changes one of the sensors will move in the region of white line and will start giving output signal as high. This information can be used to ‘turn’ the bOt and orient itself in the right direction. For example in the above figure if the bot is located in position 1, then bOt will move forward and if the bOt is in position 2 it will have to turn left .

Let’s move on and discuss everything step by step in detail. We will be discussing the making of line follower under three heads:

1.) Chassis of robot { those familiar can skip this section}

2.) Electronics/Hardware Designing

3.) Programming/Software Designing

CHASSIS OF ROBOT

1.) Base of robot: The base or the material of the platform of robot can be made with any easily available material like switch board, wood, acrylic sheet or steel sheet. As our robot will be very light, you don’t have to think a lot on strength and other such factors. We will just recommend you to make a small size and light weight bOt. Here we are using, steel base:

Chassis of line follower

2.) Motors and Driving Mechanism:

· We will need a set of two motors that have same rpm (revolution per minute).

· We will be using differential drive for maneuvering our bOt i.e. we will have three wheels for our bOt, the front two will be powered and the rear will be free wheel.

· When the bot is moving straight both the motors should have equal speed.

· For turning, one of the motor is switched off. If we switch off the left motor, the bot will turn left and vice versa.

Line Follower motor

· You can choose a motor of rpm around 100 and a torque of 1kg-cm

MotorLine  follower bOt

3.) Coupling wheels & clamping motors: - For clamping the motors you can use pipe clamps or make right angled clamps. The right angle clamps ensure more rigidness. To couple the motor ensure that the shaft of motor and hole of wheel have equal diameter (if you can’t find one check the tutorial on wheels).

Line follower clampingLine  follower clamping 2

ELECTRONICS

Line follower flowchart

This is a flow chart that explains the working of the bOt in sequence:-

The Infra Red sensors are used to interact with the environment. The emitter sends a ray which is received by detector in the form of voltage and it then amplified by amplifier since the signals are weak (more on this later). Below are the circuit diagrams of Infra-red LED emitter and receiver.

Line  follower IR sensorLine follower IR receiver

Op-Amplifier (LM324)

If the rays received by the IR- LED receiver are above a particular threshold then an amplified signal is generated by the amplifier (LM324). Note that the sensors cannot directly send a signal to the microcontroller as the signal voltage generated by them is too low and even when sensors are on white surface signal generated by them will interpreted low by the microcontroller.

Line Follower LM324

Microcontroller (AT89S52)

The microcontroller receives the signal and responds accordingly. It takes the decision based on input signal received by both the receiver LEDs. It will give command to motors through H-bridge to move forward, or take a left turn or a right turn.

H-bridge (L293B)

The microcontroller sends a signal to the H-bride that acts as a switch. If the signal received by the H-bridge is high it will rotate the motor or else it won’t do so. Note that microcontroller only sends a signal to a switch which gives the voltage required by the motor to rotate. Here we are using L293B which can be used to control two motors.

Pin connections for H-bridge:

ü En1 & En2 are given logic 1 from microcontroller or give 5V from outside and are used to activate/deactivate one ‘half’ of the H-bridge.

ü V is the voltage that you want to supply to the motor(s) : 9 or 12V

ü Vcc is the logic 1 or 5V

Line Follower motor circuit diagram

The complete circuit diagram with all the integrated circuits required for making a line follower is shown below:-

Line follower circuit

Here we are using pins P1.0 and P1.4 for taking inputs from the IR sensors after being amplified by LM324.

P1.0 – Input from left sensor

P1.4 – Input from right sensor

There are six outputs from AT89S52 microcontroller to the H-bridge.

Pins P0.0 and P0.4 are connected to enable pins of the H-bridge. We can use them to deactivate/active the two halves of H-bridge i.e. if pins are set to logic 1 the corresponding half of the H-bridge will be activated.

P0.1 – will drive the left motor in forward direction

P0.2 – will drive the left motor in reverse direction

P0.3 – will drive the right motor in forward direction

P0.5 – will drive the right motor in reverse direction

Programming

Below is the code in C for the line follower.

C Code www.botskool.com

#include

/*

Sensors input port - P1

P1_0 --------> Left sensor

P1_4 --------> Right sensor

Motors output port - P0

P0_0 --------> Enable pin of the left half of the H-bridge

P0_1 --------> will drive the left motor in forward direction

P0_2 --------> will drive the left motor in reverse direction

P0_3 --------> will drive the right motor in forward direction

P0_4 --------> Enable pin of the right half of the H-bridge

P0_5 --------> will drive the right motor in reverse direction

*/

/*Delay function runs an idle loop to create a time delay. If the crystal used is of 11.0592 MHz then the argument passed in delay is in 'milliseconds'.*/

void Delay(unsigned int itime)

{

unsigned int i,j;

for(i=0;i

for(j=0;j<1275;j++);>//Idle loop

}

void Forward()

{

P0_1=1;

P0_2=0;

P0_3=1;

P0_5=0;

}

/*Generally for turning we use a pulsated wave so the bOt doesn’t get out of control i.e. we run the motor for sometime then again stop it and this is done very quickly to create an effective pulse. See the function below.*/

void TurnLeft()

{

P0_1=0; /*Left motor is not running in any direction.*/

P0_2=0;

P0_3=1; /*Right motor is running in forward direction. bOt will eventually turn left*/

P0_5=0;

Delay(50); /* Wait for 50 ms*/

P0_1=0; /*Motors are not running*/

P0_2=0;

P0_3=0;

P0_5=0;

Delay(50); /*Delay of another 50 ms*/

}

/*So in the above program we have effectively created a pulse of 100ms which is on for 50ms and off for another 50ms. You can change this value to suit your needs*/

/*Similarly we can write a function to turn right*/

void TurnRight()

{

P0_1=1; /*Left motor running in forward direction.*/

P0_2=0;

P0_3=0; /*Right motor is not running.*/

P0_5=0;

Delay(50); /*50ms time delay*/

P0_1=0; /*Motors not running in any direction*/

P0_2=0;

P0_3=0;

P0_5=0;

Delay(50); /*50ms time delay*/

}

void main()

{

/* The pins which are receiving inputs from the sensors should be initially set to logic 1.*/

P1_0=1; /*Left sensor input*/

P1_4=1; /*Right sensor input*/

P0_0=1; /*Enable pin of the left half of the H-bridge*/

P0_4=1; /*Enable pin of the right half of the H-bridge*/


//main loop of the program

while(1)

{

if((P1_0==0)&&(P1_4==1))

TurnRight();

else if((P1_0==1)&&(P1_4==0))

TurnLeft();

else

Forward();

}

}

Download c program file - linefollower.c

Download hex file – linefollower.hex

Download AT89X52.h header file

Friday, 23 April 2010

Robotic Car Traction Control

Introduction

For our ECE 4760 Final project we have developed a traction control system that detects wheel slip and adjusts the velocity of the wheels accordingly.

Robotic vehicles are becoming increasingly complex and often need high levels of movement control. Specifically, when the wheels of a vehicle begin to slip, it is optimal to adjust their speed so that the vehicle moves towards its intended direction. Applications include vehicles traveling over rough terrain, exploratory robots, and remote controlled cars. The purpose of our project is to design and implement a four wheel drive robot that monitors the rotational velocity of each wheel and limits the amount of slip when the vehicle is accelerating.

Figure 1: Front Two Traction Control Wheels

High Level Design

An electronic limited slip differential system controls the rotational velocity of the output shafts of a vehicle using speed sensors, anti-lock brakes, and microcontrollers. By electronically monitoring slipping, the microcontroller can activate the anti-lock brakes to slow down the wheel that is moving too quickly. An electronic system has the ability to be adjusted for different applications or conditions, such as on and off-road terrain, slippery weather, or driving at different speeds. This makes it much more attractive than a mechanical system. While the dynamics of modern day traction control systems are very complex, the basic idea motivated our project. The applications for this design are very practical and universal. Any vehicle with two or more wheels will benefit from greater stability and movement control with our traction control system.

The main component of our traction control system is a feedback loop that adjusts the velocity of each individual wheel to the velocity of the slowest wheel on the vehicle. It contains both positive and negative feedback by slowing down the fastest wheel motor and speeding up the slowest. A basic schematic of our system is shown in Figure 1. This block diagram is implemented four times in software for each wheel.


Figure 2: Basic Feedback Loop Structure

Background Math

Velocity and Acceleration

To calculate the velocity and acceleration from the encoders, we need to record the time between phase changes. We also need two velocity readings to estimate acceleration and will assume a constant acceleration between adjacent phases.

To calculate velocity we use the standard formula:

Notice we are sampling and using since our changes are finite. To find we start a timer at each edge and record it at the following edge. This gives us the elapsed time between known positions. Therefore our velocities are:

We can normalize distance out of our calculations since the distance traveled between each reading is constant at 1/8th a rotation.

These velocities are the average velocities over the recorded time interval and therefore if we are going to use them to calculate acceleration we must use the velocities at the midpoints of the time intervals. The acceleration is:

We found it easier to calculate acceleration directly from the time differences using the formula:

Figure 3: Sample graph of velocity calculations

Pulse Width Modulation

Pulse width modulation of a square wave of changes its duty cycle to control the amount of time a signal is high during a single period. The average value of a square wave is defined as,

Where T is the period of the square wave and f(t) is the square wave function. This function can be described as some maximum value ymax between 0 <>min for the rest of the period, D·T < style=""> Here D (duty cycle) is the fraction of the period that the square wave is at its maximum value. Substituting this into the integral above and then solving for :

All signals generated for this project have a minimum value of zero. Therefore, the average value of each PWM signal is directly proportional to its duty cycle.

Logical Structure

Figure 4: Basic Schematic of the Traction Control System

This is a basic block diagram of our traction control system. The Mega644 microcontroller was used to generate four PWM signals to be sent to the H-Bridges and to read the rotary encoder signals. Electrical connections are shown in blue and mechanical connections are shown in red. Inputs to the microcontroller are labeled as PINxn and outputs are labeled as PORTxn. OCRnx are the PWM output registers that control the motor speed. This diagram is explained in detail in the software and hardware design sections of the report.

Hardware/Software Tradeoffs

There were many trade-offs that had to be made in our design, many of which we discovered while debugging and testing. One major trade-off was the rotary encoders we used to determine wheel velocity. There are two major classes of encoders, optical and mechanical. Optical encoders offer significantly higher accuracy, can offer much faster maximum rotational speeds and most importantly for this project, must higher pulses per revolution (easily exceeding 128 ppr). The greater the pulses per revolution, the quicker the response, and/or the more accurate the velocity reading. Unfortunately these encoders are priced outside of our budget and we were forced to use a mechanical encoder with 16 pulses per rotation. This means that we would require two full rotations of the wheel to gather as much data as 1/4 revolution of a fairly common optical encoder. The additional information could help the effectiveness of a traction control system on two accounts. First we could detect a slip quicker, apply a duty cycle change, and check the effectiveness of that change in a much shorter time frame and more importantly, a much smaller wheel rotation. Or, if there are inaccuracies in our time readings (as we see with our current encoders) we could average 16 readings in 1/8 revolution with the optical and a maximum of two readings with the mechanical encoder. We can easily see the disadvantage of so few pulses in our prototype as it takes multiple revolutions to reach the desired speed.

We also encountered tradeoffs that had to be made within the design of our software. We started out designing an edge triggered interrupt to accurately detect a phase change on the encoder signal and get an accurate time reading. Since the Mega644 only has one comparator we had to combine the pulses from the four wheels onto 1 signal wire. We found a hardware solution to implement this (by XORing the previously read data points and ORing the XOR’s outputs). But this required us to allow our edge-triggered interrupt to be interrupted. Another difficulty with our edge triggered interrupt was the significant switch bounce seen on the encoders during a phase change. This problem is described in greater detail in the software section. The combination of our re-entrant interrupt and significant bounce noise required us to switch to polling the encoders. This gives us much less accurate timing, but is significantly easier to implement.

Figure 5: Design of edge triggered interrupt external hardware
(not used in final design)

Finally, we identified a tradeoff with our threshold settings. The more we allowed wheel velocity to vary, the faster the wheels would reach the target speed. This is truly a tradeoff as both results are desired. We simultaneously want fast response as well as matched wheel speeds. Of course the solution to this problem is to implement a sophisticated algorithm and feedback control. Unfortunately we did not have the time, nor the expertise required to properly characterize the system and develop the stable and efficient algorithms needed to fully utilize the system and perfect the design.

Standards

Our project was not required to follow any standards when it is under operation. It consists of a self contained system that does not transmit or receive any external data. Additionally, our robotic vehicle obeyed all speed limits and local traffic laws. When programming and debugging our software, we followed the RS-232 standards for serial data.

Existing Patents and Copyrights

The ideas used in our project were considered to be in the public domain and we did not copy any patented designs to accomplish our goals. This project was used for educational and demonstrational purposes only. At the conclusion of our project, we are not considering to pursue any copyrights or patents on our design.

Figure 6: Complete Traction Control Vehicle

Software Design

The software can be broken up into three major sections, timers, PWM signal edge detection, and wheel torque adjustments. In combination these parts are able to accurately read each wheel’s velocity and acceleration and allocate the proper amount of torque to reach and maintain a desired speed while improving traction by reducing wheel slip.

Interrupts and Timers

Due to the relatively slow servo motor maximum speed, encoder signal noise, and difficulties with edge triggered interrupts, we decided it would be sufficient to poll the rotary encoders. Therefore we maintained a counter for each wheel that was incremented in our interrupt every 0.2ms. Placing the counters in the interrupt ensures that the few hundred to roughly two thousands increments were done consistently, and any timing accuracy lost was only during the processing of these counts. For example, during our testing we underestimated the length of time to send data to Hyper Term. Before placing the counters in the interrupt we saw a very large margin of error with our elapsed time measurements as the hyperterm task influenced each increment. After moving the counters to the interrupt we only had one delay per encoder phase instead of a delay for each additional timer increment. This gave much more consistent speed measurements (although we decided to remove Hyper Term functionality all together for the final car).

Detecting Encoder Edges and Recording Data

Due to budget constraints we were forced to use the less expensive and reliably mechanical type encoder instead of the more advanced optical encoders. During our debugging process we noticed that the edges during phase transitions were very inconsistent as the switches would make and break a connection multiple times at each transition. This variability would often continue for around 1ms (see diagram).

Figure 7: Rotary Encoder Edge Noise

In order to accurately detect a single edge we implemented the debouncing technique used in the DTMF dialer lab. We found reliable edges could be detected with ten consistent readings (at 5kHz) This limits the maximum phase of the PWM signal to roughly 3ms limiting wheel speed to about 41Hz, which is still far beyond the capability of the servo motors used. After an accurate phase reading is taken, we compare the phase with the last recorded value. Only when a change occurs is an edge detected. Once an edge was detected the elapsed time counter was stored and reset. The previous datapoint was moved but not deleted. Remember that two velocities are needed to calculate acceleration (see background math section).

Deciding torque adjustments

The main purpose of a traction control system is to maintain wheel grip. In order to do this we must detect when a wheel is moving faster than the car. We use two references to control the duty cycle of the PWMs sent to the wheels. First, the car has a desired speed. In order to make calculations as simple as possible we refer everything to the inverse of velocity, which once distance is normalized out, are simply our timed pulse widths. Our desired speed is therefore recorded as a pulse width and all wheels accelerate or decelerate in order to stay within a defined margin of the desired speed. If a wheel is moving significantly slower than the desired speed, then we ensure that no wheel is moving faster than a different pre-defined margin of this slowest wheel. This process allows the car to quickly reach its desired speed without slipping.

Below is a timing diagram for our PWM signal. We programmed the TCNT1 and TCNT2 registers to count from 0 to 256. When we wanted to increase the speed of the wheel and thus the increase the duty cycle on the PWM signal, we would increment the OCRnx register by a fixed value. This was true for the inverse. When we decremented the OCRnx register, the duty cycle of the PWM would decrease. Also note that the frequency of the pulses is identical no matter the duty cycle. We used a frequency of about 31 kHz to optimize the H-bridge functionality.

Figure 8: Mega644 PWM Output Timing Diagram

Hardware Design

The hardware was designed to create a robotic car with four individually controlled servo motors using PWM signals and H-bridge circuits. The rotation of each motor was measured with a 2-bit (gray code) rotary encoder. Additionally, the acceleration of the vehicle was measured with a z-axis 1.5g acceleration sensor. A basic schematic of the hardware setup is shown below.

H-Bridge Motor Driver

The H-Bridge circuit allows the microcontroller to run a two-terminal motor without any large noise spikes feeding back into the microcontroller circuitry. When the motor is switched on and off, there is a large change in voltage in a short period of time. Since the motor can be modeled as an inductor, the big change in voltage will cause a huge spike in current, which can destroy the input terminal of the microcontroller. This is prevented by wiring diodes across four MOSFET in the configuration shown below to stop current from flowing when the MOSFET is turned off. These devices have similar properties of a switch because they can limit or amplify the flow of current depending on the voltage across the gate to body terminals.

Figure 9: H-Bridge Motor Driver Schematic

The H-Bridge came in a 8-pin SOP package with inputs for Vcc, ground, forward pulse width modulation (PWM), and reverse PWM. There were two outputs to wire across the terminals of the motor. Since there were two separate inputs for forward and reverse PWM signals, our design was utilized only the forward PWM signal to control how the vehicle moved in the forward direction.

Figure 10: Two H-Bridges on an SOIC Header

Rotary Encoder

The rotary encoders are used to resolve wheel velocity and acceleration. The encoders output a two bit binary quadrature signal, meaning they output two pulse width signals that are 90 degrees out of phase. The pulses are generated by opening and closing switches to a common ground. Therefore, in order to generate a readable signal from the encoders, we used pull-up resistors on the signal lines. Also, since the two phases were not sufficiently accurate relative to eachother, we only use 1 signal from each encoder. This cuts the number of pulses per rotation in half, but gives us a more consistent signal for accurate timing.

Figure 11: Rotary Encoder Schematic

The specific encoders we used had 16 pulses per rotation. This means that there were four periods per rotation. The repetition would be insufficient for us to determine the position of the wheel (it is ambiguous which quadrant the wheel is in) but satisfactory for determining velocity. An example signal and rotary position is shown below. Velocity is determined by timing the difference between the rising and falling edges. Similarly, acceleration can be determined by calculating the difference in velocity between two adjacent pulses. Note the acceleration between the orange phase and green phase.

Figure 12: Pulse signal from encoder with encoder position

Servo Motors

To rotate the wheels of our vehicle, we used four continuous rotation servo motors. They run on a maximum of 6 volts DC and rotate a full 0 to 180 degrees. An image of the motor is shown below. To attach the rotary encoder, we modified each motor by removing the back plate and attaching a metal rod to the back side of the rotating gear. We then used flexible clear plastic tubing to form a connection between the metal rod and the rotary encoder. A picture of the modification is shown below.

Figure 13: Servo Motor Layout

Figure 14: Servo Motor Layout

ATmega644

The Atmel Mega644 was used to control and monitor the acceleration and velocity of our vehicle. The major features of the Mega644 that were used for our project included one 8-bit timer, 4 PWM output pins, one Analog to Digital converter, and four standard I/O pins. The Mega644 chip was built on a prototype board provided by Bruce Land. It features an easy way to power, attach a crystal clock, connect to a RS232 interface, and program the Atmel chip. A schematic of the board can be found here.

We chose to attach the optional interface for serial communication because it provided critical debugging features and we had extra money to budget. An image of a completed prototype board is displayed below courtesy of the ECE 4760 website.

Figure 15: Sample proto-board from 476 website

Results

In general, the end result of our traction control was a success. The vehicle was able to ramp up its velocity uniformly without any major slipping. When the vehicle reached its desired speed, the wheels maintained their velocity and generally stayed in balance with each other. In order to test that out system was working, we performed two tests. First, we placed tightly fitting rubber bands around the outside rims of the left two wheels and kept the plastic wheels on the right side unmodified. We then started up the vehicle in the hallway on hard tile flooring. As the car started up, the velocity of each wheel was maintained a constant rate and the car moved in a relatively straight path for about 2 meters.

The results of the start-up can be seen in the plot below. When the car first starts, wheel number 4, shown in turquoise, is established as the fastest wheel and wheel number 3, shown in red is the slowest wheel. Almost immediately, wheel 4 jumps up to 14 rpm and is promptly slowed to run at the same speed as the other wheels. The wheels continue to pick up speed, until they reach a programmed desired speed. It is held at this speed for a few seconds. Looking at the region between 3 and 7 seconds, wheel number 2 naturally tries to run at a speed faster than desired. This is recognized by the microcontroller and the PWM is adjusted to make the wheel run slower. The reverse is true for wheel 3 and the microcontroller sends more power to the motor to account for this.

The second test involved pushing down on a single wheel and slowing it down to a very low velocity. The system would pass this test if the other wheels recognized that they were rotating too quickly and slowed down appropriately. The results of this test are also shown in the graph below. At about 7 seconds, the second wheel is held down and its velocity drops to about 6 rpm. The response of the other wheels 1 and 3 is pretty fast and responds to the velocity change within a couple of measurement cycles. Wheel 4 was the slowest to respond to the change, taking less than 1 second. Although there is a fast response time to the velocity change, the time it takes to actually slow the other wheels to the slowest level takes a very long time. As shown in the graph, it takes well above 2 seconds for the other wheels to drop down to 10 rpm.

Figure 16: RPM vs Time for Traction Control Start-up

Figure 17: Worst Case RPM vs Time Scenario

The results of our second traction control test are shown above. At about 1 second, the 4th wheel is held down and it slows to 20 rpm. The other wheels respond in about the same manner as the first test. Overall, we can see that it takes around 3 seconds to the wheels to completely adjust to a large change in velocity. Then, at 12 seconds the wheel is released. Since wheel 4 naturally ran the fastest of all the wheels, there was a large acceleration. The system tries to respond to the situation, but it takes over 8 seconds just for the wheels to recover about ¾ of the velocity difference. This was a worst case scenario for our traction control system.

Conclusions

Analysis

Our prototype traction control system demonstrates how a high speed microcontroller can be used to accurately control a varying and possibly unstable system. Our controller effectively throttled wheel speed when a slip was detected as well as actively controlled wheel rotation to maintain the desired speed. Although our results demonstrated the functioning of our code, we originally hoped for a faster response ideally being able to correct wheel slip within one rotation. The slow response was mainly caused by adjusting the PWM pulses by 1% each time a measurement was recorded. We sacrificed a fast responding system for a more stable one. This is always a careful balance to choose for many engineering problems. The addition of higher accuracy encoders as well as implementing a more sophisticated control algorithm would help us achieve more desirable results. Due to our implementation of a four wheel, independent drive system, our project would require some significant overhead to be integrated with other commercial vehicle stability systems such as ABS (anti-lock breaking system) and ESC (electronic stability control) systems. This again was a trade-off as integrating with the various automotive communication standards and devices would in itself be a substantial design project.

Standards and Intellectual Property

Our project did not require the use of any public or private domain software or any proprietary hardware. Although our specific implementation of a traction control system itself would not be sufficient for a patent, it does serve as a strong baseline for further development on traction control. Traction control itself is a fairly new technology and is just now becoming main-stream in consumer automobiles. There is certainly substantial opportunity for improvement to the current algorithms and systems used today, especially if the focus is moved to include performance (most traction control systems are for safety only and can negatively affect performance).

Ethics

During the design of our traction control system we had to keep in mind the use of such systems and the ethical responsibilities of design. Most traction control systems are used on consumer motor vehicles as a safety system. Our system, as well as commercial grade systems, has the ability to over-ride driver control. A malfunction of this system could significantly compromise the safety of the passengers as well as others on the road. Even if the system was not used on a passenger vehicle, it is still partially or wholly responsible for the movement of a potentially dangerous object. Therefore during our design we constantly had to keep safety in mind and try to design such that failures are minimized and will not result in an out of control vehicle. This was reflected in our decision to keep the less aggressive method of throttling up wheel speed and using small accepted margins of error. This means that our model car’s acceleration was significantly less than the motors where capable of doing, but the slower accelerating vehicle would have better slip protection favoring safety over performance.