Multi Controlled Wheelchair (1)
-
Upload
mafiaishot -
Category
Documents
-
view
93 -
download
7
Transcript of Multi Controlled Wheelchair (1)
Multi Controlled Wheelchair
S. Manoj, Ayswarya Vijayan, Shilpa N, Viswapriya R.
Abstract- Our paper aims to help handicapped and paralyzed
people all over the world. Wheel chairs with joystick control are
already available in market at starting rate of 50,000Rs and
going as far as 1lakh. But if we examine carefully we can see
that majority of the disabled people cannot afford this. Also we
can see that the quadriplegic patients cannot use this joystick
control wheelchair because of their disability. Hence we propose
a multi-controllable wheelchair that provides various controls
by means of voice, head tilt, using hand movement in joystick &
touch in touchpad for various categories of disabled people.
Index Terms — electric wheelchair, voice control, multi controlled wheelchair, head controlled, accelerometer, low cost wheelchair.
I. INTRODUCTION
Wheelchairs are the easiest means of transport for
disabled people. With the improvements in technology
various improvements such as joystick control[7], voice
control[12] are becoming available for ease of patients.
Main disadvantage is that these are not affordable &
comes at high prices.Hence we a multi-controllable
wheelchair which provides various controls for disabled
people at fairly low price.
1. Voice Control- Can be used by any people except
blind people to control the wheelchair.
2. Head Control- Can be used by dumb people and
other quadriplegic patients for wheel chair control.
3. Joystick control- Can be used by others for wheel
chair control where the user can control the joystick.
4. Touchpad Control- Use touchpad for wheelchair
motion & switching to menu.
Password protection is also provided via speech
recognition to prevent misuse of the wheel chair.
The various modes of control of wheel chair can
also be selected via speech recognition.
II. ALGORITHM
A. Voice Recognition and Control
Modern general-purpose speech recognition systems are
generally based on hidden Markov models (HMMs)[4]. This
is a statistical model which outputs a sequence of symbols or
quantities. One possible reason why HMMs are used in
speech recognition is that a speech signal could be viewed as
a piece-wise stationary signal or a short-time stationary
signal.That is, one could assume in a short time in the range
of 10 milliseconds, speech could be approximated as a
stationary process[5]. Converting a speech waveform into a
sequence of words involves several essential steps:
1. A microphone picks up the signal of the speech to be
recognized and converts it into an electrical signal. A modern
speech recognition system also requires that the electrical
signal be represented digitally by means of an analog-to-
digital (A/D) conversion process, so that it can be processed
with a digital computer or a microprocessor.
2. This speech signal is then analyzed (in the analysis block)
to produce a representation consisting of salient features of
the speech. The most prevalent feature of speech is derived
from its short-time spectrum, measured successively over
short-time windows of length 20–30 milliseconds
overlapping at intervals of 10–20 ms. Each short-time
spectrum is transformed into a feature vector, and the
temporal sequence of such feature vectors thus forms a
speech pattern.
3. The speech pattern is then compared to a store of phoneme
patterns or models through a dynamic programming process
in order to generate a hypothesis (or a number of hypotheses)
of the phonemic unit sequence. A speech signal inherently
has substantial variations along many dimensions.Before we
understand the design of the project let us first understand
speech recognition types and styles.
Implementation
The heart of the speech recognition module is the HM 2007
voice recognition chip. It can store up to 20 words, each of
duration 1.92 seconds. Password protection is also provided
via speech recognition to prevent misuse of the wheel chair.
The various modes of control of wheel chair can also be
selected via speech recognition.
The chip has two operational modes; manual mode and CPU
mode. The CPU mode is designed to allow the chip to work
under a host computer. This is an attractive approach to
speech recognition for computers because the speech
recognition chip operates as a co-processor to the main CPU.
The jobs of listening and recognition don’t occupying any of
the computer's CPU time. When the HM2007 recognizes a
command it can signal an interrupt to the host CPU and then
relay the command code. The HM2007 chip can be cascaded
to provide a larger word recognition library. The circuit we
are building operates in the manual mode. The manual mode
allows one to build a standalone speech recognition board
that doesn't require a host computer and may be integrated
into other devices to utilize speech control.
The major components of this
design as in fig. 1 are: a speech recognition chip, memory,
keypad, and LED 7-segment display. The chip is designed for
speaker dependent (one user) applications, but can be
manipulated to perform speaker independent (multiple users)
applications. The keypad and LED 7-segment display will be
used to program and test the voice recognition circuit.
Fig. 1 Speech Recognition Hardware Implementation.
B. Head Control
In order to determine the angle of tilt, θ, the A/D values from
the accelerometer are sampled by the ADC channel on the
microcontroller as in fig. 2. The acceleration is compared to
the zero g offset to determine if it is a positive or negative
acceleration, e.g., if value is greater than the offset then the
acceleration is seeing a positive acceleration, so the offset is
subtracted from the value and the resulting value is then used
with a lookup table to determine the corresponding degree of
tilt, or the value is passed to a tilt algorithm. If the
acceleration is negative, then the value is subtracted from the
offset to determine the amount of negative acceleration and
then passed to the lookup table or algorithm[6]. One solution
can measure 0° to 90° of tilt with a single axis accelerometer,
or another solution can measure 360° of tilt with two axis configuration (XY, X and Z), or a single axis configuration
(e.g. X or Z), where values in two directions are converted to
degrees and compared to determine the quadrant that they are
in.
VOUT=VOFFSET+[(△V/△g)×1.0g×sinθ] where: VOUT = Accelerometer Output in Volts
VOFF = Accelerometer 0g Offset ΔV/Δg = Sensitivity 1g = Earth.s Gravity θ = Angle of Tilt
Solving for the angle:
θ=arcsin[(VOUT-VOFFSET)/(△V/△g)]
Fig. 2 Read values from an accelerometer.
Fig.3 accelerometer connection.
Fig. 5 Plot of Voltage Vs Angle in accelerometer.
Implementation
The analog output voltage from the accelerometer for degrees
of tilt from -90° to +90°. The change in degrees of tilt
directly corresponds to a change in the acceleration due to a
changing component of gravity acted on the accelerometer. The slope of the curve is actually the sensitivity of the
device. As the device is tilted from 0°, the sensitivity
decreases. You see this in the Fig. 5 as the slope of output
voltage decreases for an increasing tilt towards 90°. Because
of this nonlinearity, the degree resolution of the application
must be determined at 0° and 90° to ensure the lowest
resolution is still within the required application resolution.
Fig.4 Sense axis of accelerometer
C. Joystick Control
The 2-Axis Joystick can be used to add analog input to your
next project. The 2-Axis Joystick contains two independent
potentiometers (one per axis) that can be used as dual
adjustable voltage dividers, providing 2-Axis analog input in
a control stick form[7].
Fig.6 Joystick interfacing with arduino
D. Touchpad Control
Capacitance Measurement
The complete capacitance measurement system is composed
by sensing electrode pads connected to the MPR121 sensing
inputs, and the MPR121 communicating with the host
processor via the I2C bus and Interrupt output. The total
measureable sensing channels is 13 channels, including 12
physical electrode inputs and one multiplexed 13th channel
for proximity detection.. After the capacitance is measured, it
then get noise filtered and finally touch /release status is
determined. The 10bit output data (or even the 8 bit baseline
value providing an even higher level of noise rejection for
slowly changing mediums) can be used as the capacitance
measurement output relating to the measured parameters such
as the water level, displacement, or medium content change. The capacitance measured on each sensing channel, is the
total capacitance to ground which can be the combination of
background parasitic capacitance to ground (Cb) and finger
touch induced capacitance to ground (Cx).
Fig. 7 Capacitance measurement
The MPR121 uses a constant DC charge current scheme for
capacitance measurement. Each channel is charged and then
discharged completely to ground periodically to measure the
capacitance. All the channels are measured sequentially,
when one channel is in the charge/discharge and
measurement period the other channels are shorted to ground.
The amount of charge (Q) applied is programmable by
setting the charge current (I), and the charge time (T). Once
the electrode is charged, the peak voltage (V) at the end of
charge is measured by internal 10bit ADC. This voltage V
(that is the ADC counts) is reverse proportional to the
capacitance (C) on the sensing channel.
𝑪=𝑸/𝑽=𝑰×𝑻/𝑽, 𝑽=𝑸𝑪=𝑰×𝑻𝑪
Fig. 8 MPR121 Capacitance measurement
Implementation
The Touch Sense Shield is really a very simple board[9]. It
has got one little chip on it -- an MPR121 touch sensor
controller – and some extra circuitry to limit the voltages on that chip to 3.3V. The Touch Sense Shield uses just three
pins of the Arduino: A4, A5, and D2. The MPR121 speaks a
kind of unique serial language called I2C. I2C requires just
two wires for communication – one for a clock (SCL), and
one for data (SDA) – which are connected to Arduino's A4
and A5 pins. Be aware that you probably should avoid using
those two pins for anything but communicating with the
Touch Sense Shield. Only one other pin is connected
between the touch sense controller and the Arduino: an
interrupt output from the MPR121 to Arduino's digital pin 2.
This pin is controlled by the MPR121 IC.
E. Motor Controller
Hardware Architecture
The design involves running the BLDC motor in a closed
loop, with speed as set by a potentiometer[1]. As displayed in
the architecture diagram, the design generates PWM voltage
via the Z8FMC16100 PWM module to run the BLDC
motor[2]. Once the motor is running, the state of the three
Hall sensors changes based on the rotor position. Voltage to
each of the three motor phases is switched based on the state
of the sensors (commutation). Hall sensor interrupts are
counted to measure the motor speed. Other peripheral
functions are used to protect the system in case of overload,
under-voltage, and over-temperature. The hardware is
described in the following sections[3].
Three-Phase Bridge MOSFET
The three-phase bridge MOSFET consists of six MOSFETs
connected in bridge fashion used to drive the three phases of
the BLDC motor. The DC bus is maintained at 24 V, which
is same as voltage rating of BLDC motor. A separate Hi-Lo
gate driver is used for each high- and low-side MOSFET
phase pair, making the hardware design simpler and robust.
The high-side MOSFET is driven by charging the bootstrap
capacitor. The DC bus voltage is monitored by reducing it to
suitable value using a potential divider.The DC bus current is
monitored by putting a shunt in the DC return path. An NTC-
type temperature sensor is mounted on MOSFET heatsink,
providing analog voltage output proportional to temperature.
PWM Module
The Z8FMC16100 contains a six-channel, 12-bit PWM
module configured in this application to run in Independent
mode. The switching frequency is set to 10 KHz. The output
on the individual channels is controlled according to the
inputs from the Hall sensors.The inputs from the Hall sensors
determine the sequence in which the three-phase bridge
MOSFET is switched. The Duty cycle of the PWM is directly
proportional to the accelerator potentiometer input. The
change in the duty cycle controls the current through the
motor winding, thereby controlling motor torque.
Commutation Logic
The Hall sensors are connected to port B pin PB0, PB1, and
PB2 on the Z8FMC16100. An interrupt is generated when
the input state on any pin changes[11]. An interrupt service
routine checks the state of all three pins and accordingly
switches the voltage for the three phases of the motor. Trapezoidal commutation is used for this application to make
implementation simple. In this process of commutation, any
two phases are connected across the DC bus by switching the
top MOSFET of one phase and bottom MOSFET of another
phase ON. The third phase is left un-energized (both top and
bottom MOSFET of that phase are switched OFF).
Speed Measurement
The Hall sensor outputs are connected to port B bits 0, 1, and
2. Interrupts generated on port B bits 0, 1, and 2 are counted
every second. The one-second time interval reference is
provided by Timer0. With an interrupt occurring every 1 ms,
1000 counts are required to complete a one-second interval.
Closed Loop Speed Control
The closed-loop speed control is implemented
using a PI loop, which works by reducing the error between
the speed set by the potentiometer and actual motor speed.
The output of PI loop changes the duty cycle of the PWM
module, thereby changing the average voltage to the motor
and ultimately changing the power input. The PI loop is
periodically timed at 128 ms by Timer0 interrupt.
Protection Logic
The ADC module periodically checks DC bus voltage,DC
bus current, and heat sink temperature. If these values go
beyond the set limits, the motor is shut down. These checks
are timed by Timer0 interrupt.
Over-Current Hardware Protection
The Z8FMC16100 has a built-in comparator that is used to
shut down the PWM for over-current protection. When the
current exceeds the set threshold,a PWM Comparator Fault is
generated to turn OFF the PWM Module.
Fig.9 Motor Controller block diagram
III. SIMULATION RESULTS
We used “Arduino” [10], a free software for our simulations
& programming purposes. The board that we used was
arduino mega 2560 which is quite an advanced version of
arduino board. We successfully interfaced all our modules
with the arduino board & observed our simulations in the
arduino serial monitor.
Fig.11 Arduino simulations for touchpad working
The voice control is speaker dependant & responds very well
to the person who trained the system. Thus the person who
trained the system can only operate the system efficiently.
We calibrated various voltage values for joystick movements,
head tilt using accelerometer. Then converted these voltages
to a digital count between 0 & 1023 using inbuilt 10 bit
ADC’s in arduino mega board & mapped different directions
for these values & hence controlled the direction of wheel
chair using arduino programming. Before testing this directly
using motor we simulated their working in arduino serial
monitor. We were also successful in interfacing touchpad &
wrote a complex IIC program for serial communication of
data[8].
We were able to reduce the overall cost to Rs 30000 which
was our primary aim. Thus we were successful in designing a
low cost efficient multi controlled wheel chair.
IV. CONCLUSION
Overall, we feel that this paper met most of our expectations,
as we were able to build an economical and multi - controlled
wheelchair. If we had more time and funding we could have
implemented a more enhanced version. This system can be
developed in future to a brain controlled or stair climbing
wheelchair. Other enhancements are standing wheelchairs &
all terrain 6 wheel drive wheelchairs. Since our main aim was
to design a low cost wheelchair such designs are out of our
reach.
This was also a tremendous
learning experience for us, especially with the hardware. We
learned more about Arduino open source, efficient circuit
design, and hardware debugging. This endeavor of ours also
Microcontroller Board
helped in fine tuning our software skills. Through this paper,
we got valuable experience in developing efficient software
using memory and run-time optimizations, that which cannot
be gained through routine assignments.
Fig. 10 Arduino Mega 2560 board
It has 54 digital pins of which 14 pins can be used as PWM
outputs and 16 analog input pins which makes this board a good selection to implement our project. Coding will be done
on arduino software which is an open source software.There
are 4 serial ports in arduino mega.
REFERENCES
[1] eZ8 CPU User Manual (UM0128)
[2] Z8FMC16100 Series Product Specification (PS0246)
[3] PID Motor Control with the Z8PE003 Application Note (AN0030)
[4] L. R. Bahl, P. F. Brown, P. V. de Souza, and R. L.Mercer, “Estimating hidden Markov model parameters so as to maximize speech recognition
accuracy,” IEEE Trans. Speech Audio Processing, vol. 1, no. 1, pp. 77–83,
1993. [5] Janet M. Baker, Li Deng, James Glass, Sanjeev Khudanpur, Chin-Hui
Lee, Nelson Morgan, Douglas O’Shaughnessy (MAY, 2009). "Research
Developments and Directions in Speech Recognition and Understanding, Part 1". IEEE SIGNAL PROCESSING MAGAZINE. Retrieved May, 2010.
[6] Accelerometer based measurement of body movement for
communication, play, and creative expression. M. Nolan, E. Burke and F. Duignan
[7] Force Feedback Joystick Control of a Powered Wheelchair: Preliminary
Study Fattouh, M. Sahnoun and G. Bourhis [8] MPR121, Proximity Capacitive Touch Sensor Controller – Freescale
datasheet.
[9] Sparkfun website www.sparkfun.com [10]Arduino reference page www.arduino.cc
[11] T.G. Wilson, P.H. Trickey, "D.C. Machine. With Solid State
Commutation", AIEE paper I. CP62-1372, Oct 7, 1962 [12] Relational Interface for a Voice Controlled Wheelchair Stefanie Tellex