The Spinning Wedge Implementation, Part 2 – The Circuits

The IGBT driver

As I mentioned, I had no idea what I was doing at the beginning, so the driver circuit went through several iterations:

Version 1.2: This was a complete failure, because all switches were N-channel IRF740′s driven from 0 to 5V signals. The high side switches cannot be N-channel without special arrangements. Also, 5V is not enough to switch them, and, most likely, the IRF740′s couldn’t have put up with the abuse. I had put in provisions to hold the voice coil to one side or another—a low voltage supply to replace the high voltage flash circuit—but this didn’t work because of the flyback diodes built into the IRF740. Still, the circuit worked at low supply voltages.

Version 2.0: This was the first version with the IRS2183 and the STGW30NC60VD. I abandoned, for now, the idea of a “hold” circuit. At some point, one of the driver chips died. I was also getting a lot of spikes, so I needed to add capacitors to suppress these.

Version 2.1: This had bypass capacitors for VCC on the driver chips, and also capacitors between the gate and emitter of the IGBT’s. After some successful tests, the circuit began behaving erratically and draining the batteries. Turned out one of the IGBT’s had failed—the gate was conducting straight to the emitter.

Version 2.2: After replacing the dying IGBT, everything seemed fine. Still, there were a lot of ripples in the gate signals and in the capacitor voltage right when the voice coil turns off, so I tried to add some small capacitors right at the output of the H-bridge. These have to withstand the full 300V, and the smallest I had was 22nF, which wasn’t enough. Two of them in series gave 11nF, which almost completely killed the spikes, but not quite. The schematic of this version is here.

In this last version I also added a quick-and-dirty provision to trigger a flash from the signal generator so I could take precisely timed pictures and see just how fast the hard drives were moving. At first I reached for an IRF740 (that’s the first thing my hand lands on most of the time) and, no matter how I connected the two poles of the trigger cord from the Sunpak 622, it would fire the minute I connected it to the MOSFET. Tried another one (TIP29C or something) and the same thing. I have no idea why, but I could only properly trigger it with an NPN transistor, connecting the positive trigger to the collector and the negative to the emitter. I’m feeding this straight off the optoisolator (see below) and I didn’t even bother looking at what the specs are on the transistor, so my guess is it will probably die one of these days. I should hook something up a bit more carefully.

The circuit is powered by two 9V batteries in series to provide 18V. I definitely need to get around this, because these batteries are stupidly expensive.

The Power Supply

The power supply for the voice coil actuator comes from a Kodak MAX disposable camera. There are several circuits for these cameras depending on when they were made—see Goldwasser’s page. I drew a schematic of the circuit, which requires removing the transformer and checking the winding direction (if you care enough). The schematic is here. I also have some high-resolution pictures of the board: the back and the front. I’ve also labeled some of the parts according to the schematic on the back and on the front.

To use it as the power supply, it’s necessary to remove everything to the right of C1 in the schematic. I replaced the very rudimentary charge button with a better one (so that I could put the whole thing in an enclosure), and added a switch to turn off the battery power—this is how I limit the charge in the capacitor.

The power supply is powered by a single 1.5V battery, just as the disposable cameras are. My guess is that caution should be taken if powering it from a power supply that can source a lot of current (or a big battery) because the circuit basically shorts the battery when it’s running—batteries respond to this by lowering the voltage and thus the current gets limited to some value, but something that can put out more current (including NiCd batteries) may fry everything; I don’t know.

The Input Signals

Timing is controlled by a pulse generator I borrow from work. (Now that the circuit seems to be working, I want to put it all in a small microcontroller to make it all portable.) To protect this [expensive] piece of equipment, I built a really simple optoisolator circuit using two Lumex OCP-PCT4116/E optocouplers (for a total of 8 channels). These are not particularly fast, but at this point, I don’t really care. Using them is simple; the LED side only needs a current-limiting resistor, which can be shared between all of them (all the cathodes tied in parallel to it). I used 220 ohms. On the output side, a resistor must be placed to make sure the output is something when the transistor is not conducting. I think if the collector of all the transistors are connected to the supply voltage via some resistor, then this can be achieved, but the output will be inverted. I didn’t want to deal with that, so I used one resistor for each emitter (actually, a resistor network) connected to ground, with the output between the emitter and the resistor. Thus when the transistor is off, the resistor pulls the output to ground, and when the transistor is on, the current through the resistor provides a voltage drop such that the output is the supply voltage minus the diode drop of the transistor.

Originally (before the IGBT driver) I used a 1MOhm resistor for the transistors to save power but this is a horrible idea. MOSFETs’ and IGBTs’ gates are basically capacitors. So if you have a huge resistor, they turn on and off at some unpredicatble delay because of the slow charge/discharge rate. At the time, this wasn’t actually the reason I changed the resistor; I actually calculated it based on the Ic = 1mA quoted in one of the transistor specifications for the OCP-PCT4116/E. Since I was using 5V for the output at the time, I ended up with 4.7kOhm as the standard value.

Calculating it based on transistor characteristics I think is bogus. Obviously one should take care not to fry the transistor by pumping 20A through it accidentally, but eventually, once I had the IRS2183 circuit, I noticed that this load resistor on the transistor had some interesting effects.

From then on I was powering the output side of the optoisolator with the same 18V I was using for the driver circuit. I was still using the 4.7kOhm resistors on the transistors. I was using a DC power supply for the voice coil rather than dealing with the high voltages of the disposable camera, and at above around 20V, the driver circuit would behave normally at powerup, but after firing the driver once, some oscillations would build up on the input pins of th IRS2183 which were turning the IGBTs on and off at extremely high frequencies. By accident, I noticed that if I just shorted the inputs to ground, the problem would go away. I remembered then reading somewhere in the many IR documents that these chips have a pretty weak (meaning large) pull-down resistor on the inputs. I changed the 4.7kOhm resistors on the optoisolator output to 270 ohms and the problem went away. This means while an input signal is high the resistors are actually draining a lot of power, but since the pulses are in the millisecond range, I don’t really care. Another option is to use a transistor or FET to short the inputs to ground when the input signal is supposed to be low, but there is no need for that.

As mentioned, the optoisolator output is powered by the same 18V battery pack as the driver circuit.

The Circuits in Action

Just so you won’t get discouraged, the developments covered in this post took me about 2 months of working pretty much every weekend on it—and obviously learning a lot. In my next post, I’ll show some results with actual hard drives that I’ve collected off junk piles.


About this entry