Smart Guidance Stick Report
Smart Guidance Stick Report
Smart Guidance Stick Report
Faculty of Engineering
.Computer Eng. Dep
: Presented to
Supervisor : Miss Haya Sama'neh
: And
Dr. Loai Malhees
Dr. Raed Al-Qadi
Mr. Sufian Samara
2006/2007
&
Mahran I. Quzah
10126271
Introduction :
Lots of blind people suffer from a problem of inability to walk alone without
probability of hitting obstacles on their way. They use a guidance stick in order to
discover the proper way to walk through.
One of the problems of this is the inability for stick to detect obstacles without hitting
stuff on road.
B - Detection circuit
The detection is done to detect the received
ultrasonic signal. This is the half-wave rectification
circuit with Shottky barrier diodes. The DC voltage
according to the level of the detection signal is
output to the capacitor behind the diode. The
Shottky barrier diodes are used because the high
frequency characteristic is good.
C - Signal detector
This circuit is the circuit which detects the ultrasonic
which returned from the measurement object. The
output of the detection circuit is detected using the
comparator. At the circuit this time, the operational
amplifier of the single power supply is used instead
of the comparator. The operational amplifier
amplifies and outputs the difference between the
positive input and the negative input.
In case of the operational amplifier which doesn't
have the negative feedback, the output becomes the
saturation state by a little input voltage. Generally,
the operational amplifier has over 10000 times of mu factors. So, when the positive
input becomes higher a little than the negative input, the difference is tens of
thousands of times amplified and the output becomes the same as the power supply
almost.(It is the saturation state) Oppositely, when the positive input becomes lower a
little than the negative input, the difference is tens of thousands of times amplified
and the output becomes 0 V almost.(It is in the OFF condition) This operation is the
same as the operation of the comparator. However, because the inner circuit of the
comparator is different from the operational amplifier, the comparator can not be used
as the operational amplifier.
At the circuit this time, the output of the detection circuit is connected with the
positive input of the signal detector and the voltage of the negative input is made
constant.
Vrf = ( Rb x Vcc )/( Ra + Rb )
= ( 47K-ohm x 9V )/( 1M-ohm + 47K-ohm )
= 0.4V
So, when the rectified ultrasonic signal becomes more than 0.4 V, the output of the
signal detector becomes the H level (Approximately 9V). This output is lowered with
the resistor to make fit with the input of signal holding circuit (TTL:0V to 5V).
Because there is an error of the part, the oscillation frequency of the actual
circuit is sometimes different from the calculated value little.
The main purpose of this signal is to generate a stable permanent 40KHz signals to
feed the transmitter of the whole project in stable way.
7
By controlling the values of resistors and capacitors, we can determine the frewuency
of the output signal. We made sure that the output frequency is 40KHz because the
ultrasonic is driven correctly and ultimately on this frequency to give the widest
scanning of unltrasonic waves.
When the circuit is switched on; the power source gives the 9 & 5 volts to all
parts of it, the 555 transmitter unit (transmitter driver) starts generating a stable 40Khz
signals sent to the NAND gate in the transmitter unit to start generating the 40KHz
out of the ultrasonic transducer piece.
Also, this 40Khz generated by the transmitter 555 is sent to the NAND gates of the
receiver unit at pins 6 and 8 to trigger them and stimulate the unit to start receiving.
By this the sender and receiver of the circuit are active. The transmitter 555
generates the signals and sends them to the NAND gate of transmitter which uses
them on pins 1&2 to switch between the 2 transistors, one at a time, where each
transistor at its time gives 9 volts and at the other time gives 0 volts. This happens
very fast at 40KHz frequency. After the inverter IC the signal goes out to air as output
from the transmitter of frequency 40KHz.
On the other hand, and at the same time, the receiver's NAND gates gets the
555-transmitter's signals and this makes them active to flip the result out of pin 11.
The result at pin 11 is important because it goes to the 555-receiver (receiver driver)
which in turn modifies the 40KHz to give a retriggered signal of time 1ms, which
goes into the CCP2 of the microcontroller to check it.
When the signals generated ultimately from the transmitter unit reflects back
to the receiver unit, it's first filtered, then amplified by passing the series of Op-Amps
LM741 which amplifies it more than 1000 times.
The signals then are rectified by using the schottky diodes.
After that, they pass through another Op-Amp connected as a comparator that gives
output 0 or 5 volts depending on the input rectified signals.
Output of the comparator is now fully 5 volts or 0 volts and at about 40KHz
frequency, so to make use of them we pass them into a flip flop (here is combined of
the 4011 IC NAND gates). Remember that the clock of this flip-flop is the 555transmitter's 40KHz signal.
The output of the flip-flop is then passed to the pin 2 of the 555-receiver (receiver's
drive).
At this stage, modifications are accomplished on the 40KHz signals to make it
become lower at frequency and time equals about 1ms. This is done to ensure that the
microcontroller 16F877 will detect the signals of the receiver unit with no overlapping
between them, and thus ensure that the reaction on them is made accurately.
The CCP2 pin of PIC is connected to the output of the 555-receiver to detect the
change in signals. The CCP2 always receive at normal case high signal and this pin
input becomes up-down-up-down signals which means there's a received signal on the
PIC because of some obstacle reflects the ultrasound signals.
Then the PIC reacts as the following :
PIC16F877 sends low signal output on pin D1 which is connected to the ULN2003
which in turn connected to a vibrator, and then switches the vibrator to start vibrating
(because ULN2003 is active low). Also PIC gives on pin D2 another low signal to
enable a buzzer connected to the ULN2003 also like the vibrator.
10
(( The common case of the pins D1 & D2 of the PIC is high signal to disable the
ULN2003 and then disable buzzer and vibrator from switching on )).
When the input to the PIC is again high, because of no longer reflected on receiver
unit, the PIC outs high signals on pins D1 &D2 and no reactions.
BlindsStick.h file :
#include <16F877.h>
#device adc=8
#use delay(clock=4000000,RESTART_WDT)
#fuses NOWDT,RC, NOPUT, NOPROTECT, BROWNOUT, LVP, NOCPD,
NOWRT, NODEBUG
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,restart_wdt)
-
BlindsStick.c file :
/////////////////////////////////////////////////////////////////////////////////////////////////////
//
Hardware Project : Blinds Stick
//
// Programmed and designed by : Aghyad Saleh & Mahran Qozah. //
/////////////////////////////////////////////////////////////////////////////////////////////////////
#include "BlindsStick.h"
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
// PIN D1 is the vibrator.
// PIN D2 is the buzzer.
unsigned long rise,fall;
float ton;
// Capture Mode on CCP2 : ////////////////////////////////////////////
#int_CCP2
CCP2_isr()
{
11
if(rise==0){
rise=ccp_2;
}
else if(fall==0){
fall=ccp_2;
}
}
//function that catches the rise and fall timings :////////////////////
void Catch_RF()
{
while((rise==0)&&(fall==0))
{
restart_wdt();
if(rise==0) setup_ccp2(CCP_CAPTURE_RE);
// catch the value of rise
else if(fall==0) setup_ccp2(CCP_CAPTURE_FE); // catch the value of fall
}
restart_wdt();
ton=fall-rise;
rise =0;
fall=0;
}
// Main Function : ///////////////////////////////////////////////////
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,24,1);
enable_interrupts(INT_CCP2); // CCP2 is in captue mode to catch received
signals
enable_interrupts(GLOBAL);
rise = 0;
fall = 0;
ton = 0;
while(1)
{
//do it : switch on the transmitter ... .
delay_ms(1);
Catch_RF(); //check if a signal is received ...
12
if(ton>0)
{
output_bit(PIN_D1,0); //enable vibrator of the stick.
output_bit(PIN_D2,1); //enable buzzer.
}
else if(ton == 0)
{
output_bit(PIN_D1,1); //disable vibrator of the stick.
output_bit(PIN_D2,0); //disable buzzer.
}
//after that reset every thing to initial state and again from the begining test
// the same stuffs... .
delay_ms(1);
rise=0;
fall=0;
ton =0;
}//while(1)
}//main
Finally,
We managed in this project to understand the basic ideas of how to make a
PIC see what around it. Other ideas and modifications jumped to head through
working on the circuit tens of times so we reached to this final form of it.
This project still have some shortcomings like the ability to make a descending beep,
let's say, or a vibration depending on the distance of the obstacle to the stick.
But it in deed was able to apply the idea of making the guidance stick see on behalf of
the blinds.
We proudly present this project to all who are not able to see by their eyes how
life is so beautiful, but we are sure they still can see the life through their hearts. To all
blinds, may ALLAH bless them and us.
13
We'd like thank our doctors supervisors in this project who was a
good assistants and supporters to us.
Special thanks to our supervisor Haya Sama'aneh & also to Mr. Othman
Othman.
The End
14