Top Banner
HEAD MOVEMENT DETECTION SYSTEM USING RABBIT MICROPROCESSOR Jigar Sheth B.E., Gujarat University, India, 2008 PROJECT Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in ELECTRICAL AND ELECTRONIC ENGINEERING at CALIFORNIA STATE UNIVERSITY, SACRAMENTO SUMMER 2011
60

HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

Apr 08, 2023

Download

Documents

Khang Minh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

HEAD MOVEMENT DETECTION SYSTEM USING RABBIT MICROPROCESSOR

Jigar Sheth B.E., Gujarat University, India, 2008

PROJECT

Submitted in partial satisfaction of the requirements for the degree of

MASTER OF SCIENCE

in

ELECTRICAL AND ELECTRONIC ENGINEERING

at

CALIFORNIA STATE UNIVERSITY, SACRAMENTO

SUMMER 2011

Page 2: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

ii

HEAD MOVEMENT DETECTION SYSTEM USING RABBIT MICROPROCESSOR

A Project

by

Jigar Sheth

Approved by: __________________________________, Committee Chair Jing Pang, Ph.D. __________________________________, Second Reader Preetham Kumar, Ph.D. ____________________________ Date

Page 3: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

iii

Student:

Jigar Sheth

I certify that this student has met the requirements for format contained in the University

format manual, and that this project is suitable for shelving in the Library and credit is to

be awarded for the Project.

__________________________, Graduate Coordinator ________________ Preetham Kumar, Ph.D. Date Department of Electrical and Electronic Engineering

Page 4: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

iv

Abstract

of

HEAD MOVEMENT DETECTION SYSTEM USING RABBIT MICROPROCESSOR

by

Jigar Sheth

This project presents head monitoring movement system. It has potential

application for monitoring patients head after surgery and operations. Sometimes it is

very important to monitor patient’s head position after surgery not to have movement of

more than certain angle. Head movement detection system helps by placing very small

accelerometer on head which serves as a motion detector and storing the head movement

angles generated continuously to web database. This helps to retrieve old values at any

time.

The system in this project uses wearable tilt accelerometer. The accelerometer

provides tilt movement. Tilt angle calculation, communication interface, and processing

are done by microprocessor. Rabbit microprocessor is a very powerful embedded tool

which is used as an interface between accelerometer and the developed database.

Communication between Rabbit microprocessor and database is done by using Ethernet.

The developed computer software automatically plots graph that helps analyze the

changes in head position.

Page 5: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

v

This monitoring system is helpful in many ways .It measures the current position

of head and outputs movement compared to original position. The head position system is

useful in multiple applications including study of correlation between external and

internal markers during Image-Guided Radiation Therapy (IGRT) [11] and for navigation

in virtual environments.

_______________________, Committee Chair Jing Pang, Ph.D. _______________________ Date

Page 6: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

vi

ACKNOWLEDGMENTS

Before I start discussing my project report, I would like to thank all people who

have helped me complete this project successfully. I owe my deepest gratitude to Dr. Jing

pang for providing me such a wonderful opportunity to work on this project. I would not

have completed this project without her direction, assistance, and guidance. I would also

like to extend my gratitude to Dr. Kumar for reviewing my project.

Special thanks should also be given to Mr. Ikraj Singh, who has worked with me

on this project. His experience and knowledge has played a vital role in this project.

Last but not least, I am very thankful to all my family members and friends for

providing strength and immense support. My special thanks to Mr. Ankit Sheth for

guiding me in every possible way to complete my graduation successfully.

Page 7: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

vii

TABLE OF CONTENTS

Pages

Acknowledgments.............................................................................................................. vi

List of Figures .................................................................................................................... ix

List of Tables ...................................................................................................................... x

Chapter

1. INTRODUCTION .......................................................................................................... 1

1.1 Overview .............................................................................................................. 1

1.2 Goals of the Project .............................................................................................. 3

1.3 Organization of Report ............................................................................................. 4

2. COMMUNICATION WITH WEARABLE ACCELEROMETER ............................... 5

2.1 Types of Serial Interface ........................................................................................... 7

2.2 Synchronous Interface .............................................................................................. 7

2.2.1 SPI ...................................................................................................................... 7

2.2.2 Inter Integrated Circuit (I2C) ............................................................................ 10

2.3 433 MHz ISM Band ................................................................................................ 11

2.4 CRC16 Error Checking ........................................................................................... 13

3. DIGITAL ACCELEROMETER ADXL345................................................................. 15

3.1 Introduction ............................................................................................................. 15

3.2.1 Digital Accelerometer ...................................................................................... 16

3.2.2 Tri axial MEMS Accelerometer ....................................................................... 17

Page 8: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

viii

3.2.3 Resolution and Sensitivity ................................................................................... 17

3.2.4 Acceleration Sensor Unit ..................................................................................... 18

3.2.5 FIFO Buffer ..................................................................................................... 19

3.2.6 Serial Communication with External Master Device ...................................... 21

4. DESIGN HARDWARE SYSTEM ............................................................................... 27

4.1 Rabbit 3000 ............................................................................................................. 28

4.2 System Architecture ................................................................................................ 30

4.3 Sampling Frequency of Measurement .................................................................... 34

4.4 Power Consumption Consideration ........................................................................ 35

4.5 Design Consideration .............................................................................................. 36

4.5.1 Calibration........................................................................................................ 36

4.5.2 Filtering ............................................................................................................ 37

4.6 Design Flow Chart .................................................................................................. 38

4.6.1 Initialization ..................................................................................................... 38

4.6.2 Reading and Storing Values in Rabbit 3000 .................................................... 41

4.7 Simulation and Results ........................................................................................... 43

5. CONCLUSION AND FUTURE EXPANSION ........................................................... 48

5.1 Conclusion .............................................................................................................. 48

5.2 Future Expansion .................................................................................................... 49

Reference……………………………………………………………………………….. 50

Page 9: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

ix

LIST OF FIGURES

1. Figure 2.1: Organization of Frame……………………………………………….. 6

2. Figure 2.2: Master and Slave Hardware Connection for SPI.................................. 8

3. Figure 2.3: Hardware Connection between Master and Slave for I2C………...... 11

4. Figure 3.1: Internal Hardware Architecture of Digital Accelerometer..………... 17

5. Figure 3.2: Angle showing Independent Deflection……………………………. 24

6. Figure 4.1: Rabbit 3000 Microprocessor……………………………………….. 28

7. Figure 4.2: RCM3365 Image………………………………………………........ 29

8. Figure 4.3: Hardware Connection Between ADXL345 and Rabbit 3000……… 30

9. Figure 4.4: Rabbit 3000 Placement onto RCM3365 Development Board...…… 32

10. Figure 4.5: RCM3365 Development Kit……………………………………….. 32

11. Figure 4.6: Head Movement Detection System…...………………………......... 33

12. Figure 4.7: Design Flow Chart…………………………………………………...39

13. Figure 4.8: Head Position – Straight……………………………………………. 43

14. Figure 4.9: Head Position – Risky Head Position…………………………......... 44

15. Figure 4.10: Graphical Display of Values Stored in Database– Deflection in X Direction...……………………………………………………………………… 46

Page 10: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

x

LIST OF TABLES

1. Table 2.1: CRC-16 Error Checking Accuracy…………………………………. 14

2. Table 3.1: Conversion from LSB to Degree and Different Possible Combinations of Sensor Positions ………………………………………………………………26

3. Table 4.1: Web Database Storing Values into Excel Files.…………………….. 45

Page 11: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

1

Chapter 1

INTRODUCTION

In the era of technological revolutions, more advanced and developed techniques

are required for sensing applications. The sensing techniques are used a lot in many

applications. For example, in medical applications, accelerometer can be used in

equipments to detect the position of some part of body. It is integral part of design in

gaming and mobile device as a motion detector. And, it is also useful in navigation

devices and hard drive protection. In accordance with microprocessors, accelerometer is

used to detect movement of a particular object which can be helpful in many applications.

With ever growing popularity and use of internet in day-to-day life, web based

storage systems are also used extensively to store the data. The continuously stored

position of body parts on the web database can be easily accessed for further processing

which is useful for many applications.

1.1 Overview

This project presents head movement detection system which has potential to be

used for medical applications. For example, after special medical operation called

Vetrictomy, it is very important to detect movement of head. This measured movement is

important as blood circulation may get affected if more than certain angle of movement is

detected. It will also increase recovery period, if care is not taken. So, accurate and

precise angle measurement of patient’s head movement is very important.

As explained in the report, the head movement monitoring can be successfully

done by using digital MEMS accelerometer and microprocessor. Digital accelerometer

Page 12: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

2

was chosen as it internally converts analog value into digital format and outputs digital

value to microprocessor. The microprocessor usually inputs and outputs digital data. The

accelerometer helps measure tilt sensing. It can measure both static and dynamic

accelerations. The measurement using two axes is not good enough as device needs to be

put in horizontal direction to work. So, tri axial accelerometer which can detect

movement of 360 degrees in all three directions was chosen. For head movement, only

static acceleration is required. The influence of dynamic acceleration is usually of short

period and it can be reduced by adding low pass filters. After careful consideration of

parameters such as data transfer speed, sensitivity, resolution, and noise margin

ADXL345 accelerometer was selected.

The accelerometer data output are further processed by microprocessor through

which they are being stored on the web database. Web interface is very important

parameter for selecting microprocessor. As internet is very convenient way of

communication, it would be very effective to use microprocessor which has Ethernet

capability. RCM3365 is a board with Rabbit 3000 microprocessor which has RJ 45

Ethernet port. Using this port, the data accessed from the accelerometer can be

transferred to the database through web. This improves performance because it removes

need of any other extra web or wireless device for internet access. This microprocessor

development board is ideal for network-enabling security and access systems. As Rabbit

3000 supports both serial and parallel data transfer, it gives flexibility in choosing an

accelerometer in terms of communication. Another reason for using this microprocessor

Page 13: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

3

is the large number of I/O ports. This has advantage of adding any other device and/or

application to the current fixture for future development.

It is very hard to detect the difference between postoperative disturbances caused

by clinical factors and those caused by head movement. By using accelerometer to

monitor the head movement, the above problem can be solved. Providing real time angle

can be very useful because it can give instant alarm indication if head movement is

incorrect. Computer software can be used to perform both diagnostics and analysis. The

results can be made more accurately by using low pass filter.

1.2 Goals of the Project

This project discusses the application of Rabbit Microprocessor and

accelerometer in medical and surgical world to improve security by designing a

monitoring system using web interface. It gives position of head with high resolution

which helps in analyzing the outcome of particular surgery and reduces chances of post

surgery anti effect. Rabbit Microprocessor is one of the widely used microprocessor in

embedded design. This application extends its use and effectiveness in remote monitoring

of head movement.

Dynamic C which is extension of C is used for Rabbit design. It is more flexible

and has added functionality over C. ADXL345 accelerometer is connected to Rabbit

microprocessor which generates values based on the accelerated force on sensors in each

direction. Microsoft Visual C# creates webpage and web database which stores the value

transferred from Rabbit Web. The design method to implement the functionality will be

explained in detail in coming chapters.

Page 14: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

4

1.3 Organization of Report

Chapter 2 explains serial communication and different types of available

interface. It also talks about the reason to choose serial interface for this project.

Chapter 3 consists of detailed information about accelerometer. It explains

selection of ADXL345 accelerometer. It also describes features and operations of

accelerometer.

Chapter 4 contains detailed explanation of system design. The design algorithm is

given using flow chart which improves readability. It also describes how to set up the

system for use. Moreover, both simulation results and waveforms are provided in this

chapter.

Chapter 5 concludes the report by discussing future plans to improve the result of

the project.

Page 15: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

5

Chapter 2

COMMUNICATION WITH WEARABLE ACCELEROMETER

This chapter provides detailed description of communication interface for

accelerometer. It explains the types of serial communication and different methods such

as SPI and I2C to perform synchronous serial transmission. Moreover, it provides

overview of RF wireless transmission and error detecting protocols.

Serial communication can be defined as serially transmitting electronic data from

one device to another device. In digital electronics, the digitally encoded command

and/or data can be communicated to another device either through serial communication,

where data is transferred bit by bit, or through parallel communication, where data is

transferred by single byte or multiple bytes at a time. Serial communication requires a

single wire and is often used either to control or to transfer data from/to embedded

microprocessor.

Serial communication is a popular means of transmitting data between a computer

and a peripheral device such as a programmable instrument or even another computer.

The accelerometer uses serial interface as a communication protocol to transfer data

between accelerometer and microprocessor. It uses a transmitter to send data, one bit at a

time, over a single communication line to a receiver. It is used for data transfer over long

distance at lower rates. Serial communication is popular because most computers have

one or more serial ports, so no extra hardware is needed other than a cable to connect the

instrument to the computer or two computers together.

Page 16: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

6

There are several possible ways to transfer data between two peripheral devices.

But, the basic parameters of serial communication are as following:

• Baud Rate

• Number of data bits for encoding character

• Number of stop bits

• Presence or absence of parity bit

Each character is packed in a frame which consists of start bit, stop bit, data bit, and

optional parity bit.

Figure 2.1: Organization of Frame

As shown in figure 2.1, start bit and stop bit are used to synchronize serial

receivers. Data byte is always transmitted Least Significant Bit (LSB) first followed by

optional parity bit for error checking. This completes 1 character frame or packet of serial

communication. The receiver differentiates frame based on the start bit and the stop bit.

The rate of transmission is fixed by setting the baud rate. Baud rate is defined as symbols

per second.

Page 17: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

7

2.1 Types of Serial Interface

Both synchronous and asynchronous interfaces are possible with serial

transmission. On an asynchronous bus, data is sent without the timing clock. However on

synchronous bus, data is sent with the clock. Asynchronous communication embeds the

clock information into the data stream. For devices to communicate with each other, they

need to agree on the same transmission speed and the same protocol including number of

data bits, stop bits, parity, and so on while constantly synchronizing with the clock

embedded into the data stream.

2.2 Synchronous Interface

Unlike asynchronous interface, the synchronous interface uses a separate clock

signal that provides a separate timing signal. The transmission protocol sends separate

clock signal along with the data signal from master to slave. Master is a device which

generates clock signal. The slave device shifts in or out of data using master’s clock.

2.2.1 SPI

Serial Peripheral Interface (SPI) is a communication protocol which was

developed particularly for communication among Integrated Circuits (IC) on the same

printed circuit board. Motorola designed SPI to allow microprocessors to communicate

with peripheral devices. The implementation is very simple. Shift registers are used to

shift the data out and in [11]. SPI is widely used for accessing data from EEPROM,

ADC, DAC, Flash, FPGA, ASIC, and many other manufacturers of IC.

Page 18: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

8

SPI is a 4-wire interface where 3 wires are used for data transfer and 1 wire is

used for specifying a slave device connected to the master. The three wires used for data

transfer are SCLK (Serial Clock), MOSI (Master Data Out, Slave In), and MISO (Master

Data In Slave Out). Serial Clock generates master clock which synchronizes data to or

from the master. Slave Select (SS) is another control signal that selects each slave to be

controlled by master. MOSI is the data signal which transmits the data out from slave to

master. Due to multiple slave and single master configuration, only one slave is allowed

to transfer data at particular time. MISO is the data signal that transmits data from master

to slave. It transmits data from master’s output to slave’s input. The following figure

shows the hardware connection for SPI. Since SPI operates on higher clock frequency, it

does not require any pull up resisters on the data lines.

MASTER SLAVE

SCLK

SS

MOSI

MISO

Figure 2.2: Master and Slave Hardware Connection for SPI

SPI does not have an acknowledgement protocol to confirm reception or

transmission of data. SPI has full duplex communication capability and data rates ranging

from low to very high, up to a few megabits per second. SPI standard does not have its

own maximum data rate. The data rate depends on the clock speed and varies in

proportion to the clock changes. However, data rates vary with the peripherals and

Page 19: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

9

microcontrollers as sometimes the slave cannot operate on the same speed with master

and it slows down the transfer.

Along with those four signals, SPI also has another two parameters called Clock

Phase (CPHA) and Clock Polarity (CPOL). These parameters decide when the active

clock edge occurs [11]. They are very important for ensuring successful communication

between master and slave. CPOL determines whether SCLK idles high (CPOL = 1) or

low (CPOL = 0) when it is not switching. CPHA determines on which SCLK edge data is

shifted in and out. With CPOL = 0, setting CPHA to 0 shifts data into the slave on the

SCLK rising edge. The two CPOL and CPHA states allow four different combinations of

clock polarity and phase; each setting is incompatible with the other three. Both the

master and the slave must be set to the same CPOL and CPHA states to communicate

with each other [8].

SPI also has a 3-wire interface in addition to the 4-wire interface described above.

One way of implementing this is by combining MOSI and MISO into 1 data pin called

SISO(Slave In/Slave Out).

SPI supports two different configurations. One is one master and multiple

independent slaves. Another option is daisy chain configuration where rather than having

individual slave select signal for each slave, common SCLK and SS are used to connect

all slave devices. All slave device data signals are connected in serial. For example, the

first slave output is connected to the second slave input. During the second group of clock

pulses, the SPI port of each slave sends out the same copy of what it received during the

first group of clock pulses

Page 20: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

10

SPI interface is better suited for applications where communication between two

devices is in form of full duplex data stream. With advantage of speed, it is more

applicable in Codec (Encoder – Decoder), analog to digital converters, and digital signal

processor. Though SPI can be used with multiple slaves, it is more preferable for point to

point communication as the pin counts increases with increase in slaves.

2.2.2 Inter Integrated Circuit (I2C)

Inter Integrated Circuit (I2C) is a simple 2 wire interface invented by Philips. It

was developed to connect small number of devices on a single card. Standard mode I2C

bus speed is 100 kbit/s. And low-speed mode supports 10kbit/s with arbitrarily low clock

frequencies. Recent revisions of I²C allows Fast mode with 400 kbit/s, fast mode plus or

Fm+ with1 Mbit/s, and high speed mode with 3.4 Mbit/s. Unlike SPI, I2C works in half

duplex mode with bi-directional interface for complete transmission and reception of data

between master and slave.

I2C has only 1 data signal and 1 clock signal for communication. The clock

(SCLK) is always generated by master, but the data (SDA) can be transferred in either

direction. The direction is chosen by microcontroller. In this protocol, microcontroller

selects whether it will operate as a master or as a slave. This can be changed at any time,

but only microcontroller can do any modifications.

Page 21: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

11

Figure 2.3: Hardware Connection between Master and Slave for I2C

As shown in figure 2.3, master is connected to multiple slaves sharing common

clock bus and data bus. Each device connected to the bus is differentiated by unique

address. The number of slaves is limited by the capacitance of the line and maximum

allowable capacitance in I2C standard is 400 pF. I2C operates on the 7-bit protocol.

Hence, without extending the maximum capacitance value, up to 127 devices can be

attached to 1 master. I2C requires pull up resistors to be connected on both clock and

data lines as they operate on low frequency.

2.3 433 MHz ISM Band

This project describes wire transmission between microprocessor and computer.

Wireless communication is another efficient way of transmitting data. It permits services

such as long range communication and high speed data transfer which is impossible with

the use of wires. Wireless operations can be done in a variety of forms such as radio

Page 22: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

12

frequency, laser light, and Bluetooth. Cordless phones, wireless computer networks, and

microwave ovens are some examples of applications of radio frequency communication.

Radio frequency ranges from 3 KHz to 300 GHz. It corresponds to frequency of

radio waves. This spectrum is divided into several ranges which can be used for different

applications. ISM (Industrial, Scientific and Medical Band) is part of the radio frequency

spectrum that can be used by anybody without license. Unlicensed RF products operating

in the range between 300 MHz and 2.5 GHz in United States and European nations are

called ISM-band products. It is allocated for industrial, medical and scientific purposes

other than communication. ISM is an unlicensed Sub-GHz radio frequency band which is

useful for many short range, low data-rate, and low-power wireless applications [12]. It is

ideal for use in home, business, automation, and medical applications. It is a license-free

operating range which still follows regulation and procedures defined by ITU-R

(International Telecommunication Union- Radio Regulations) but it does not need an

individual license from ITU. Individual country’s use of the bands differs due to variation

in national radio regulations.

With development of integrated circuits, ISM band single chips ICs’ for radio

frequency have been used in many applications. For example, ATA5428, which has high

receive sensitivity, low power consumption, phase locked loop oscillator, and radio

frequency control signals, can be used as a transmitter and receiver in head movement

detection system. It can work on 431.5 MHz ~ 436.5 MHz with center frequency of 433

MHz. This is exactly what is required for ISM. Hence, 433 MHz ISM-Band is a very

convenient way of performing wireless communication.

Page 23: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

13

2.4 CRC16 Error Checking

Communication is always prone to error. It is not possible to have 100% accurate

transmission and reception of data. Due to external and internal parameters such as noise,

interference between two communication channels, distance between transmitter and

receiver, and electrical disturbance, the receiver may not receive same transmitted data

every time. For example, if two devices are separated by long distance, noise or weaker

signal strength may change value of some of the bits of the frame. In this case, a receiver

cannot decode data correctly. CRC (Cyclic redundancy Check) is a multi byte error

checking protocol.

In CRC, the transmitted data is treated as a binary number which is modulo-2

divided by another binary number called polynomial. The reminder of the division is

appended to the transmitted packet. When this packet is received by the receiver, it is

modulo-2 divided by the same number. If reminder generated is 0x00, the received data is

deemed to be correct. However, if the resulting CRC is not equal to zero, error is detected

and all data are discarded.

CRC16 appends 2 bytes (16-bits) of information to the original packet.

CRC-16 16 bit CCITT polynomial is as following:

χ16 + χ15 +χ2 +χ1............... (2.1)

The following chart shows CRC -16 error checking accuracy.

Page 24: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

14

Single Bit & Double Bit Errors 100 percent

Odd-Numbered Errors 100 percent

Burst Errors Shorter than 16 bits 100 percent

Burst Errors of Exactly 17 bits 99.9969 percent

All Other Burst Errors 99.9984 percent

Table 2.1: CRC-16 Error Checking Accuracy [3]

As shown in table 2.1, CRC-16’s accuracy is very high. CRC-16 rejects whole

packet when an error is detected. CRC-16 is implemented in both hardware and software.

The hardware calculation is performed with shift registers and XOR gates. Every bit of

data is shifted into flip flop after being XORed with the most significant bit of CRC.

Software implementation of CRC is performed by either Loop Driven or Table

driven CRC implementation. Loop Driven CRC is similar to hardware method. Table

driven CRC uses different approach compared with Loop Driven method. Instead of

calculating value run time, it uses pre computed bytes. These bytes are XORed with the

data.

CRC-16 is mostly used for transfer over wireless communication or local area

internet where large data are transmitted.

Page 25: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

15

Chapter 3

DIGITAL ACCELEROMETER ADXL345

This chapter describes features and working operation of ADXL345

accelerometer which is used for the head movement system. It also covers calculation of

tilt angle from integer value generated by accelerometer.

3.1 Introduction

Accelerometer was invented in the bustling period of innovation in the last

century. As the name suggests, it simply measures acceleration.

This invention was commercialized and marketed in mid 1930s to make it very

popular. It was that time when scientists and engineers started thinking more about the

development and use of accelerometers. And even today also, they are used everywhere.

In engineering world, they are used in automobile industry, mobile applications, gaming,

hard drive protection, personal computers, and various other fields. They are extremely

useful in vehicle design and in linear position sensor construction [6]. They play vital

roles in internal mechanism of breaking, and acceleration of vehicle. Nowadays, they

have also expanded their uses in medical industry and in biology where they are used to

detect and understand muscular movement. By measuring static acceleration due to

gravity, tilt angle respective to the earth can be detected. Dynamic acceleration is useful

to analyze the way the device is moving. As medical technologies are also growing, the

use of accelerometer has risen rapidly in those areas as well. In the computing world,

some companies have even started using accelerometer for hard drive protection where

accelerometer detects sudden free fall of the device.

Page 26: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

16

There are numerous accelerometers available in the market which, can be

implemented in a system that detects velocity, position, shock, vibration, or the

acceleration of gravity to determine orientation. The accelerometer is selected based on

the number of factors such as type of output data, resolution, sensitivity, range, data rate,

baud rate, etc. After considering all these parameters, ADXL345 was selected for this

project.

3.2 Features of ADXL345

3.2.1 Digital Accelerometer

When the output from the accelerometer is in the binary format, it is called digital

accelerometer. These accelerometers convert the displacement, detected by the capacitors

connected to the sensor of each direction, to digital format by using internally ADC

converter. Digital accelerometers usually use Pulse Width Modulation (PWM) for their

output. It means that the output will be a square wave of certain frequency, and the

amount of time the voltage is high is proportional to the amount of acceleration. It also

involves timing analysis and calculation to get the acceleration from the waveform.

Following figure explains basic functionality of digital accelerometer. As

explained earlier, sensors use capacitors converting the displacement offset to the voltage

format. Analog to Digital Converter converts the voltage into binary format where digital

filter is used to reduce the effect of noise. This output is then transferred to the output

pins of the accelerometer where it can be interfaced to different hardware.

Page 27: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

17

Digital

Output

Figure 3.1: Internal Hardware Architecture of Digital Accelerometer

3.2.2 Tri axial MEMS Accelerometer

ADXL345 is a tri axial accelerometer which means that it has sensors to detect

acceleration in X, Y, and Z direction.. This quality makes it very useful as it does not

have to be at any particular position to detect motion as in any bi axial accelerometer.

Using tri axial accelerometer, 360 degree circular movement is detected in all three

directions.

Earlier, accelerometers used to be very big in size, but after development of Micro

Electromechanical Systems (MEMS) the size has reduced considerably. Due to reduced

size of MEMS, accelerometer has increased its applications in many different areas such

as mobile application, pocket drive, weapon etc. They are also used in wireless game

controllers or mice. MEMS has also increased accuracy of the output data which helps

use accelerometer in real time applications such as monitoring satellite and aero space

weapons.

3.2.3 Resolution and Sensitivity

ADXL345 is a tri axial accelerometer which means that it has sensors to detect

acceleration in X, Y, and Z direction. This quality makes it very useful as it does not have

SENSOR

ADC

Digital

Filter

Serial I/O

Page 28: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

18

to be at any particular position to detect motion as in any bi axial accelerometer. Using tri

axial accelerometer, 360 degree circular movement is detected in all three directions.

Earlier, accelerometers used to be very big in size, but after development of Micro

Electromechanical Systems (MEMS) the size has reduced considerably. Due to reduced

size of MEMS, accelerometer has increased its applications in many different areas such

as mobile application, pocket drive, weapon etc. They are also used in wireless game

controllers or mice. MEMS has also increased accuracy of the output data which helps

use accelerometer in real time applications such as monitoring satellite and aero space

weapons.

3.2.4 Acceleration Sensor Unit

‘g’ is unit of acceleration equal to earth’s gravity at sea level (9.81 m/s2). Earth’s

gravity is at 1g level while space shuttle is at 10g level. Following are some of the sensor

terminology:

+ 1g: Output of the sensor with base connector pointed up

0g: Output of the sensor with base connector horizontal

- 1g: Output of the sensor with base connector pointed down

MEMS accelerometers are available in ‘g’ ranges reaching up to thousands. It is a

tradeoff between sensitivity and maximum acceleration that can be measured. ADXL345

can range up to +/- 16g. So, it is most sensitive to tilt in the 0g mode. A 1 degree of tilt in

the 0g position creates an output error equivalent to a 10 degree tilt in the +1g or -1g

position.

Page 29: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

19

3.2.5 FIFO Buffer

To extend functionality of accelerometer, FIFO (First in First Out) mode is added

into the accelerometer. It is useful to provide further power savings, and increase system

performance with reducing need for host processor. This FIFO buffer of ADXL345 can

store 32 data samples. The stored data in buffer can be read from the data register.

One thing which needs to be taken care of is the rate at which the data is stored in

the buffer and the data is read from the FIFO. If user stores the data at higher speed

compared to the read speed, then it is possible to lose old data.

FIFO has four modes: Bypass, FIFO, Stream and Trigger. Each mode is selected

by the settings of the FIFO_MODE bits (Bits [D7:D6]) in the FIFO_CTL register

(Address 0x38) [5].

(1). Bypass Mode

As name explains, FIFO is not operational, and so that FIFO remains empty. It

works like regular accelerometer as FIFO does not store any value.

(2). Stream Mode

In this mode, data from all three axes are stored in FIFO. When the number of

samples in the FIFO buffer equals to the number specified in the register, watermark

interrupt is set and FIFO keeps storing the data. FIFO stores the latest 32 data and

discards the old data as new data arrive. The watermark interrupt continues occurring

until the number of samples in FIFO is less than the value stored in the sample bits of the

FIFO_CTL register.

Page 30: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

20

(3). FIFO Mode

FIFO is activated and data are stored in the FIFO memory. When the number of

samples in the FIFO buffer equals to the number specified in the register, watermark

interrupt is set and FIFO stops collecting new data once it is filled with all 32 locations.

The watermark interrupt continues occurring until the number of samples in FIFO is less

than the value stored in the sample bits of the FIFO_CTL register.

(4). Trigger Mode

FIFO collects samples and stores the latest 32 samples while discarding others.

After a trigger event occurs and interrupt is sent to the INT1 or INT2 pin (determined by

the trigger bit in the FIFO_CTL register), FIFO keeps the last n samples (where n is the

value specified by the sample bits in the FIFO_CTL register) and then operates in FIFO

mode, collecting new samples only when FIFO is not full [5].

FIFO can store 32 values. In this project, the I2C sampling frequency is 400 KHz

and the output data rate is 400 Hz. If the rate for data to be stored into database is less

than 400 Hz, the old data will be lost. Rabbit microprocessor which controls all the

operation of transferring data, needs to sample old data from FIFO buffer to its own

database for permanent storage. In this project, FIFO is not used. Instead, the HTTP

interface of RCM3365 helps transfer 50 values to the web interface of Rabbit web at one

time. The web database which is generated using Visual Studio and C# can only sample

data at 10 Hz which is very low compared to 400 Hz. Due to this frequency mismatch,

not all data values stored into FIFO can be retrieved. So, the use of FIFO will not

improve the performance for the current application.

Page 31: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

21

3.2.6 Serial Communication with External Master Device

ADXL 345 can interface with outside world using serial communication. Both I2C

and SPI serial protocols are supported. In both cases, ADXL 345 operates as a slave [4].

I2C mode is selected when CS pin is connected to the power supply.

By setting Bit 6 of the DATA_FORMAT register, 3 – wire or 4 – wire SPI mode

is selected. The maximum clock speed of 5 MHz is possible with SPI. I2C interface can

work only up to 400 KHz of data rate. And the device cannot give output data rate of

more than 400 Hz. This limitation can be overcome by using SPI interface and then the

output data rate of 1600 Hz or 3200 Hz is possible with SPI. Operation at an output data

rate of more than 400 Hz in I2C may result in undesirable effect on acceleration data,

including missing samples and additional noise [4]. This higher data rate in SPI comes at

a cost of complexity. I2C is very simple due to only 2 wire interface and it can also be

connected to more than one slave.

As the final data will be displayed on the web, head movement does not require

higher speed. Because even if the sample is transferred at higher data rate using SPI, it

cannot be stored in the web database at more than certain speed as the web transfer is not

as fast as serial communication. Previous calculations revealed that the web data transfer

speed is much slower than I2C. So, I2C serial interface scheme is used for the movement

detection application.

Page 32: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

22

3.3 Theory of Operation – ADXL345 Accelerometer

Accelerometer works on the fundamental of force exerted by the movement on

each sensor. The values are in the analog format. It measures both static acceleration in

tilt detection application and dynamic acceleration caused by motion or shock [4]. As it

can measure deflection in both manners, it gives reasonably accurate data whenever there

is a movement detected.

ADXL 345 has internal sensors for each X, Y, and Z direction. The sensors are

made up of poly silicon structure which is mounted on top of silicon wafer. Deflection

can be detected using the different differential fixed plate capacitors connected to the

moving mass. In proportion to the movement, the mass disturbs the fixed plate capacitors

and unbalances them. The output voltage is generated on the proportion of the mass

deflection.

Also, ADXL 345 allows the ‘g’ range to be set from +/- 2g to +/- 16g, where ‘g’

is gravitational force. +/ - 2g cannot detect movement as far as +/- 16g can do. It is very

useful as for some application only small range of g is required while other may need

increased range with more force. But, the sensitivity is reduced while increasing ‘g’ range

from 2g to 16g. For example, ADXL345 has higher sensitivity of 256 LSB/g at 10-bit

resolution but the sensitivity reduces to 32 LSB/g with +/- 16g of range and 13-bit

resolution.

Page 33: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

23

3.4 Tilt Angle Calculation

The advantage of using tri axial accelerometer is that it has 3 sensors in each X,Y,

and Z direction. It becomes very useful to accurately find the angle of a particular

position. By using three sensors, it is also possible to measure the values at high

sensitivity. When third axis is introduced into accelerometer, the orientation of the sensor

can be determined in a complete sphere. The output of accelerometer is in LSB/g unit

which is movement based on the acceleration in gravity. It is hard to understand

movement in this format. So, it needs to be converted into degree to measure the exact

position of head. The angle can be calculated using two methods: “atan” and “arctan”.

First step in “atan” method is to normalize the acceleration vector which can be

used as a denominator to calculate any angle. By assuming that motion is only due to

gravity, denominator can be replaced with constant for all angles. Now, angles with

respect to X and Z axis can be calculated by using following equations.

Ѳ )(tan 1

YX−= ……………. (3.1)

Ф )(cos 2221 ZYXZ ++= − …………… (3.2)

This method does not give very accurate result and calibration becomes necessary

to improve result.

For this project “arctan” method is used. The values of the angles are determined

individually for each axis of the accelerometer from a reference position. The reference

position is set in the accelerometer such that, the values of X and Y axis are in the 0g

field and the values of Z axis are in 1g region. It means that the X and Y axis are in the

Page 34: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

24

plane of the horizon while Z axis is orthogonal to the horizon. If the horizon is considered

as a reference, then positive value after inversion corresponds to movement pointing

above horizon while negative value corresponds to movement pointing below horizon for

respective axis.

In figure 3.2, the accelerometer position can be determined by three angles: Ѳ is

the x-axis angle, Ѱ is the Y–axis angle and Ф is the Z-axis angle. As shown in the

following figure, X axis and Y axis are in 0g and Z axis is in 1g position.

+Z +Z

Ф

+Y +Y

+X Ѳ +X

Ф +Z Ф +Z

+Y +Y +X Ѱ +X Ѱ 1g Ѳ 1g

Figure 3.2: Angle showing independent deflection

Using trigonometry, following equations can be use to change the value to angle:

Ѳ )(arctan 222 ZYX += ……………….. (3.3)

Ѱ = )(arctan 222 ZXY += ……………… (3.4)

Page 35: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

25

Ф = )(arctan 222 ZYX += ………………… (3.5)

These values have unit of radian. It can be easily converted into degree by

multiplying with (180/π). This completes whole process of tilt angle calculation. Though

the values vary from -90 to +90 degree for each axis, it can be converted to measure 360

degree movement using simple geometry. By monitoring the sign of the input, the

quadrant of the angle can be determined. If the angle is in 1st quadrant, no further steps

need to be taken. If the angle is in 2nd quadrant then 180 is added to the original result.

When the angle is in 3rd quadrant, the angle is subtracted by 180 degree to give correct

output. The angle is correctly displayed when 360 is added to the angle generated in 4th

quadrant.

As explained earlier, inversion of operand in equation of Ф is due to orthogonal

position (1g) of Z axis with respect to the reference position. Using this method, the

incremental sensitivity remains constant and the angle can be accurately measured for all

points around sphere.

Following is an explanation which shows X, Y, and Z values for 0, and +/- 90

degree angle. This table is used to find the approximate range of X,Y, and Z values from

one extreme to another extreme point.

Page 36: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

26

X integer value

Y integer value

Z integer value

Ѳ (X

Angle)

Phi (Y

Angle)

Ф (Z

Angle)

Result ( Position of sensor with respect to earth surface)

0 5 227 0 1.1 5.6 X and Y axes parallel Z axis perpendicular

261 5 227 89.31 1.1 5.6 X and Z axes perpendicular Y axis parallel to earth

2 308 -267 0.432 87 -8.2 X axis parallel Y and Z axes perpendicular

-254 308 -267 -85 87 -8.2 X,Y,Z axis perpendicular 0 -20 18 0 -5 85.85 X,Y, and Z axes parallel

261 -20 18 89.31 -5 85.85 X axis perpendicular Y and Z axis parallel

2 -262 -61 0.432 -89 -76 X,Z axis parallel Y axis perpendicular

-254 -262 -61 -85 -89 -76 X and Y axes perpendicular Z axes parallel

Table 3.1: Conversion from LSB to degree and different possible combinations of sensor positions

As shown in above tables, the values of X and Y are approximately equal ranging

from -270 to +270 for -90 to +90 degree change. But, this change is exactly inverse for Z

axis. This confirms earlier explanation of X and Y axis in 0g region while Z axis is in 1g

region. Using these values, the exact angle of point can be found in total 360 degree

sphere.

Page 37: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

27

Chapter 4

DESIGN HARDWARE SYSTEM

This chapter contains detailed explanation of main design procedure required to

perform successful operation, design and power considerations, and methods to improve

acquired result. The design results and graphs are also attached which can verify the

discussion.

There are many different microprocessors available in the market each used for

different applications in different field. It is very important to select an appropriate

microprocessor which meets the specification and project requirement. RCM 3365 is a

development kit which has Rabbit 3000 microprocessor, RJ 45 ethernet port, 16 MB

NAND Flash, and 512 K each of programming and data memory. These features make it

ideal for this project as it would be feasible to expand it in future, if required.

The main part of the project is transferring data from accelerometer to Rabbit

3000. As already explained earlier, Rabbit 3000 and ADXL345 have both I2C and SPI

serial interfaces. So, any one from these two serial communication protocols can be used.

I2C is a 2-wire interface with clock and data pins. So, I have used I2C communication

interface between ADXL345 and RCM 3365 for its simplicity and ease to control. Rabbit

3000 is a master which generates clock signal and sends commands to ADXL345.

ADXL345 works as a slave which receives clock generated by master and performs

read/write according to the commands given by master.

Page 38: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

28

4.1 Rabbit 3000

Rabbit 3000 is a high performance microprocessor with low electromagnetic

interference which is designed and used specifically for embedded system, control, and

communication applications [1]. It is fast as it can run up to 55.5 MHz frequency. This 8-

bit microprocessor supports 8 bit architecture. It has totally 6 serial ports and 56 I/O lines.

Other features of the Rabbit 3000 include PWM, quadrature decoder, battery back-able

real time clock, low power modes, and interrupt priority. The supply voltage ranges from

1.8 V to 3.6 V.

Figure 4.1: Rabbit 3000 microprocessor

The architecture of 20 bit address bus and 8 bit data bus outperform even most

16-bit architecture without losing advantages of 8-bit architecture. Along with data bus

and address bus, 3 chip select lines, write enables and output enable lines can be

interfaced with up to 6 memory devices.

It also has 2 timers with timer A consisting of ten 8-bit counter and timer B

consisting of 8-bit counter with 2 match resistors and 2 step resistors [1]. The important

features are explained in detail later.

Page 39: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

29

Rabbit 3000 has seven 8-bit parallel ports, port A to G comprising of more than

56 digital I/O pins. These ports have primary functionality as well as alternate output

functions. All ports are byte wide with each bit programmable as input or output. Parallel

port A can also be used as an external I/O data bus to serve as slave data bus. By setting

Slave Port Control Register, Port B can be configured to extend its functionality as Slave

port and external I/O. Port C has 4 input lines and 4 output lines. Port D is a special port.

By setting Port D Data register, alternate pins of Port D can be used to communicate

either serial or parallel data. 4 pins of Port E are also used as interrupt pins.

The following picture is the image of RCM3365 development board which is used

for this project:

Figure 4.2: RCM3365 Board

Page 40: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

30

4.2 System Architecture

Interfacing between Rabbit 3000 and ADXL345 requires certain hardware

connections which are shown in figure 4.3.

Figure 4.3: Hardware Connection between ADXL345 and Rabbit 3000

In the above figure, Pin 6 and Pin 7 of Port D of Rabbit 3000 are used as Serial

Clock (SCL) and Serial Data (SDA). I2C requires pull up resistors on both clock and data

lines. In case of missing any of the resistors, I2C may not be able to detect response from

master and/or slave device. The resistors can be of any value from 1k to 47k. I have used

2k ohms for both pins. Unlike RCM 3365 which works on 5 V power supply,

accelerometer needs only 3.3 V. Despite of this voltage difference, Rabbit 3000 can

Page 41: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

31

correctly detect the voltage level and hence the data from the accelerometer, which

eliminates voltage converter between two devices.

When Chip Select (CS) is connected to VDD or Vcc, ADXL 345 is in I2C mode.

As shown in figure 4.3, SCL and SDA of Rabbit 3000 are connected with Pin 14 and 13

of ADXL 345 respectively. I2C is only 2 wire interface. So, it does not require Chip

Select (CS) and Alternate Address (SDO) as part of communication protocol as SPI does.

But, to make it work correctly, CS should be connected to Vcc and Alternate Address

should be connected to either ground or power supply. The command for 7-bit device

address followed by Read/Write bit for I2C is 0x1D if SDO is connected to Vcc and 0x3A

with SDO pin low.

The serial programming cable connects RCM 3365 board with the computer to

download and run the program. This cable has RS 232 level voltage converter which

converts the voltage generated from the prototyping board into the TTL level compatible

with computer. This cable can be used for “PROG” mode as well as “DIAG” mode.

When connected in “PROG” mode, the programming cable can run and debug the

program. The “DIAG” connector on the programming cable makes the port to be used as

a regular serial port. This cable can be directly connected to the serial port. But most of

the laptops do not have serial port. So, Serial to USB converter is used to connect

programming cable to the computer. A 3-pin AC adaptor is connected to the prototyping

board which provides power supply. This prototyping board also supplies power to the

RCM3365.

Page 42: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

32

Before doing any hardware connection, mounting of RCM3365 on the

prototyping board is done. Following figure is taken from the manual of RCM 3365 kit

showing the connection of RCM 3365 module to the prototyping board.

Figure 4.4: Rabbit 3000 placement onto RCM3365 development board

This connection is tricky and user needs to be very careful. All the header pins are

supposed to be matched before the boards can be mounted on each other. The header pins

from J3 and J4 go into headers JA and JB. Mounting does not require hard pushing

otherwise it might break the header socket. The following figure shows the RCM3365

development kit after mounting is done.

Figure 4.5: RCM3365 Development Kit

Page 43: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

33

Fig. 4.6 shows the exact hardware connection between Rabbit 3000 and

ADXL345. Accelerometer is stationed on a cap as it is being used for head movement

detection. It is placed in such a way that the initial angle position in all three axes is

approximately 0. The accelerometer is very small in size and easily concealed by

mounting it on a cap.

Figure 4.6: Head movement detection System

Page 44: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

34

4.3 Sampling Frequency of Measurement

While specifications of operable frequency range and data rate vary with each

device, it is very important to make sure those values are compatible to both devices. So,

the values are chosen in such a way that efficient communication is obtained without

affecting performance of head movement system. Rabbit 3000 works as a master and

ADXL345 is a slave.

Rabbit 3000 can work in both SPI and I2C interface. ADXL345 transmits data to

Rabbit 3000. In this project, sampling frequency is selected based on the configuration of

accelerometer. ADXL345 has clock frequency of 5 MHz for SPI. But, due to operating

limitations of I2C, it can only operate from 100 KHz to 400 KHz. By selecting 400 KHz

sampling frequency, the output data rate is 400 Hz. Output data rate is simply the rate at

which data is sampled. After considering delays and clock stretching pulse,

approximately 200 values of each axis are received by Rabbit 3000 every second.

The tilt angles calculated from received integer values are stored into the database

through Rabbit web. Not all the values are being stored into database. So, 10 data points

of X,Y, and Z axis per second are stored into external database. This can be changed

easily anytime. But, usually it is not required to store 200 values every second. This

makes frequency of data transfer between Rabbit web and website database 10 Hz.

Page 45: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

35

4.4 Power Consumption Consideration

Head movement system might be used on the patient’s head continuously for

more than a day also. That’s why it becomes mandatory to have low power consumption

otherwise it may have adverse effect on patient’s body and also on the accelerometer.

RCM3365 needs from 3.15 V to 3.45 V regulated power supply. RCM3365 with

no loading at the outputs operating at 44.2 MHz typically draws 250 mA [2]. It does not

have internal battery but it has support to add external battery for back up. It allows

SRAM to store data when regular power supply from RCM3365 is down. A Lithium- Ion

battery with nominal power supply of 3~3.3 V is chosen. The drain on the battery is

estimated to be 6 µA when no other power is supplied. With 165 mAh battery, the life of

the battery is estimated to be 3 years (165mA/6µA). Sometimes it also has a battery back-

up circuit which ensures that current can flow only out of RCM3365 to stop charging the

battery itself.

ADXL345 draws current from 23 µA to 140 µA when operating at frequency

from 0.1 Hz to 3.2 KHz in regular power mode. With additional low-power mode,

ADXL345 has low power consumption and it goes into auto sleep mode when it is not

being used. Only when it is used, it wakes up and outputs the data. In this mode, internal

sampling rate is reduced and as a result, output data rate ranges from 15 Hz to 400 Hz.

This reduces current consumption to 90 µA which is smaller than 140 µA for normal

operation. It also increases life of the external battery.

Page 46: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

36

The added advantage of low power mode is reduction in heat dissipation which

eventually improves performance of the whole system and it can be used for longer time

without any interference and disturbance.

4.5 Design Consideration

Certain design considerations are necessary before analyzing any output signal.

Use of calibration and external filter is important for precise calculation of output. A

faster sampling frequency rate reduces error due to the fact that more number of samples

are taken in each time period [13]. This requires more hardware and timing

considerations. The timing between each sample should be same otherwise errors can be

generated [13].

4.5.1 Calibration

Nowadays, accelerometers are usually factory calibrated, allowing the user to

avoid any further calibration. But, in order to achieve more accuracy and preciseness of

data, calibration becomes necessary. Calibration removes the acceleration offset

component in the sensor output due to earth’s gravity. The ideal accelerometer should

have zero offset and good sensitivity as specified in the datasheet. But, due to mechanical

nature of the sensors and noise interference, it is not possible to have zero offset when

there is no movement in the accelerometer. This can sometimes result in error which is

beyond the range of acceptable limit making calibration necessary for accurate

applications such as head movement detection system.

Calibration is performed when device is not being used. It averages samples when

the accelerometer is in a no movement condition. More accurate calibration results can

Page 47: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

37

be achieved by using more samples. The output of offset obtained in no movement

condition is considered as a zero point reference.

………....... (4.1)

Where, Aact is the real acceleration value in unit g after calibration, Aout is accelerated

value before calibration, Aoff is zero offset bias or calibration factor, and Gain is the gain

of accelerometer.

The accelerometer output varies from 0 to Vdd. ADXL345 has voltage range

from 0 to 3.3V which means that zero value is near 1.65 V. The calibrated value obtained

is affected by static acceleration. If the value obtained is close to 1.65 V, the

accelerometer is perfectly parallel to the earth’s surface. This is called zero offset value

which is subtracted from the original acceleration value to get correct position of g with

respect to earth’s surface. But, usually single sample is not very accurate. So, more

number of samples are taken and averaged to obtain zero offset value. Following

equation shows the actual calculation of ADXL345

By calculating, calibration using above method, accuracy of the result can be

improved in such a way that the results can have angular resolution as high as 0.1

degrees.

4.5.2 Filtering

The output signal is never noise free. So, digital filter should be used to reduce

noise. ADXL345 accelerometer does not have capability to add analog filter but use of

Page 48: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

38

any digital filter improves the result by a huge margin. One of the filtering techniques is

averaging more samples taken in a single time frame.

Another method that can be implemented in ADXL345 to improve result of the

head movement detection is oversampling. It increases resolution and decreases effect of

noise by sampling analog signal at much higher rate than required. This improves result

because total noise remains same for same bandwidth but taking more number of samples

reduces the effect of noise. This signal is filtered within the original bandwidth and thus

the total quantization noise is reduced.

4.6 Design Flow Chart

There are several steps in the design to follow starting from the power on

sequence to the angles being stored in the database. All these steps follow certain design

rules and procedures.

4.6.1 Initialization

Before starting data transfer, initialization is needed for both accelerometer and

Rabbit 3000. If either of the devices is not properly initialized, the output data from

accelerometer might be incorrect. In other words, initialization wakes up accelerometer

from auto sleep mode which becomes important as failing to wake up any of the device

may lead to misinterpretation of command and/or data.

4.6.1.1 Rabbit 3000

Rabbit 3000 requires initialization of I2C interface before establishing connection

with accelerometer. It can be done by setting default values and normal function for I2C

pins on Port D. I2C pins are PD6 =SCL (Clock) and PD7 = SDA (Data).

Page 49: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

39

Figure 4.7: Design Flow Chart

Page 50: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

40

Following steps are performed for initialization:

• Set PD6 and PD7 pins to normal function. As pins of all the ports also

have alternate functions, setting of 0 to both pins ensures that they are set to serial

transmission mode. This can be done by setting 0 on bit 6 and 7 of PDFR ( Port D

Function Register).

• Next step is to set input direction. By default, both PD6 and PD7 are set as

outputs. Setting 0 on bit 6 and 7 of Port D Data Direction Register (PDDDR)

changes its default function to input.

• Both configurations of input and output directions are necessary for

communication. Port D Drive Control Register (PDDCR) corresponding bit are

set to logic 1 to allow open drain output

• In case of standard output, the default value of output is set to 0. Another

register called Port D Data Register (PDDR) is used to set output values.

• Frequency division is required as I2C cannot work in same speed as SPI.

This completes initialization of Rabbit 3000 for I2C.

4.6.1.2 ADXL345

After initializing Rabbit 3000 for I2C transaction, the next step in the design is to

initialize ADXL345 accelerometer for transmission. Accelerometer has a number of

registers to set baud rate, data transfer, interrupt, etc. In total, it has 57 registers and

registers 1 to 28 are reserved for future use. According to specification, ADXL345

requires 2 ms delay before changing value of any register. 5 ms of delay is added in the

beginning.

Page 51: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

41

Power on sequence is needed before starting any read or write transaction:

• Write 0x0B in Data register (0x31). By setting 0x0B value, the range is +/-

16g (full range) and full resolution is set. This register value determines the

maximum g range and scale factor [4].

• Write 0x0C in BW-Rate Register (0x2C). 0x0C value sets output data rate

to 400 Hz and sets baud rate.

• Write 0x08 in Power Control Register (0x0D). It is used to set bit 3 which

is a measure bit. If this bit is reset, then it does not perform correct read and write

transaction. To start reading values form accelerometer, the measure bit is set.

Along with initialization of Rabbit 3000 and ADXL345, HTTP

initialization is also performed which sets the buffer size and the number of

maximum servers for this communication. It also initializes HTTP handler which

is later used for rabbit web.

4.6.2 Reading and Storing Values in Rabbit 3000

This step of the design is reading the values from the accelerometer and

temporarily storing them in Rabbit 3000 for further processing.

There are two registers to store data of each axis. So, totally there are 6 registers

from which the values are being read to Rabbit 3000. 0x32 and 0x33 store the value of x

axis while 0x34, 0x35 and 0x36, 0x37 store the values of Y and Z axes respectively. To

read values from ADXL345 using I2C communication, certain procedures need to be

followed to get correct result. They are as follows.

Page 52: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

42

• I2C communication starts with Start bit which is then followed by Slave

Address for write (0xA6, as SDO is connected to ground). The communication

starts with Master. As Rabbit 3000 is a master and ADXL345 is slave device, all

the commands of read or write are transferred through Rabbit 3000 only. After

receiving acknowledgement from the slave, master transfers register address (any

address between 0x32 and 0x37) to the slave which corresponds to the master by

sending another acknowledge signal. The communication does not move forward,

if the acknowledge is not received from the slave. For clear communication, each

signal is being sent multiple times depending on the clock stretching period.

Communication is aborted and error command is displayed only after not

receiving ack signal in finite clock stretching period from slave.

• Master sends another start signal followed by read command to slave

device. It indicates the beginning of read cycle. Each register reads 8 bit of data.

So, this entire read operation is repeated 6 times by storing all the values into

Rabbit 3000 for further processing.

• ADXL345 reads the value 0g when gravity is 9.81 m/s2. Out of generated

totally 16 bits for three axes, 13 bits are used based on the resolution which is set

earlier in the initialization stage. The values are stored then converted into degree

angle format for future use.

• Using “atan” method to convert integer values into degree, output varies

from -90 degree to +90 degree. Due to tri axial accelerometer, it is possible to

detect 360 degree movement in all three directions. Using trigonometric and

Page 53: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

43

mathematical calculations, angles in all three directions vary from 0 to 360 degree

and they accurately reflect movement in accelerometer.

4.7 Simulation and Results

The software consists of two parts. The first part displays the head position on

webpage. The other part transfers data through rabbit web for permanently storage. The

following figure is a screen shot displaying head position on internet through rabbit web.

Figure 4.8: Head Position - Straight

The above results display straight position of head with respect to accelerometer’s

position with head. The range for straight angle with respect to each axis is between 350

degree and 10 degree angle. Head movement detection has potential to be used for

medical applications to display changes when head movement exceeds threshold angle.

The ophthalmologist determines maximum allowed deviation from the optimal position

and this value is known as angular threshold [8]. The message showing risky position is

Page 54: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

44

also displayed on the screen along with angles on occurrence of threshold angle

detection. Figure 4.9 is the screen shot showing risky position of head. Just to make sure,

these readings are not taken on the head position and it is not advisable. The

accelerometer was placed on the hand and set up to behave like it was on the head.

Figure 4.9: Head Position – Risky

The accelerometer was placed such a way that head position was more tilt than

perpendicular while head is moved more than 90 degree on the back side. This makes it

very risky as it can damage neck.

The web storage database application of accelerometer website created using

visual studio stores values eventually into Microsoft excel database. Following is a table

Page 55: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

45

displaying the values stored into excel database and also graph which shows movement

in X, Y, and Z axis continuously:

X Y Z

39.381389 77.688911 312.079193

39.381389 77.688911 312.079193

39.381389 77.688911 312.079193

45.12324 79.68121 314.1235

45.12324 79.68121 314.1235

46.1233 76.2343 311.2342

46.1233 76.2343 311.2342

…… ..... ……

. . .

. . .

79.14540 77.68891 309.1242

76.24355 74.12343 309.1242

78.54354 74.12343 309.1242

Table 4.1: Web database storing values into Excel files

Page 56: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

46

Figure 4.10: Graphical display of values stored in database– Deflection in X direction

The graph is plotted using the values collected from Table 4.1. This graph shows

movement in direction of X-axis with both Y and Z axes almost remaining constant.

Similar results can be analyzed for other plots and all correctly verify results with head

movement. This is just an example plot. The movement can vary from 0 degree to 360

degree.

The function of the monitoring device can be set by parameters such as sampling

period, storing period, improper head position time before alarm activation and proper

head position time to terminate alarm signal. These parameters are user configurable. In

this project sampling frequency is 400 Hz and storing frequency is 10 Hz. The webpage

Page 57: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

47

stores 50 values at one time. So, it takes about 5 sec to activate the alarm signal on

exceeding angular threshold. This can be easily changed to 1 sec by just changing storing

frequency to 50 Hz. Another important parameter is alarm signal activation time. It is

minimum time of improper head position before alarm is turned on. This is required as it

reduces false alarm probability.

The communication interface downloads data onto the database which can be

used for data analysis. 50 sample angles are stored in 1 excel file. This is also user

configurable and number of samples to be stored in an excel file can be easily changed, if

required.. The displayed graph can be improved for efficient assessment of data by

adding any of the parameters such as start and end of monitoring time, out of threshold

time, overall monitoring time and threshold angle.

Page 58: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

48

Chapter 5

CONCLUSION AND FUTURE EXPANSION

5.1 Conclusion

Rabbit microprocessor is useful for many applications especially those require

high speed data transfer through Ethernet. This project can monitor head movement. It

has potential usage for medical applications especially applicable where more accuracy

and position related to three tilt axes are required.

Angular resolution of approximately 0.5 degree was achieved using this design

but it can be improved by introducing better calibration and filtering techniques. This

resolution is sufficient for medical procedures and gives enough accurate result to detect

problem, if any. Another criterion which was fulfilled in this project was storing data

anytime. But, to store data onto web database requires Ethernet support. This makes it

convenient for medical applications as doctors can have access to any data at any given

time. It becomes very useful for applications such as post surgery diagnostics.

In conclusion, goals of the project were achieved successfully.

Page 59: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

49

5.2 Future Expansion

Due to more than 50 I/O lines available on Rabbit 3000, it can be embedded with

different applications. This will be a cost effective solution for many problems. Many

devices can be implemented and communicated with Rabbit 3000 simultaneously which

can certainly help reduce manufacturing cost as well as design time.

Moreover, the results can be more accurate by using filter which will reduce the

effect of noise. Also, the design procedure can be altered in a way that accelerometer

gives output of angle with respect to original starting position. So, the angles displayed

will be the difference between initial position and ending position. Instead of using wire

communication (ethernet), wireless communication makes it even more convenient and

easier to interface at any time at any place. So, doctors can have continuous update on

patient’s head movement without being with them all the time. This will certainly help

doctors as they can treat patient and guide them in better way.

RCM 3365 development kit also support CMOS camera. It can also be used in

security system where along with accelerometer which detects movement, cameras store

pictures which may help in improving security.

Page 60: HEAD MOVEMENT DETECTION SYSTEM USING RABBIT ...

50

REFERENCE

[1] Rabbit International Inc., “Rabbit 3000 User Manual”, December 2005.

[2] Rabbit International Inc., “RCM 3365 User Manual”, July 2005.

[3] A. Tanenbaum, “Computer Networks”, Prentice-Hall, 2003.

[4] Texas Instruments, “Accelerometers and how they work”, Application note, 2005.

[5] Analog Devices, “ADXL345 Accelerometer Datasheet”, May 2011.

[6] A. Noton, “A Brief History And Overview Of The Accelerometer”, June 2011.

[7] Basic of Accelerometers, [ONLINE]

Available: http://sensorwiki.org/doku.php/sensors/accelerometer

[8] P. Cech, J. Dlouhy, M. Clzek, I. Vichar, J. Rozman, “ Head Position Monitoring

System”, 20th Intl. Conference Radioelektronika, Czech Republic, April 2010.

[9] C. Fisher, “Using an Accelerometer for Inclination Sensing”, AN-1057,

Application note, Analog Devices, 2010.

[10] Technical Tutorial, “Introduction to Serial Communication”, June 2002.

[11] P. Myers, “Interfacing using Serial Protocols Using SPI and I2C”, June 2007.

[12] M. Cizek, J. Dlouhy, I. Vichar, J. Rozzman, “Electronic Monitoring of Head

Position after Vitrectomy”, IFMBE Proceedings, 1, Volume 22, 4th European

Conference of the International Federation for Medical and Biological

Engineering, Part 11, Pages 1758-1761, 2009.

[13] K. Seifert, O. Camacho, “Implementing Positioning Algorithms Using

Accelerometers”, Freescale Semiconductor, February 2007.