Adam by Rana Basheer

Adam was my first autonomous robot, I built him basically 
to see if I could design and build a "simple" robot.
Although Adam was not as simple as I had thought he would 
be, I did however, gain much knowledge about
robotics, and a greater respect for the people who build 
robots, now knowing how hard it is and how much work
it takes to design and build a working robot from scratch. 

Controller: The controller I used for Adam is an Atmel89C52 
produced by Atmel corp.. 

Software Development Environment/Methods: I use SDCC C-Cross 
compiler developed by Sandeep Dutta. 

Sensors: For object detection I originally had planned to 
use whiskers, but after some tries( none of which
worked very well ) I decided that infrared would be easier 
to use for object detection. So Adam now has an
infra red sensor from Reynold Electronics. I am plannig 
to add three cadmium sulfide photo cells ( photo
resistors ) for seeking, tracking, or avoiding light. I 
am planning to add two more photo resistors, and a LED
for light, to the bottom of Adam so that he can also 
function as a line tracker, allowing him to follow a black
line drawn on white paper. 

Height: Adam stands about twenty centimeters  tall. 

Width: Adam is ten centimeters wide. 

Length: Adam is about twenty centimeters long. 

Weight: Adam weighs 750g. 

Power source: Adam operates on two different power 
supplies; The first is a four AA batteries running through a
five-volt regulator for the microcontroller and the 
electronics. The second power supply consists of another
four AA batteries for the two servos. 
Construction history:When I was at 9th standard I 
happened to see a movie "Short Circuit"  I was fascinated
with this video, I watched it over and over again always 
finding something I had not noticed before or trying
to figure out how the robot worked and how I could 
duplicate it. At that time I was severly handicapped due to
my lack of knowledge in electronic circuit but I made 
a humanoid which I presented for my school science
exhibition. My humanoid was awarded the best design 
and it was a morale booster for me. From then on I tried to
make some kind of robot or other.That was my first 
experience in building a robot. It lacked impressive
features, it worked through switches which I manualy 
used to set and reset. It had two arms each fitted with a
grabber made from pencil box and the arms were made 
from broom stick as my motors, without any gear system,
where unable to carry much load. It had an impressive 
head which could turn and two LED's formed its eyes. 
During my under graduate studies at College of Engineering, 
Trivandrum, I used to read a lot about walking
robots and their control systems I even tried to build a 
mock leg to better understand the mechanics of the
legs and how the robot walked but it was a total failure, 
designing precise gear systems proved to be too much
for me.This was around April '96. After researching some 
more on walking robots, I decided that I was going to
try to design and build my own eight-legged walking robot, 
but about two months into the designing process, I
realized that I knew basically nothing about actually 
building or designing robots, especially walking ones!
and the fabrication of mechanical parts was too much for 
me. The most important thing was getting the finance
for these works. So I stopped developing robots for 
some time as I felt I was taxing my parents too much and I
started concentrating on High frequency RF circuits which 
was purely electronics and I could manage RF circuits
with my limted finance then. After two years in software 
industry I got too much involved in software and I
wanted a break I thought of starting my interest in 
robotics again. One of the greatest impediment earlier was
finance but with that was not that of an issue now. So 
I decided to make sure that I could at least design and
build a simple robot before I tried to build a walking 
one. For the "simple" robot I was going to design and
build, I decided on a small wheeled one(caterpillar wheels), 
and so Adam began. 

The first thing that I did in making Adam was to construct 
the 89C52 microcontroller board. 89C52, which is the
Atmel variant of the highly popular 8051 microcontroller, 
was supposed to be one of the easiest micrcontrollers
to use, it proved to be rather difficult. Though I had 
previously worked with 8051, 89C52 with 4K internal
flash Memory and 256 byte RAM was quite new to me. The 
on-board flash memory made my life quite easy with no
aditional RAM chip or EEPROMs I could download my code 
directly into its internal flash RAM. For writing into
its flash RAM I made a 89C52 flash programmer the circuit 
diagram could be downloaded from here. One problem
that I did not anticipate was that the microcontroller was 
not able to source much current through its ports
and I had to add extra pull-up resistors this I found out 
very late, after integrating my servos and I had to
spend some sleepless nights to find out the problem with 
my servos as the Pulse Width Modulated output was not
found to be varying linearly as I had expected. Also there 
was lot of noise introduced by the dc motor for
which I needed large fiter capacitors to reduce it. 

The seond thing I did in building Adam was to construct 
the infra red sensor that I got from Reynold
Electronics the sensor is an integrated package with an 
infrared transmitter and a receiver. Initialy I thought
the sensor worked on the time difference between the 
transmitted and the reflected ray but I with the speed of
light being in the range of 3*10^8 m/s the time difference 
is tooo small for any electronic circuit to detect.
The working of the sensor is very interesting, it senses 
the angle between the transmitted and received
infra-red ray. An object very near produces large angle 
while an object very far will give lesser angle. The
sensor ouputs a voltage which is propotional to the above 
angle. The variation was not linear but still I could
live with that after all I need to find out if some object 
is infront of Adam or not. Though its data sheet
specifies its detection range as from 10 cm to 80 cm
I found it to be much lesser than that. 

The third thing I did was making the motor control servo. 
The motor control servo used L293D motor driver chip
from National Semiconductors. The motors were contolled 
through a PWM signals generated by 74LS193 4 bit
asynchronous preset binary counter and some logic gates. 
The circuit for this is quite simple and straight
forward. The microcontroller outputs an 8 bit value to 
control the speed of the motor. The MSB indicates the
direction and the subsequent 7 bits specifies a motor 
speed form 0 to 127 scale. The data outputted by the
micro controller is latched by an 74LS573 octal latch. 
This value is used to preset the counter whenever the
base clock generated by a dual 555 timer (LM556)  
ouputs a low value. 

Finally I added a transreceiver circuit to Adam so that 
it can communicate with my PC but the circuit is yet to
start working and I am still finding a lot of hurdles 
in make it fool proof. The most important thing is in
making its transmitterr and receiver sheild against 
external noise generated by the motor. 

Operational description: I have programmed Adam to 
avoid obstacles.
I will describe a scenario to make it easier to explain... 
One fine obstacle detecting day, Adam is running
forward when all-of-a-sudden, BAM! Adam's infra red sensor 
detects an obstacle. Adam, not wanting a conflict
with the obstacle, reverses and then turns his right servo 
causing him to turn in place to the left, away from
the obstacle. Detecting that no obstacle is in front of it, 
Adam resumes his journey forward.

Future Enhancements/Plans: From now on I will probably 
just enhance or replace Adam's program. 

Status: Adam is partly finished, and as for the software 
Adam serves as a kind of "test bed" for when I have a
"bright idea" for a new program. 


Return to The Robot Menu