Mechanics and Construction > Mechanics and Construction

Robot Construction Log

<< < (3/5) > >>

 ;D Hello!
In reference to the audio filters;
You can use roll off filters, such as high pass, and/or low pass. These can be simple
resistor capacitor combinations. If you want a specific frequency to pass, with a high Q,
you can use a twin - t operational amplifier circuit. To make sure your circuit is performing
like you want it too, you would need an oscilloscope. I would recommend a Velleman
PC oscilloscope, PCSGU250. 12 Mhz bandwidth, with oscope, function generator, spectrum analyzer,
transient recorder, and bode plotter. At $150, quite a deal, compared to the competition and their
functionality. Good luck!  ;) :) :D ;D

     It has been a while since I have posted, but since then I have made a lot of progress on the robot. I have finished 3 PCBs, and have added a power switch, a reset switch, and programming port to the robot. I also reinforced the steering column and drive motor with aluminum angle stock.

    The first PCB is an amplifier board. This board amplifies and filters the signal from the microphone, and also amplifies the audio produced by the robot's bark generator.

     The second PCB is an automatic programmer for the robot. The robot's memory consists solely of RAM, which means that whenever the robot's power is cycled, the contents of the memory are lost, and so the robot must be reprogrammed. The book's solution to reprogramming the robot quickly,is a tape interface. This allows the robot to store its program on a cassette tape, and then when needed, load it back into its memory. However, the circuitry for the tape interface is larger, and more complicated than the main board on the robot, and so I decided to design a simpler more compact solution. I ended making a simple board with a flash based AVR microcontroller that is able to load a program into the robots memory. I find it a little ironic that I used a relatively modern microcontroller, because in the rest of the robot, I have been mostly sticking to using parts that would be available in the 70s, as used in the original project.

    The last PCB is a manual programmer for the robot. It allows me to manually load a program into the robot's memory. It consists of two 4-bit counters, two 7-segment display drivers, a 555 timer, and a few buttons and switches. It is very painful to use this device to program the robot, because to load a single instruction, I have to setup the address, then latch the address, then setup the data, and then finally write the data to memory.

    Now that I have nearly completed the robot, I will attempt to program the robot, and debug some problems on the robot's main board.


I think what you are doing is awesome! I read How to Build Your Own Robot Pet in high school and it set the standard for me in terms of what to expect from a personal robot.

It would be great if someone would rewrite the book, using current components and technologies. Tech has advanced since then, however many of the capabilities such as tonal commands are still feasible and excellent ways of interacting with a robot. There are components that the hobbyist can use that would ease the pain of implementation.

Keep up the good work! Keep us posted!

    When the robot powers up, the robot will by default drive in reverse. I have been trying to load a small program that would write to an I/O port that would cause the robot to stop, however, so far I have been unsuccessful.

    The first things I thought of when I could not get the robot to work was that the programmer might not be functioning correctly. I then removed the I/O chip and attached LEDs to the address/data buss, address latch pin, and the write pin and confirmed that the programmer was functioning properly.

    The 8085 CPU has a 16 bit address and a 8 bit data bus that is internally multiplexed with the lower 8 bits of the address bus. The two most significant bits of the address bus are decoded to select one of three 8155 I/O and RAM chips. The next problem I suspected was that the decoder was not wired properly, and that the 8155 chip that I was trying to write to, was not being enabled. After examining the decoder, I noticed that I had wired it incorrectly (it turns out that the mistake was due to a typo in the book). I then corrected the mistake and tried to reprogram the robot. I also confirmed that the motor drivers, that the 8155 interfaces with, were functional.

    The robot was still running in reverse, so I then suspected that the code I was loading into the robot was incorrect. After reading the data sheet for the 8155 and reading the book more closely, I realized that the code was indeed wrong, so I fixed the code and reprogrammed the robot.

    The robot was still running backwards, so I wondered if the code was not being executed because the non-maskable external interrupt, TRAP, was being triggered, and causing the CPU to jump to the ISR. I then measured the voltage on the TRAP pin, and confirmed that it was not causing an interrupt.

    I then suspected that voltage rail was below the minimum level for the 8085 and the 8155s. I checked the data sheets and found that while the voltage was a bit low, it was well within the 10% tolerance required by the chips.

    The next thing that I thought might be the problem was that I did not have any decoupling caps on the 8085 and the 8155s. I then added 0.1uF decoupling caps to those chips, but still the robot drove in reverse.

    I am running out of theories as to what the problem might be caused by, however I still have one idea. I purchased the 8085 CPU new, however the 8155's were used. Their leads are clipped short, and there are traces of solder left on them. I am now wondering if the 8155s are in fact functional, or that maybe I damaged 8085 when I was constructing the robot. The next thing I will be looking into is a way to test the chips.

    I have included top and bottom pictures of the main board below.



--- Quote ---I think what you are doing is awesome!
--- End quote ---


    So I have been testing the 8085 CPU and the 8155 peripheral chips. As of now I have not been able to get the 8155s to work, however I have tested the 8085 and it seems to be working (I checked the A/D lines and the Read, Write, IO/M, and Address latch lines with an oscilloscope, and they seem to be operating correctly).

    I also read the data sheet for the 8085 again and found that a RC network was needed on the reset pin, and that a capacitor was needed on the 3 MHz crystal, so I added them, but it did not fix the problem.

    When I was examining the chips, I found that the 8085 marked 8085A, and that two of the 8155s were marked 8155H-2 and the other was marked 8155HC. It turns out the H in 8155H-2s signifies that they are HMOS versions of the 8155, and the 2 means that they are faster versions of the 8155. I am now wondering if I have a compatibility problem with the 8085A interfacing to the 8155H-2s.

    I still have more testing to do on the 8155s, but if I can't find the problem, I will probably post on some EE forums to see if anyone has any ideas as to what is happening.



[0] Message Index

[#] Next page

[*] Previous page

Go to full version