Wheelchairs are useful for people for whom walking is difficult or impossible due to some illness, injury or disability. There are different types of wheelchairs. Manual wheelchairs are pushed using their handles. Motorised wheelchairs, are driven by joystick.
Voice-controlled wheelchairs are the latest development. These can be driven just by giving voice commands. A more advanced and intelligent version of the wheelchair is controlled directly through human mind, such as the one used by renowned scientist Stephen Hawking.
In case a person is unable to move the wheelchair even with joystick or voice command, an alternative is gesture-controlled wheelchair. The wheelchair moves as per user’s finger gestures. The user has to simply bend his fingers to move the wheelchair.
Here we present the project to control a wheelchair through finger gestures. It uses flex sensors to record finger gestures. The gesture signals are fed to ATmega32 microcontroller, which processes the information to control four DC motors in order to move the wheelchair in any desired direction.
Flex sensors are widely used to convert finger gestures into equivalent electrical signals. These are actually variable resistors, whose resistance changes when these are bent in either direction. This change in resistance is converted into an equivalent voltage, which can be used for further processing. The author’s prototype including the sensor arrangement is shown in Fig. 1. Flex sensor used by the author is shown in Fig. 2.
System block diagram
Block diagram for gesture control of a wheelchair is shown in Fig. 3. Major building blocks of the system are flex sensors, microcontroller ATmega32, motor driver L293D, DC motors, LCD display and LED indicators.
It converts finger gestures into analogue voltages, which are fed to the microcontroller.
It performs the following tasks:
1. Takes flex sensor input from the internal analogue-to-digital controller (ADC) and checks whether it exceeds certain threshold limit when the sensor is bent
2. Rotates right and left motors in forward or reverse direction to move the wheelchair in the desired direction
3. Displays wheelchair movement on the LCD and also displays the direction of the wheelchair through LED indicators
It displays messages about the wheelchair’s movement direction as well as other messages
It provides sufficient voltage and current for DC motors to drive the wheelchair
The four DC motors move the wheelchair in all the four directions: forward, reverse, left and right. Two motors (front and rear) on one side, say left side, are connected in parallel. Similarly, the other two motors on the right side of the wheelchair are connected in parallel. So there are four motors for four wheels, with one motor for each wheel.
These indicate the wheelchair’s direction of movement (forward, reverse, left or right).
Circuit and working
Circuit diagram of the gesture-controlled wheelchair using ATmega32 is shown in Fig. 4. As mentioned earlier, it is built around four flex sensors (FS1 through FS4), an ATmega32 microcontroller (IC1), a 16×2 LCD (LCD1), an L293D motor driver (IC2), four 12V DC motors (M1 through M4) and a few other components.
Flex sensors (FS1 through FS4) are configured in pull-up configuration with 10-kilo-ohm pull-up resistors. Flex sensor outputs are connected to ADC input pins 37 through 40 (PA3 to PA0) of IC1.
Port-D pins PD0 through PD7 of IC1 drive data pins D0 through D7 of LCD1. Control pins RS and EN of LCD1 are connected to port-C pins PC0 (pin 22) and PC1 (pin 23) of IC1, respectively. R/W pin is connected to ground to make LCD1 write always. A 1-kilo-ohm preset (VR1) is connected to VO pin of LCD1 to vary its contrast. Pin 15 of LCD1 is connected to +5V through 220-ohm resistor R10 and pin 16 to ground to turn on the back light of LCD1.
Port-B pins PB0 through PB3 (pins 1 through 4) of IC1 are connected to input pins of IC2. DC motors are connected to output pins of IC2.
Port-B pins PB4 through PB7 (pins 5 through 8) of IC1 drive the four LEDs through a 220-ohm current-limiting resistor each. AVCC (pin 30) and AREF (pin 32) of IC1 are given 5V to supply voltage and reference voltage for the internal ADC. A 10-kilo-ohm resistor (R5) is connected between Vcc and reset pin 9 (RST) of IC1. To make reset pin active-low, pushbutton switch S1 is connected between pin 9 and ground to apply active-low reset signal to IC1. Fuse bits are set such that IC1 works with the internal RC oscillator frequency of 1MHz. So you need not connect any external crystal at pins XTAL1 (pin 12) and XTAL2 (pin 13) of IC1.
Flex sensors, LCD1, ATmega32 and L293D all are given 5V, while L293D works off 12V supply.