ROBOT DESIGN

Section 1 - Requirements

1.1 Introduction

Robot is a kind of automatic machine, which has particularly a series of similar competences as human-being, such as sensing capability, planning capability, moving capability and so on. The word ‘Robot' was referred by Czech writer Karel Čapek in his play R.U.R (Rossum's Universal Robots), which was published in 1920. [1] Moreover, the word robotics, which describes this kind of field of study, was referred accidentally by the science fiction writer Isaac Asimov. In his science fiction, all the robots must obey the Three Laws of Robotics (a set of three principles). The laws are stated as follows:

1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.

2. A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.

3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

With the developing of science and technology of modern society, robot is moving toward the trend of the development of intelligent. The one we will design is called Autonomous Mobile Robot which is a kind of mobile robot. It has varieties of sensors and controllers on itself. In addition, it is a robot that can independently complete some tasks without external information input and control during operations. The target for autonomous mobile robot is to, in the absence of external intervention and without making any provisions on the circumstance and changing conditions in carrying out the process, sense around the local circumstance information continuously and make a variety of decision-making independently and finally move purposeful and the complete the tasks. Accordingly, navigation technology is the core of autonomous mobile robot.

1.2 Lifecycles

The diagram of lifecycles for this project is given below. It shows from the beginning of the project to the end.

The system project management is an extremely vital part in every project, though it is always ignored in many teams. We need make a point of doing project management before do everything. We could discuss in a group to think out all of the possibilities which may happen in the project. ‘Many torpedoes are better than a single bullet.' [7] Therefore, a group discuss together may motivate more and more inspiration rather than each single thinks it alone. A typical system feature should have simple function but complex design. It need also make a series of requirements after discussing by group, because it provides some different point of views. Possibly, there will be some quarrels during the discussion, hence, we need to respect to everyone and every point of view. In addition, a straight discipline will be built throughout the project. Every engineer should behave in honest and ethically responsibility. Otherwise, they will not be treated as a professional engineer in their field. Nearly half of team, who is failed in the project, is due to a bad project management. However, the majority of teams may give incomplete requirements in the project; therefore, the result for them is also fail. To sum up, building a high-quality project management and system engineering will decrease project failure probability.

1.3 Quality Plan

The quality plan displays the required product qualities and how these are measured and defines the most important quality attributes. The product quality is defined in High-level which emphasize the capabilities of developers for this project. Therefore, we have to consider if the project objectives are specific, measurable, achievable, realistic and time-limited. The quality plan structure is showed in table 2.

Process Description

Build all of the motors, microcontrollers, sensors and other components on the housing. Then connect all components to the power supply. In addition, build the software code into microcontrollers. Finally, before the formal race, we need to test the robot and improve on the ability such as speed, stable and so on.

Quality Goals

To drive as fast as possible and also ensure the egg will not get out of the car.

Table 2. Quality Plan Structure

1.4 Requirements specification

There are a series of requirements going to be given in the paper. It can be grouped in terms of Mandatory, Preference and Operational. Three specific tables of these requirements are given as follows:

·Mandatory Requirements

Motor

To make the wheels rotate. Designer need two motor corresponding with two rear wheels.

Sensor

To provide the robot drive on the right route. It uses A/D conversion to send the signal into singlechip.

DC Converter

To step-down the voltages from the power supply. The work voltage for singlechip is around 5V, but the power supply given is much higher than it. Hence, designer needs to reduce the voltage.

Wheels

To make the robot running. Designer need two rear wheels which measure the speed of rotating and one base wheel which makes the robot balance. It

Microcontroller

To integrate all inputs, outputs and memory etc. into one chip.

Housing

To put all components on. It is a base for the robot car.

Power Supply

To provide voltage so that works successfully.

Wires

To connect all components from one hole to another.

Spoon

To carry an egg whilst undertaking its journey.

Black line

To give the robot a track to race. The black line is 5 meter long. It can be designed any shape of routes.

·Preference Requirements

Aesthetic Appearance

To prettify the robot from inside to outside. It will be done after dealing with all Hardware and Software components, including adding several Led lights or a sound box. Also, orderly wires connected on the breadboard will be considerate. All of the opinion above would make consumer happy.

Battery

To give a wireless robot car. Using a pack of battery instead of wired power supply can make a ‘real' robot. However, it will increase the weight of robot itself.

·Operational Requirement

Personnel

To distribute each part of project to each of six team member specially. In the project, there are different tasks such as programming design, hardware design, mechanical construction etc. After discussion by group, we can filter out the best parts of each section. Therefore, the project can be distributed to each team member who did the best in his field. In addition, there should be a team leader, for supervising and coordinating every part in this project.

Test Equipment

To test the robot after designing and assembling work. Designer can use different types of raceways to test the ability of the robot such as the maximum speed, minimum and maximum radius of turning circle etc.

Facilities

To fix the robot with exact tools. Designer needs some basic tools to assemble the components on the housing.

Technical Data

To give some specific details. Designer may search online to get some technical data, which can prove our design point.

Computer Software

To design the programming code. Using Microchip MPLAB(if designer use PIC microchip) or other similar software to build the programming code.

Cost

To control the budget. As we know, designer should give a budget before working. In this project, the budget is 40 pounds, while we can exceed the budget by paying own. However, it is not a good solution. Therefore, the budget should be controlled strictly.

Section 2 - Design

2.1 Design Outline

We divide the design outline into two parts. One is Hardware, and the other is Software. Both of them are extremely vital in this project. We will use EE2A laboratory component to guide us design the project throughout. [8] All of the specific details for each component will be given in each part. A table for design outline is as follows:

HARDWIRE

Motor

Housing

Sensor

Microcontroller

Power Supply

SOFTWARE

MPLAB IDE

2.1.1 Hardware

2.1.1.1 Servo Control

The key of Servo Control is motor. In this paper we will give two kinds of motors—Servo motor and Stepper motor.

·Servo Motor:

It is one kind of indirect subsidy motor speed changing device which can control the mechanical components of the engine running. It can control the speed, displacement accuracy. In addition, it makes voltage signal into torque and rotational speed to drive the controller. The servo motor is divided into DC servo motor and AC servo motor.

Servo motor mainly relies on impulse to locate. Also, when servo motor receives a pulse, then it will rotate an angle which is corresponding to one pulse. Thus, it may achieve a displacement. Because of the servo motor has sent a pulse function itself, hence, each servo motor will sent the corresponding numbers of pulse when it rotates an angle. Moreover, it is connected to the pulse which is received by the servo motor, or called ‘Closed-loop'. Furthermore, the system will know how many pulses have been sent and how many pulses have been received simultaneously. Accordingly, we can control the motor rotation accurately, in order to achieve precise positioning which can reach 0.001mm.

In DC servo motor, it is divided into brush and brushless motors. The characteristics of brush motor and brushless motor are as follows:

·Brush: Low cost, simple structure, large starting torque, speed range is wide, easy control. Do need to maintain (but easy maintenance).

·Brushless: Small size, light weight, fast response, high speed, small inertia, smooth rotation, stable torque. Complicated control, easy to implement intelligence. High efficiency, low operating temperature, small electromagnetic radiation. Motor maintenance-free.

·Stepper Motor:

Stepper motor is an open-loop control element which translates electrical impulse signals into angular displacement or linear displacement. Under the non-overload condition, motor speed and stop location only depend on pulse frequency and pulse number, regardless of the load change. That is, to send an electrical pulse signal, then turn one motor step angle. The existence of this kind of linear relationship, coupled with only a periodic error of stepper motors without the accumulated error, makes simple to control the stepper motor in terms of speed, position and other control areas. The characteristics of stepper motor are given as follows:

· Stepper motors are constant power devices

· When there is a motor speed increasing, then the torque decreases

· The torque curve may be extended by using current limiting drivers and expanding the driving voltage.

· Stepper motor has more vibration than any other motors.

· The vibration becomes awful at some speeds and may affect the motor to lose torque.

· The effect can be reduced by increasing velocity quickly through the problem speeds range, actually damping the system, or using a half-stepping motor.

· Motors with many phases also display smoother operation than those with fewer phases.

The technical requirements of the servo control system

1. System Accuracy

The accuracy refers to the reappearance of the input signal corresponding with the output of the precision required, which performs in the form of errors. It can be summarized as dynamic error, steady-state errors and static errors, which are composed of three aspects.

2. Stability

The stability of the system means that when acting on the system after the disappearance of the interference, the system can be restored to its original steady-state capacity; or when there is a new input to the system command, the system will reach a new stable operation of state capacity.

3. Response

The response refers to the output follow the input commands changing in reaction speed, which determines the efficiency of the system. The Response speed corresponds with a number of factors, such as the computer's speed, movement system damping and quality etc.

4. Operating Frequency

The operating frequency usually refers to the system which allows the input signal frequency range. When the operating frequency signal is input, the system will work according to the technical requirements, while the other frequency signal is input, the system will not work properly.

The classifying of servo control system

There are three kinds of common classifying as follows:

1. According to the different characteristics of parameters.

2. According to the types of the driving components.

3. According to the control theory.

The Structure of servo control system

Servo control system typically includes in five parts-----controller, controlled object, implementation part, testing part and comparison part.

1. Controller

Controller is usually a computer or a PID control circuit. The most important task is to compare the warpage output signal and deal with the transform processing, in order to control the implemental components act under the requirements.

2. controlled object

The object is controlled including displacement, velocity, acceleration, force and torque.

3. implementation part

The function of the implementation part is in term of control signals, according to the requirements of the various forms energy of the input transform into mechanical energy, in order to drive the controlled object.

4. testing part

Testing part is a device which is able to measure the output and convert into more areas of the dimension that needed to. Typically, it includes sensors and conversion circuits.

5. comparison part

Comparison part is to compare between the input command signals and the feedback signals of system, in order to attain the deviation between the output and input signal, which is usually achieved by a specific circuit or computers.

Accordingly, we design this project with using stepper motor. Considering with the difficult in doing the program code, we have to give up using DC servo motor. Moreover, DC servo motor may create some pulses when it works; we have to make each program separately. Furthermore, the advantage for using stepper motor is that we have already programmed the code. Hence, we could use it with some modification easily.

2.1.1.2 Housing

In this project, housing is as to the robot, just like trunk as to human-being. The stability and adaptability is the key of the project. Therefore, we prefer buy a readymade housing or the car online. There are 3 advantages for using this method. Firstly, we do not need to deal with the mechanical construction anymore. All of the basic components have already been built on the housing model. It can save an amount of time to do other work; secondly, the housing model is reliable, for the seller has sold so many models already, particularly to the competitors for the race; thirdly, the cost is lower than we do it ourselves. It can control the budget very well. To sum up, we choose this way to get the housing. In addition, the specific size of each component should be given on the prospectus.

Therefore, after choosing kinds of different type of housing, we pick up an advanced housing with wheels.

The size of wheels could affect the speed and the angle when it is driving. Under the same condition, using big wheels can go fast in the straight line. However, when there is a curve at the end of straight line, it is harder to turn the right direction immediately than small size wheels, because of its big radius of turning circle.

The material of wheels could also affect the speed and angle when it is driving. Using plastic rear wheel may provide a high speed because of less friction. However, without more friction, it may get trouble at turning point with high angular velocity. In our case, to make sure the robot go through the black line track is the most important task. Therefore, rubber wheels should be in favour.

Hence, to make wheels rotate flexible, we choose a stainless steel base wheel with 3mm inter radius, 10mm outer radius, 4mm thickness. Moreover, two rear wheels were designed with 20mm radius to make sure it has still some space under the housing to build our sensors on. According, the manufactory constructed the housing for these details we need. Finally, we fix two O-type rubber rings on the wheels.

In the front of the housing, we still need to deal with some specific works. Firstly, we need two stepper motors discussed before, the point is, how to fix them on the housing steady. Right, we need two clips to fix them on the housing. Then use one screw and one nut for each side to fix the motor steady. Secondly, to make the housing tidy, we need to add a steel plate. It can not only steady the housing, but also provide another new flat to fix chips on so that do the connection work later easier. Furthermore, we have another goal in this project. It is called ‘egg race'. It means we must build a spoon provided to carry an egg throughout the race. Hence, we have to consider how to ensure the egg will not be dropped off. Consequently, we design it that put the spoon on the cover of that added steel plate. It is a good place to lay the egg on, for it is not too high. In addition, we could add several wires around the spoon to double ensure it successfully.

2.1.1.3 Sensors

Image Sensor

An image sensor is a device which converts an optical image to an electric signal. It is used regularly in digital cameras and other imaging devices. Normally, an image sensor is a charge-coupled device (CCD) or a complementary metal-oxide-semiconductor (CMOS) active-pixel sensor. Most digital still cameras use either a CCD image sensor or a CMOS sensor. Both types of sensor achieve the same task of capturing light and converting it into electrical signals. [2]

CMOS

A CMOS chip is a type of active pixel sensor which is made by using the CMOS semiconductor method. Extra circuitry adjacent to each image sensor converts the light energy to a voltage. Moreover circuitry on the chip might be included to convert the voltage to digital data. It is a sensor which has high system integration. That is to say, a CMOS chip can integrate all of functions needed by image sensor into a system-on-chip so that to achieve the goal of reducing the cost of the production.

CCD

A CCD is an analog device. When light hits the chip, it is held like a small electrical charge in each photoelectric sensor. The charges are converted to voltage one pixel every time when they are read from the chip. Moreover, the circuitry in the camera converts the voltage into digital data too.

A CCD has a series of advantages as follows:

· High Resolution

· Low Noise

· High Dynamic Range

· Linearity

· High Quantum Efficiency

· Large Field of View

· Broad Spectral Response

· Low Image Distortion

· Small Size, Light Weight

· Low Consume Power, Without Strong Magnetic Fields Effect

· High Charge Transmission

Photoelectric sensor

A photoelectric sensor is a device used to detect the displacement, absence, or presence of an object by using an infrared transmitter and a photoelectric receiver. They are used broadly in industrial manufacturing. There are three different functional types: opposed, retro reflective, and proximity-sensing.

A self-contained photoelectric sensor contains the optics, along with the electronics. It requires only a power source. The sensor performs its own modulation, demodulation, amplification, and output switching. Some self-contained sensors provide such options as built-in control timers or counters. Because of hi-tech progress, self-contained photoelectric sensors have become more and more small. In addition, fibre optic is passive mechanical sensing components. They may be used with self-contained sensors. They have no electrical circuitry and no moving parts, and can safely pipe light into and out of antagonistic environments.[3]

After discussing both image sensor and photoelectric sensor, we decide to use photoelectric sensor during the project. From the comparison of advantages and disadvantages, we can easily find that image sensor (usually use CCD method) is a complicated and advanced technology. It is based on photoelectric infrared transmitter and receiver, but use analogue signal to digital signal. It could be used in some complex task such as 3-D race track. In our project, we only challenge to do up to 5 meters race track. Hence, it is not so much useful to get such an exact detection. Moreover, one of the advantages of photoelectric sensor is high response. It is faster than using image sensor to detect the unknown track.

Accordingly, we prefer use photoelectric infrared sensor during the project. As we know, the point of photoelectric infrared sensor is infrared. We have to confirm two beside sensors do not disturb each other work. Hence, to get an appropriate distance between two sensors is the problem in this part.

From reading several example projects before, we find a majority of them prefer put all the sensors into one straight line where elicits our attention. It does not matter to put them in front or back of the robot. It is similar to the X-axis. We can define each sensor a coordinate. We prefer use seven infrared sensors (1cm space between two sensors), so we can define all of these sensors into [-3, -2, -1, 0, 1, 2, 3], which are the y-coordinate. Connect a LED light to the receiver of each sensor. Thus, we can know which sensor is working and which one is not. The specific diagram of sensors are showed in 1. For example, the robot starts at the centre of black line, so the LEDs should send us a data with [0, 0, 1, 1, 1, 0, 0] (when sensor detects black line, the LED will light. Because the different reflectivity of black and white line). Then it will go along the track until meet a turning point. The receiver might be received a data with [0, 1, 1, 1, 0, 0, 0, 0]. Thus, from the definition of setting before, we can identify the robot has departed from the centre of the black line to left. Therefore, the robot should turn left.

There will be some possible troubles during debugging the robot car. The sensors are not reliable after using for a long time. Therefore, the fixed LEDs will solve this problem definitely. When they work, the LEDs should be lighted.

2.1.1.4 Microcontroller

A Microcontroller is a small computer based on a single IC (integrated circuit) which is consisting of a relative simple central processor unit combined with specific functions such as a crystal oscillator, timers, and watchdog timer etc. [4]

From the comparison with kinds of microcontroller, we choose MC33886 chip which is a member of the low-cost, high-performance HCS08 Family of 8-bit microcontroller units (MCUs). It is a monolithic H-Bridge ideal for fractional horsepower DC-motor and bi-directional thrust solenoid control. The 33886 chip is able to control continuous inductive DC load currents up to 5.0 A. Output loads can be pulse width modulated (PWM-ed)at frequencies up to 10 kHz.[5] The 33886 chip is parametrically detailed over a temperature range of -40°C ≤ TA ≤ 125°C, 5.0 V ≤ V+ ≤ 28 V. The IC can also be operated up to 40 V with derating of the specifications. The IC is available in a surface mount power package with uncovered pad for heat sinking. The features of MC33886 chip is showed below: [6]

Features:

· Similar to the MC33186DH1 with Enhanced Features

· 5.0 V to 40 V Continuous Operation

· 120 mΩ RDS(ON) H-Bridge MOSFETs

· TTL /CMOS Compatible Inputs

· PWM Frequencies up to 10 kHz

· Active Current Limiting via Internal Constant OFF-Time PWM (with

Temperature-Dependent Threshold Reduction)

· Output Short Circuit Protection

· Under voltage Shutdown

· Fault Status Reporting

· Pb-Free Packaging Designated by Suffix Code VW

In addition, the simplified application diagram and internal block diagram for MC33886 chip is given as follows:

The 33886 chip has 20 pins. The diagram and specific Pin Layout function description will be given in 4 and table 1 as follow:

Pin Layout

Pin Layout Name

Formal Name

Description

1

AGND

Analog Ground

Low-current analog signal ground.

2

FS

Fault Status for H-Bridge

Open drain active Low Fault Status output requiring a pull-up resistor to 5.0 V.

3

IN1

Logic Input Control 1

True logic input control of OUT1

4, 5, 16

V+

Positive Power Supply

Positive supply connections.

6, 7

OUT1

H-Bridge Output1

Output 1 of H-Bridge.

8, 20

DNC

Do Not Connect

Either do not connect or connect these pins to ground in the application. They are test mode pins used in manufacturing only.

9, 10, 11, 12

PGND

Power Ground

Device high-current power ground.

13

D2

Disable 2

Active Low input used to simultaneously tri-state disable both H-Bridge outputs. When D2 is logic Low, both outputs are tri-stated.

14, 15

OUT2

H-Bridge Output 2

Output 2 of H-Bridge.

17

CCP

Charge Pump Capacitor

External reservoir capacitor connection for internal charge pump capacitor.

18

D1

Disable 1

Active High input used to simultaneously tri-state disable both H-Bridge outputs. When D1 is logic High, both outputs are tri-stated.

19

IN2

Logic Input Control 2

True logic input control of OUT2

Table 1. Pin Layout Function Definition

Some details for using the MC33886 chip should be noticed that how to use several chips together in this project. The method is using a number of MC33886 chips together in parallel. For there is no need to drive backward, hence, we could use half H-bridge and also make two half H-bridge in parallel. The consequence for this method is to enhance the driving ability of the chips. It is a common variation from full H-bridge that uses two transistors on one side of the load. Moreover, use one of the half H-bridge to drive the motor and the other one to provide power for the sensors.

2.1.1.5 Power Supply

Power supply is one of the most important components and the fundament for all components working. A regulated DC power supply provides 0~15 V voltage. There are two different way to build the power supply in this project. One is using two wires to connect 0 and +15V to the DC-DC converter; the other one is building a battery on the robot itself. Both of them have advantages and disadvantages. Therefore, we have to analyze both of them first.

· Wired Power supply

The advantages for the wired power supply are reliable, stable, durable and savable. The power supply is a regulated DC power supply. The only thing we need to do is using wires to connect both 0 and +15V to the DC-DC converter. Because the working voltage for whatever microcontroller, sensors and stepping motors is 5 volts, we need a DC-DC converter to convert voltage from 15V to 5V. Moreover, we do not need to consider the duration of the power supply. It will still work normally even if works after several hours. Furthermore, using wired power supply is an excellent method to consider the cost during the project, for the power supply is a preference requirement in this project. Hence, we do not need to cost a lot on it.

The disadvantage for the wired power supply is obviously wired. We have to let one person hold wires when it is driving. This is a consideration from personnel aspect. It is a waste of energy to the team.

· Wireless Power Supply

The advantage for the wireless power supply is that we can design a really autonomous robot. We do not need to contribute one person to look after it. However, we may meet a series of problems when using battery. Firstly, it may increase the weight of whole robot. As we know, it is hard to turn left or right when you drive a high weight car. It is similar to an autonomous robot. Secondly, the duration is limited. For we have to test the robot before the race competition, the problem is how long does this pack of battery provide the power. The answer is not too long. Therefore, if we choose to use battery as the power supply, we have to solve how to charge the battery first.

To sum up, it is not a good method to use battery in this project. Basically, we consider from the duration and the cost these two aspects. Accordingly, the final scheme we designed is to use wired power supply.

2.1.2 Software

Because we do not have MC33886 chip yet, we have to use PIC 16F648A chip to simulate this design. It should be kinds of similar to each other, but particularly in using different software.

With the purpose of writing program data into a PIC chip, a software programmer is required. In the design, a USB controlled PICkit2 may be used. We will give following steps to guild us through the generation of the programme. Moreover, make sure retain a simple ‘debug' programme in order to exercise any hardware, such as a simple flashing LED. There are a series steps to help us how to program the device. We pick them up from the laboratory notes.[8]

1. Connect the PICkit2 Microcontroller Programmer to the PC by using the USB cable. Socket the 6-pin header on the bread board or frankly on to the hardware (for in-circuit programming).

2. Start MPLAB IDE from the shortcut icon on the desktop, or the Start menu. In addition, check the version number is MPLAB IDE v7.62 or above.

3. From the MPLAB IDE menu bar, select Project > Project Wizard…

4. It opens up the Project Wizard. Click Next to continue.

5. Wizard Step One: The laboratory project target device is the PIC 16F648A (Which we will give an example in the next section). In the wizard, select the ‘PIC 16F648A' from the drop-down box and click next.

6. Wizard Step Two: select the use of the ‘CSSC Compiler for PIC12/14/16/18' for the project language tool suite from the Active Tool suite drop-down box. We should browse so as to discover the location of the files on the hard disk. Then Click Next and continue.

7. Wizard Step Three: Name the project and select a directory. Then Click Next.

8. Wizard Step Four: There is possible that we want to add a file which has been written previously. The file tree view box on the left should already be prolonged to the project directory. Select the file which we want to add and click the ‘Add' >> button to add it to the project. Since the project directory is the same as the file directory, there is no need to check the box to copy it. Then Click Next when done.

9. Wizard Summary: Click the Finish button. A new page and project are created in the MPLAB IDE. The new page includes information on the selected PIC MCU device, the active programmer and/or debugger, open windows and their location, and other IDE configuration settings. The page is also related with a ‘project', which includes the files which are needed to build an application (source code, include files, linker scripts and so on.) along with associated language (compiler) tools and build options.

10. The project window displays the project files as a small window within the Integrated Development Environment (IDE).

11. The next stage is to add a source file to the project. Click Project ¥ Add New File To Project and enter a suitable file name in the dialogue box such as ‘LED Flasher.c'. A new window will be added to the IDE and we may observe that a file has been added to the Source Files directory on the project window. Now type in some proper C code - in this example an LED connected to portA [bit 0] will repeatedly flash. We could use some example code from the internet and modify several rows of it.

12. Save the file by clicking the disc icon or File | Save. Then compile the project either by clicking the compile icon, or Project | Compile, or by pressing F10. It might be that we have entered the source code without any errors, we should see an output reporting window come out and the header file is added to the list of files within the project window.

13. The microprocessor may now be programmed. Click Programmer | Select Programmer | PICkit2. This has now selected the programmer and we can programme our device by clicking Programmer | Program.

2.2 Proof of concept

In this section, the only one thing we need to do is proof. As we know, motor is the most important component throughout the project. We have already chosen stepper motor in this design. Therefore, we prefer give out some specific details to demonstrate the requirements.

We need two level description of Pseudo-Code to make the difficult language programme to simple. The description supposes that the system includes two inputs, one of which is labelled button ‘C' (for ‘clockwise'). The Pseudo-Code for level 1 is given below.

1. REPEAT indefinitely:

2. Wait until either button has been pressed

3. Determine which of the two buttons was pressed

4. IF button ‘C' was pressed THEN

5. Rotate the motor shaft 180°clockwise

6. OTHERWISE

7. Rotate the motor shaft 180°anti-clockwise

Having developed the top-level description it could be seen that there are many characteristics of the programme which are not considered enough. There is no mention that how to determine which of the buttons was pressed and how to rotate the motor. Moreover, there is no mention the angular velocity and anything else related to the implementation. Therefore, a Level 2 description should be given next which includes more detail.

There are still several lines which can be seen in the Level 2 Pseudo-Code. Moreover, two more loops have been added, to control the rotation of the motor (the step size of the motor chosen is 1.8°) The Pseudo-Code for Level 2 is given below:

1. REPEAT indefinitely:

2. Determine whether a button has been pressed

3. REPEAT 100 times:

4. determine which of the two buttons was pressed

5. IF button ‘C' was pressed THEN

Rotate the motor shaft clockwise

6. OTHERWISE

7. Rotate the motor shaft anti-clockwise

8. Insert time delay of one step period

Also, we should transfer these two Pseudo-Codes into flowchart. It is an obvious way to check each step throughout the project. The two levels flowcharts are given as follows:

Moreover, we will use hybrid stepper motors in the project. The one we choose is called RS 440-436 and the size is 17. The 4 phase hybrid stepper motors are competent of delivering much higher working torques and stepping rates than permanent magnet (7.5°and 15°) types. Whilst at the same time keeping a high detent torque even when not energised. This feature is the core technique for positional reliability. The RS stock number 440-436 with rear shaft is shown below:

The technical specification for RS stock no. 440-436 is given in the table below:

RS Stock number

440-436

Rated voltage (V)

12

Rated current ( I )

0.16

Resistance (Ω)

75

Inductance (mH)

36

Detent torque (mHm)

4

Holding torque (mNm)

70

Step angle accuracy (%)

5

Step angle

1.8

Insulation class

B

In the proof section, we divide it into three tasks—full stepping, half stepping, and interrupt-driven control of two motors. In addition, the full program code will be given in the appendix page.

· Full-Stepping

For the first stages of demonstration, a program is to be designed to turn the motor shaft clockwise or anti-clockwise under the control of an input pin. One input should be used to rotate the motor clockwise, and the other one to rotate it anti-clockwise. Each time an input is turned on, the motor should turn 180°. The motor should turn at a constant angular velocity of more or less 15rpm (revolutions per minute). The default drive mode should be two-phase-on full stepping (normal drive). Communication with the IO ports should be by the use of memory-mapped structures. In addition, the core stepper drive routine will be written as a subroutine which is in order to minimise code size and maximise the chic of the code. We have done a programme by using PIC 16F648A chip in the laboratory. Furthermore, we would like to use this program code to build our robot in the next semester. In addition, the diagrams for PIC 16F648A and full step mode are as follow:

Step No.

Q1

Q2

Q3

Q4

ON

OFF

OFF

ON

1

ON

OFF

ON

OFF

2

OFF

ON

ON

OFF

3

OFF

ON

OFF

ON

4

ON

OFF

OFF

ON

5

ON

OFF

ON

OFF

Table 3. Full step mode

· Half-Stepping

The program should be revised to use half step drive control. The angular velocity of the motor should be user-selectable, with four selectable speeds defined by the state of the remaining PORTA pins. The angular velocity of the fastest setting should be approximately 60 rpm, with that of the slowest setting being roughly 8 times slower. The advantage for half-stepping system is much more specific in controlling the angle. Moreover, the angular velocity of the fastest setting is 4 times than full-stepping. Also, the program code will be given in the appendices page.

Step No.

Q1

Q2

Q3

Q4

ON

OFF

ON

OFF

1

ON

OFF

OFF

OFF

2

ON

OFF

OFF

ON

3

OFF

OFF

OFF

ON

4

OFF

ON

OFF

ON

5

OFF

ON

OFF

OFF

6

OFF

ON

ON

OFF

7

OFF

OFF

ON

OFF

8

ON

OFF

ON

OFF

9

Table 4. Half step mode

· Interrupt-driven Control of Two Motors

The program should relapse back to full step drive control with two coils all the time being turn on as this provides the highest level of drive torque for driving the robot. The programme should be modified such that two stepper motors can be driven independently at different speeds. This will require the use of a hardware timer and an interrupt routine. The outputs of the second stepper motor may be displayed by using the LEDs.

Similarly, higher supply voltages and larger series limiting resistance may effect on the motor performance. The below shows the relationship between torque and speed:

From the proof section, we know to implement a program from stretch. Starting from pseudo-code to flowchart and finally programming the whole program. There are numerous mistakes throughout the whole process. One of the most notable is trying to program ‘struct' program. We set the addressing ‘struct' with the TRIS command and the whole processor cannot work. Another mistake we made is using a testing board with faultily dip switch and not realizing it. Thus it is very important to check the integration of board before testing.

Section 3 - Risk Management

Project risk management is a part of project management which is referred at our quality plan. It is a properly way to identify the risk and also minimise the influence on a project.

3.1 HAZOP Analysis

HAZOP is abbreviated form for Hazard and Operability Study which is a very effective method to find hazards in a system. Moreover, it is a diagnostic technique used to make out potential accidents throughout the project. The HAZOP technique was used to analyse chemical process system, but now has been extended to other types of system in some other fields such as for safety critical electronics and computer systems. A HAZOP is a qualitative technique which is based on guide-words. The HAZOP technique contains 4 basic steps:

· Identify design intent (feature of the design)

· Apply Guidewords to plan to find out design deviations

· Identify consequences of deviations with realistic causes

· Hazards are results with damage, injury or loss

The key of the attribute is to choose suitable parameters which apply to the design intention. These are general words such as angles, displacement, angular velocity and so on in this project. It can be seen throughout the project that variations in these parameters can make up deviations from the design intention. In order to identify Deviations, the Study Leader applies (systematically, in order) a set of Guide Words to each parameter for each section of the process [9]. The standard Guide Words are below:

Guide Word

Meaning

NO OR NOT

Complete negation of the design aim

MORE

Quantitative Increase

LESS

Quantitative Decrease

REVERSE

Opposite

EARLY

Relative to a clock time

LATE

Relative to a clock time

OTHER THAN

Complete Substitution

Table 3. Guide word and its meaning

The following table displays an overview of normally used guide word - parameter pairs and common descriptions of them.

Parameters

Guide Words

NO

MORE

LESS

REVERSE

OTHER THAN

Motor

No power

More power

Less power

Direction switch

Angular velocity

Completely stop

Faster

Slower

Clockwise or Anti-clockwise

Displacement

Center and forwards

Left departure

Right departure

backwards

Out of track

Moreover, HAZOP is commonly accomplished by a team of people, particularly in this project, with roles as follows:

Name

Alternative

Role

Team Leader

Chairman

Someone who has experience in HAZOP, to monitor the method followed successfully

Recorder

Scribe

To ensure the problems in the project are documented

Designer

Chief design engineer

To explain design details throughout the project

Technician

Mechanical doer

To deal with the mechanical construction work

User

Tester

To test the product if there is any problem. To ensure it can work successfully during the race

Administrator

Carer

To ensure there is no conflict during the project. Also monitor all the branches work successfully

3.2 FMECA Analysis

FMECA is abbreviated form for Failure Mode, Effects and Criticality Analysis. It is a methodology to solve the problem which includes:

· Identify failure modes in products and process

· Evaluate the risks of failure modes

· Make the risks in different class

· Reduce the risks possibility

Function

Failure

Failure Mode

Effect

To make robot turn from 0°to 90°within 0.5 second

Failure to turn appropriate angle.

Motor without power supply

Robot stopped. Check the connection from the robot to the power supply. 10 minutes.

Sensors do not work normally

Robot got a improper information to turn. Renew the sensors. 1-2 hours.

Wheels are not suitable to turn these angles

Out of track. Change a pair of appropriate wheels after measuring. 1-2 hours.

Programme is failure

Out of track. Renew the programme code. 2-3 hours.

Time without 0.5 second

Improper stepper motor

Out of track. Renew a stepper motor or the programme. 2-3 hours.

Section 4 - Conclusion

Consequently, from analysis of all varieties of components which we need throughout the project, we have built a very specific design plan. Due to this project plan, we could design our autonomous robot with an obvious guide. Moreover, we used two kinds of different risk analysis to monitor our project. Both of them can help us to reduce hazards and risks which may happen in the future.

5. Reference

1. a b Zunt, Dominik. "Who did actually invent the word "robot" and what does it mean?". The Karel Capek website. http://capek.misto.cz/english/robot.html. 02/11/2009

2. CCD VS CMOS, from Photonic Spectra 11/11/2009

3. http://info.bannersalesforce.com/xpedio/groups/public/documents/literature/pr_p1_t1_e.pdf.pdf

4. "8052-Basic Microcontrollers" by Jan Axelson 1994

5. http://motorola.com/semiconductors 20/11/2009

6. http://www.freescale.com/webapp/search.partparamdetail.framework?PART_NUMBER=MC33886DH&buyNow=false#PCN

7. EE2G1 notes, Lifycycles

8. EE2A laboratory components, department of Electronics, Electrical, and Computer Engineering, University of Birmingham

9. British Standard BS: IEC61882:2002 Hazard and operability studies (HAZOP studies)- Application Guide British Standards Institution. “This British Standard reproduces verbatim IEC 61882:2001 and implements it as the UK national standard.”

6. Appendices

Full-Stepping Code

#include<16F648A.h>

#use delay(clock=4000000)

#fuses NOWDT,INTRC_IO,NOPUT,NOPROTECT,NOLVP,NOMCLR

static int const LUTBL[4]={0x0A,0x09,0x05,0x06};

struct pinformat

{

int direction1:1;

int speed1:3;

int direction2:1;

int speed2:3;

int output1:4;

int output2:4;

};

struct pinformat ioport;

struct pinformat ioportdirection;

#byte ioport=0x05

#byte ioportdirection=0x85

void main()

{

int tableindex;

int repeat=100;

int stepdelay=20;

int i;

ioportdirection.direction1=0b1;

ioportdirection.direction2=0b1;

ioportdirection.output1=0b0000;

while(TRUE)

{

if((ioport.direction1==1)&&(ioport.direction2==0))

{

tableindex=0;

for (i=0;i<repeat;i++)

{

tableindex=(tableindex+1)%4;

ioport.output1=LUTBL[tableindex];

Delay_ms(stepdelay);

}

}

if((ioport.direction2==1)&&(ioport.direction1==0))

{

tableindex=200;

for (i=0;i<repeat;i++)

{

tableindex=(tableindex-1)%4;

ioport.output1=LUTBL[tableindex];

Delay_ms(stepdelay);

}

}

}

}

Half-Stepping Code

#include<16F648A.h>

#use delay(clock=4000000)

#fuses NOWDT,INTRC_IO,NOPUT,NOPROTECT,NOLVP,NOMCLR

static int const LUTBL[8]={0x0A,0x08,0x09,0x01,0x05,0x04,0x06,0x02};

struct pinformat

{

int direction1:1;

int speed1:2;

int unused1:1;

int direction2:1;

int speed2:2;

int unused2:1;

int output1:4;

int output2:4;

};

struct pinformat ioport;

struct pinformat ioportdirection;

#byte ioport=0x05

#byte ioportdirection=0x85

void main()

{

int stepdelay,increase,tableindex;

int repeat,i;

ioportdirection.direction1=0b1;

ioportdirection.direction2=0b1;

ioportdirection.speed1=0b11;

ioportdirection.speed2=0b11;

ioportdirection.output1=0b0000;

ioportdirection.output2=0b0000;

while(TRUE)

{

if((ioport.direction1==1)&&(ioport.direction2==0))

{

tableindex=0;

repeat=200;

if((ioport.speed1&0b00)==0b00)

{

stepdelay=2;

increase=0x01;

}

if((ioport.speed1&0b01)==0b01)

{

stepdelay=5;

increase=0x01;

}

if((ioport.speed1&0b10)==0b10)

{

stepdelay=10;

increase=0x01;

}

if((ioport.speed1&0b11)==0b11)

{

stepdelay=20;

increase=0x01;

}

}

if((ioport.direction2==1)&&(ioport.direction1==0))

{

tableindex=0;

repeat=200;

if((ioport.speed1&0b00)==0b00)

{

stepdelay=2;

increase=0xFF;

}

if((ioport.speed1&0b01)==0b01)

{

stepdelay=5;

increase=0xFF;

}

if((ioport.speed1&0b10)==0b10)

{

stepdelay=10;

increase=0xFF;

}

if((ioport.speed1&0b11)==0b11)

{

stepdelay=20;

increase=0xFF;

}

}

if((ioport.direction1==1)&&(ioport.direction2==1))

{

repeat=0;

}

if((ioport.direction1==0)&&(ioport.direction2==0))

{

repeat=0;

}

for (i=0;i<repeat;i++)

{

tableindex=(tableindex+increase)%8;

ioport.output1=LUTBL[tableindex];

Delay_ms(stepdelay);

}

}

}

Interrupt-driven Control of Two Motors Code

#include<16F648A.h>

#use delay(clock=4000000)

#fuses NOWDT,INTRC_IO,NOPUT,NOPROTECT,NOLVP,NOMCLR

static int const LUTBL[4]={0x0A,0x09,0x05,0x06};

static int tableindexi;

struct pinformat

{

int direction1:1;

int speed1:2;

int unused1:1;

int direction2:1;

int speed2:2;

int unused2:1;

int output1:4;

int output2:4;

};

struct pinformat ioport;

struct pinformat ioportdirection;

#byte ioport=0x05

#byte ioportdirection=0x85

#int_RTCC

void Timer0_isr()

{

int increasei;

if(ioport.direction2==1)

{

increasei=0x01;

}

if(ioport.direction2==0)

{

increasei=0xFF;

}

tableindexi=(tableindexi+increasei)%4;

ioport.output2=LUTBL[tableindexi];

}

void main()

{

int stepdelay,increase;

int repeat,i,tableindex;

ioportdirection.direction1=0b1;

ioportdirection.direction2=0b1;

ioportdirection.speed1=0b11;

ioportdirection.speed2=0b11;

ioportdirection.output1=0b0000;

ioportdirection.output2=0b0000;

while(TRUE)

{

tableindex=0;

if((ioport.speed2&0b00)==0b00)

{

SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_16);

}

if((ioport.speed2&0b01)==0b01)

{

SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_32);

}

if((ioport.speed2&0b10)==0b10)

{

SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_64);

}

if((ioport.speed2&0b11)==0b11)

{

SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_128);

}

enable_interrupts(INT_RTCC);

enable_interrupts(GLOBAL);

if(ioport.direction1==1)

{

repeat=4;

if((ioport.speed1&0b00)==0b00)

{

stepdelay=4;

increase=0x01;

}

if((ioport.speed1&0b01)==0b01)

{

stepdelay=8;

increase=0x01;

}

if((ioport.speed1&0b10)==0b10)

{

stepdelay=16;

increase=0x01;

}

if((ioport.speed1&0b11)==0b11)

{

stepdelay=32;

increase=0x01;

}

}

if(ioport.direction1==0)

{

repeat=4;

if((ioport.speed1&0b00)==0b00)

{

stepdelay=4;

increase=0xFF;

}

if((ioport.speed1&0b01)==0b01)

{

stepdelay=8;

increase=0xFF;

}

if((ioport.speed1&0b10)==0b10)

{

stepdelay=16;

increase=0xFF;

}

if((ioport.speed1&0b11)==0b11)

{

stepdelay=32;

increase=0xFF;

}

}

for (i=0;i<repeat;i++)

{

tableindex=(tableindex+increase)%4;

ioport.output1=LUTBL[tableindex];

Delay_ms(stepdelay);

}

}

}