| ADAM-I |
![]() |
|
ADAM-I |
![]() |
![]() |
![]() |
![]() |
![]() |
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 limited 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 additional 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 second 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. Initially 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 outputs a voltage which is proportional 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 in front 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 controlled 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) outputs 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 transmitter and receiver shield against external noise generated
by the motor.
![]() |
![]() |
![]() |