Robotic CD Changer
The shot below shows the motor that moves the gantry back and forth, and the two H-Bridge speed controllers. The output wheel is tipped so the bottom string goes behind the gantry, while the top string is inline with the sled attachment point for a straight pull on the sled.
Below is a shot of the sled, without the up-down tower in place, showing the sliding door wheels that hold the tower, and the pulley and string that move the tower up and down. (The tower drops down on its own with the help of gravity, and only needs to be wrenched up.) When the weight of the tower is being supported by the string, it pulls the lever arm and spring down, closing the micro-switch. The weight of the system is held by the small screw below the lever arm. When the tower reaches the bottom, and touches a CD, the line goes slack, the spring pulls the lever arm up, and the micro-switch opens and the system knows its reached the bottom of its travel, and shuts off the motor. I used a worm-drive so the tower can't pull the motor backwards when the power's off.
The sled travels on three wheels. It hangs off the upper track on two sliding screen door wheels (great ball bearings) and rolls very smoothly across the track. The bottom wheel rolls along the flat surface of the lower track. This arrangements prevents the sled from getting tweaked and jamming.
The pc board in the middle holds an opto-detector that reads a black strip on the back of the tower to detect when its reached its upper limit.
The "gripper" is a hand carved set of jaws that are operated by an electro-solonoid.
Getting the shape of the jaws right is difficult. I'm going to machine the next set out of metal.
There is a very small micro-switch under the gripper, to detect when we fail to pickup, or drop a disk .
I used photo-interrupters along the upper track, to detect when the sled was at each of the three stations. I programmed the sled's speed to over-shoot each location, then stop, and slowly crawl back to provide speedy transits, yet very repeatable positioning along the track. It hits its marks within a 1/32" every time.
Within iTunes, I set the preferences to automatically start reading a CD when-ever a new one is inserted, and to eject the CD when it's done reading it. That way, I didn't have to write any software to interface between the computer and my robot.
After dropping the CD into the reader, the robot blips a solenoid on the side of the CD-reader that presses the "open/close door" button on the front of the reader - so I don't have any electrical connections within the reader - I simply mimic what a human would be doing - pressing the button on the front to get it to close the door and suck in the new CD.
When iTunes is done, it ejects the CD. I have a photo-interrupter that detects when the CD tray has opened all the way. The robot then drops the gantry to pick the CD out of the CD-reader and place it in the "done" stack, moves over to stack 1, picks up another CD, drops it in the reader, and the loop goes on.
The controller for the CD-changer is an ATMega8 chip running at 8 MHz on an Olimex development board. I used two channels of PWM to control the two H-Bridge Speed Controllers so I had variable speed control over the gantry and tower motors, two channels of io driving a darlington array chip which in turn drove two 12v relays for the solenoids, and lots of inputs reading the limit switches and opto detectors.
Here are the AVR-C source files.
Here's a schematic of the controller board with the ATMega8 Chip.
Here are some additional construction notes for other Do-It-Your-Self-ers.