Lately I have been working on an impractical project – to animate an ancient Imation tape cartridge I found. The tape has a clear face and an aluminum plate back, with very clean and precise reels. One of my colleagues at work promised a hundred bucks to me if I could animate it. Ha! Challenge! (not that I would take his money)
Seemed like a simple project – small motor, some pwm for speed control and see it roll. Never is that simple. I quickly came to the conclusion that setting a PWM for the speed is not enough, it would be best if I can set an absolute speed and automagically adjust power as needed. To do this, I dug into my parts bin for an IR detector. A handful of these came from a very expensive baby rocker – one of those that simulates the rocking motions of a mother’s arms.
In order to grow my inventory of parts, I scrounge the interwebs for people selling boxes of miscellaneous parts. I try to find those that look to have come out of a company’s lab or workshop. Sometimes I find some really cool stuff. Recently I picked up a batch of very old bipolar PROMs – memories that can be programmed once but read many times. The ones I found (82s129, 8bitx4, 1K) were used in arcade game consoles and Motorola two-way radios.
I know a few people who really want to have these, but they don’t want to waste their time writing data to used or bad chips. To keep them happy, I built a simple PROM tester, that scans through the entire memory array looking for high bits. (E)PROMs by default are all zeros. When they get programmed, the necessary bits are set to HIGH by exposing the bit to high voltage and burning an integrated nichrome fuse. Once the fuse has been burnt, it stays that way.
To check if the PROM has been used, I made a small circuit with a CD4040 binary counter and an Arduino. The binary counter has 12 output pins and when it receives a pulse on the pulse pin, it increments the output by one binary bit. The Arduino then scans the PROM output and checks for any HIGH bits. If one is found, the program halts and lights the PROM-BAD LED. If all bits are LOW, the Arduino sends another pulse to the binary counter and checks all the bits again until it reaches the max number of addresses the chip supports. If everything has been found good, the PROM-GOOD LED is lit and the program halts. Replace the PROM, hit reset and start over.
This same program can be used to test any type of memory for zeros. Static ram could be tested for write as well, with a few modifications.
The code can be found in my code repository.
The PNG schematic is here. Eagle schematic is here.