I wanted an automated way of duplicating, burning, and ripping CDs that did not require drivers or specific software to be installed on the computer. This device should let me use any software I want for ripping audio CDs and DVDs as well as backing up files on my computer to disk. The device should be standalone; basically just act as my eyes and hands. Finally, I wanted something that didn’t cost $600+.
I started thinking about ways to build the device. My first thought was to use LEGOs. It would give me a great way to build up my designs and it is easy to drill and modify to integrate servos, metalwork, and other non-LEGO items. The first revision started off as a linear system with the CD drive, pickup pile, and discard pile all in a straight line. I was going to build the pickup armature on a LEGO car that traversed a set of LEGO tracks. Switches would be used to pinpoint the position of the car. This quickly developed into a cumbersome oversized design. The next revision led me to a radial design with a tall crane like device using LEGO Technic bars. This proved to be an unstable and inaccurate structure. Luckily I don’t have any photos of that version, just this sketch.
Then I decided to move to a radial design with a more solid base.While thinking about the core structure I was also brainstorming about how I would pick up the CDs. The mainstream method uses two stationary plastic supports with one movable metal gripper actuated by a solenoid.
This is a picture of a manufactured duplicator pickup mechanism.
I wanted to build something similar but I was not sure I could achieve the tolerances necessary for this to work without too many failures along the way. I would have designed the parts in 3D and then have had them fabricated but multiple failures would mean a lot of wasted money. I toyed with vacuum lifters, pushing mechanisms, and countless other ideas until I stumbled upon Matthias Wandel’s CD duplicator.
I decided to try out his pickup mechanism. It worked great!
I made some modifications such as using a larger pivot (nail) and I made the wood longer. I made those changes because I was not sure how much torque the servo would deliver and I wanted to be able to adjust it from a light touch to a large amount of force while testing the pickup strength. This longer design plus the nylon string used as a connection from the servo to the wood also gives the system some flex so I don’t pull too hard on the CD. You can see my design here.
I took all the pre-design work and combined it into the first design draft. I had purchased a rotational base platform from lynxmotion.com and put the entire LEGO platform on top of this base.
Which turned into
It was about this time when I bought my first Arduino. The first thing I did was program the servo to swing the arm back and forth. I found that spinning the structure from the bottom seemed a bit unstable so I made a modification.
I put most of the LEGO below the rotational base and made sure that just the arm was on top.
I had originally designed the lift mechanism with a worm gear to keep the lift from moving when the arm was paused. I didn’t think the servo could handle the weight of the lift and figured this would be a better design. It didn’t work as well as I had hoped. There was too much play in the gear, axle, and the way I attached them. There was also not enough torque and it moved too slowly. I went with a direct drive system instead. Here are some photos of the old worm gear assembly.
Direct Drive Assembly.
[Sidenote] I found a company selling LEGO Technic brackets for hobby servos. It made connecting the servos to the Technic blocks a snap. This was a great find.
The first base was built entirely out of LEGO. It was solid but it was lacking the ability to secure the CD drive effectively. I was busy with another project at the time and asked my father if he could build the base. He came up with the design you see here. The wooden uprights keep the weight off of the CD drive. You can see right angle aluminum acts as a guide rail to allow movement for adjusting the CD drive position and serves as a way to secure the drive in place.
With that done, Dad and I took the CD drive apart and soldered on the wires for the relay control of the drive to close it once the new CD is placed into the drive.
We ran the wires for the CD button out of the back of the drive after making a channel in the plastic for the wires. Then we added a magnetic switch to the front to trigger the system to start the process of grabbing the old CD from the drive.
The electronics were finalized and soldered into place.
At this point I decided it was time to really dig into the programming of the system. I started looking into the way the Arduino programming worked and thought I made a mistake in choosing that microprocessor platform. The Arduino basically runs in one big loop and at first glance I thought I was out of luck because I had to build a very procedural program. I searched for about 45 minutes looking for ways to make a “if this, do that, then this” type of program. Finally it dawned on me that I could use “GOTO” calls with loops running inside them to achieve the same effect. From that point on it took me about 2 hours to get the logic for the button states, draw up a flow chart of what had to happen, and write the code to make the first prototype move around in the basic duplicator scheme.
After Build Thoughts:
I still have some minor modifications to make. Currently the switch that senses that the mechanism has reached a CD is a little too abrasive on the CD. I plan on using some LEGO to make a plunger that will hit the switch instead of the TY-Wrap and shrink tube. Also, I want to slow down the rotational speed a little. There is still a lot of mass in the arm and it is putting a lot of stress on the main LEGO structure. It’s been OK so far but I don’t want to come home to a fallen down duplicator because it was spinning too fast.
The other major modification left to be made is to the electronics. The cables on the back need to be neatened up. I’ll probably throw on some Techflex braid sleeving to keep the wires together. Then I need to mount the USB to SATA adapter. That will involve lengthening the SATA and power cable. When I make that change I will also find a12 volt power rail and steal 12 volts to feed the Arduino so I don’t have to power that separately.
Arduino Code: LEGO CD Duplicator Code v8
II am currently in the process of designing a second duplicator. It will be smaller yet have a higher CD capacity. The new design uses a vacuum pump and suction to achieve these objectives. The goal for the next version is to be able to have all the parts 3D printable and have a total price less than $350. I’ll be posting the part files for everyone to download when I’m done and know they work. I will also have them up for sale at one of the 3D printing services at that time.
If anyone has any suggestions or comments please let me know.