I completed this project a while ago, but I thought I'd better write it up anyway.

A few years ago, I bought a CD duplicator cheaply at an auction, with the intent of upgrading it to a DVD drive. Since then, it had been collecting dust, until I got motivated enough to do something about it.

What I Bought

The unit in its factory configuration consisted of a SCSI CDROM drive, an 8x SCSI CD Burner, a controller with a 2 digit LED readout (yay!), and a motor control board with a microcontroller on it. The robotics consist of a loading and eject mechanism (driven by the same motor via a cam and some linkages), and a conveyor belt which can be driven in both directions. The loading mechanism consists of a pair of offset CD sized holes, into which the CDs sit. When the motor is driven correctly, the holes line up and allow a single disc to drop through. The eject mechanism consists of a pair of arms which rotate up alongside the burner's tray, carrying the disc upward.

The unit did not come with a power supply, but took in +12V & +5V via a DIN connector on the back. While testing, I bodged on a Molex connector so I could power the unit using an external hard drive case.

These are the connectors on the motor control board:

J1 Bottom row
1&2  ?? motor (not used)
3&4  carriage/arms motor
5&6  conveyor motor

Chip U2 microcontroller

Chip U5 carriage/arms motor control, connects to Pin 1(arms)&2(load) on U2
Chip U1 conveyor motor Pin 3&4 on U2

Middle sensor yellow 8 bottom row  R17  Pin 6 on U2
Arms sensor orange 9 top row  R12  Pin 7 U2
Carriage sensor blue 12 top row  R16  Pin 5 on U2

RS232 port  J4
Pin 1 RX   blue/white
Pin 2 TX   Orange
Pin 3 GND  Green/white

What I Changed

The first thing I did was remove the old CD drive, which was of no use to me. I now have a gaping hole in the front of the machine - bonus. I also removed the old SCSI control board.

The next thing to go was the CD burner, which was replaced with an IDE DVD burner. This was connected to the guts of an external 5.25" USB to IDE enclosure. Using a nibbler, I removed enough of the back panel of the machine to let the switch & IEC power input of the power supply from the USB to IDE case be exposed. Internally, the machine used Molex connectors to power the motor control board and drives, so it was simply a case of using some double adaptors to run +12V/+5V power.

At this point, I now had a big, heavy DVD burner that could only work if you manually pushed discs through the machine - not particularly cool. I had to get the robotics working. Looking at the ICs on the board, there were a couple of large units with metal plates (obviously the H bridges for the motor controllers), and a large flat microcontroller that I really didn't feel like learning how to reprogram. I pulled the microcontroller out of its socket, and traced the inputs from the H bridges back to the socket. A few quick probes with a jerry-rigged +5V line confirmed that I could now manually control the robotics by sticking wires into the IC socket for the microcontroller.

So now I could control the motors, but I still had to deal with the loading and eject mechanisms which shared a common motor, and had to be driven to certain positions marked by photosensors in order to be activated. Probing the outputs of the photosensors with a multimeter shows they cleanly transitioned from 0V to +5V, so they were suitable for feeding directly into a microcontroller.

To tie the robotics all together, I stuck in an Arduino, hot glued to some cardboard, and glued onto a handy surface inside the machine. A USB to Serial adaptor connects it to the controlling PC. A simple single character command sequence allows the computer to control the load and eject mechanisms, and the conveyor. The computer has to eject the DVD tray via the USB/IDE bus.

On the first run of testing, disaster struck. Well, not so much disaster but something frustrating. The arms used to remove the disc from the tray were hitting the tray, and could not lift the disc! Not wanting to dismantle the machine again (which I should have done), I ejected the tray and probed around with my soldering iron until there were 2 smouldering divots in the sides of the tray. At this point, the tray no longer closed.

I installed another DVD drive, and this time carefully cut it using a Dremel. Success! The drive could now open and close, and the arms could lift the disc from the tray.

How to Use It

  1. Eject the DVD tray
  2. Issue a (L)oad command to drop a disc into the tray
  3. Close the DVD tray
  4. Do whatever you need to the disc
  5. Eject the DVD tray
  6. Raise the arms (U)p to lift the disc from the tray
  7. Close the DVD tray
  8. Lower the arms (D)own to drop the disc onto the conveyor
  9. Issue a (G)ood or (B)ad command to dump the disc from the conveyor into the appropriate output bin.

The source code for the Arduino is attached.