PLL DIY Controller |
||
Last Updated : May.26,1999 |
Andreas Stenglein pointed out that I've mirrored the pin numbers on the VGA connectors and marked the wrong GND pin. Read the annotation here to find out how it should be.
There still wasn't any time left to care about the line blanking curcuit, so anyone eagerly waiting for it will need some (more weeks of, I'm afraid) extra patience
Previous versions of this page (now obsolete, for the very curious... ) :
This controller is based mainly on the circuit by Thomas
Schuhmann & Franz Krause. I added some improvements and
simplifications (which I may have seen in other circuits, so credits
go to all those nice people that contributed to the homebrew
section at stereo3d.com ).
With some heavy redesign of the
PCB, I made the whole stuff fit into a much smaller box.
All
necessary parts together should cost not more than approx. 50 DM /
25 EUR / 30 US$.
Sorry, still no Pics.. at least none I could be
proud of publishing them. OK, in fact, here
you will find at least something.
The controller provides the following operating modes :
VGA pass-through for interlaced and page-flip stereo modes
VGA sync-doubler for top-bottom stereo mode
external L/R switch signal for connection to serial, parallel or 3-pin VESA mini-DIN port.
Additional features:
L/R toggle switch
Automatic adaptation of generated V-Sync polarity, may be forced to positive resp. negative.
Compact design (fits into 10cm x 6 cm hand-held box with 9V battery)
Improvements / changes w.r.t. the device by Thomas & Franz:
PLL circuit fine-tuned for less jitter - Thomas once told me that he just used an out-of-the-box circuit for frequency multiplication, which had a far too wide frequency range (~10 kHz) to be really stable at usual V-sync frequencies (~100 Hz). I restricted the range to approx. 25..300 Hz and get a rock-steady picture now.
Automatic adaptation of generated V-Sync polarity. The original circuit didn't care for the polarity (positive or negative pulses) of the V-sync signal, but always synchronize to the rising edge of the pulse. My circuit automagically converts the received V-sync signal to positive polarity, and the generated sync signal back to the received polarity, keeping the first edges of received and generated signal in sync regardless of polarity.
Combines 'the best of both worlds' w.r.t. shutter glasses driving: Like the original Cyberboy controller, I use a (spare from the sync-doubler) flip-flop to get half of the L/R switching frequency to toggle the polarity of the glasses (in contrast to the extra oscillator in the standard 4070-homebrew driver). Unlike the Cyberboy, however, I don't use an additional negative supply voltage, but instead drive the common line for both LCDs reversed to the currently active LCD (as in the standard 4070-homebrew driver).
Rev. 1.1 improvements:
capacitors have sufficient space now; extra pads for different sizes (10/7.5mm resp. 7.5/5mm)
PCB shape modified for better fit into different cases
components plan cleaned up
PLL cap changed from 270n to 330n
Rev. 1.2 improvements:
Input resistors modified for improved stability
diode added to VSync output circuit for reduced impedance to GND
optional open-collector VSync output in case some monitor needs it
The controller is designed for 'stupid' LCD shutter glasses with
a 3.5 mm stereo connector like the Woobo Cyberboy, where the three
wires are :
Left/Right LCD panel (tip/ring, or vice versa?), Common (base)
The controller works perfectly on my Yakumo/Biostar Voodoo Rush's VESA DIN3-port with Nuvision's Winspex drivers (at least the test picture). No big deal in fact, since the VESA signal is a simple Hi/Lo = L/R (or vice versa), just like the serial or parallel port controllers.
It's also a perfect replacement for the Cyberboy serial controller (driven by LCDBIOS).
Parallel port connection not yet tested.
VGA VSync control works; checked with Voodoo Rush, ATi Mach64 and ASUS SP97-XV onboard SiS5598.
I also tried the Simuleyes drivers, but
they couldn't find an interlaced video mode for the windows desktop
with rthe Voodoo Rush. Will check with SiS5598 controller
occasionally, which, AFAIR, supports interlace.
If you already own (or are willing to download the 4 MB free light/evaluation version of) EAGLE CAD, you can download a ZIP archive with the EAGLE sources for the circuit schematics and PCB layout (27k)
Otherwise, files are available for download for :
circuit schematics ( 58k GIF ),
PCB layout ( 64k GIF 600dpi )
components placement ( 59k GIF )
- or all of the above together as Postscript, zipped (84k)
parts list.
Since I don't know your printer, you will have to use a picture editor like Picture Publisher, MS Photopaint etc. to convert the PCB layout to your printer's resolution. I've had cases where the editor assumed a resolution of 96 dpi, which would give a ridiculously large image.
You can find a very easy way to put the layout onto the PCB
(besides the traditional photographic method) for etching at
this site :
If you have (access to) a laser printer, just
print the layout as it is (i.e. mirrored) and iron the laser toner
onto the (clean) copper side of the PCB. Then soak the paper with
warm water until you can gently peel and rub it off until (almost)
only the laser toner remains on the PCB.
For best results, print
at least twice on the same page to get an extra thick toner layer
(although it will be hard to get the prints exactly in the same
place).
Normal printer paper (kind of) works, but may leave some
paper fibres. I also tried coated Hi-Res inkjet paper, which seems
to have finer fibres, but only does a little better.
Instead of
a laser printer, you should get the same result using a photocopier
with an inkjet printout (but be aware that some copiers don't scale
properly).
If you are used to make PCBs by photo-transfer, just print the board layout in original size on a sheet of overhead projection film (as recommended for your printer) and expose as usual (printed side to the PCB, so you can read the text).
Having etched the PCB, cut out the two parts along the inner thin lines. I had to cut out the lower left corners to get around the screw that holds my case together - that's why the black rectangles are there.
Drilling : 1.5mm ? for 3.5mm jack pins (5 holes each), 0.8mm ? for all others. Enlarge holes for IC socket pins to 1.5mm on the components side (see below); put board on a metal plate to avoid drilling through the copper film.
The circuit is designed to consist of
two PCBs, with the smaller one mounted on top of the other,
connected by 5 vertical wires, five external switches and an
external LED.
Since space is very limited, you should either
(if you're very brave) solder the chips directly to the PCB. In this case, some resistors and wire connections that are underneath the ICs must be soldered to the copper side of the PCB. - or :
use very flat sockets, like the socket shown in this picture . To save another mm in height, widen the pinholes on the PCB's components side to 1.5 mm to accomodate the wider parts of the socket's pins - as shown in this drawing.
Crucial parts
are also the 3.5mm stereo jacks, which must look like
this to fit into the PCB (Hirschmann part No. PG203J). In case
you cannot find such jacks, you can also use ordinary 3.5mm stereo
jacks for front-panel mounting and wire them to the PCB.
Holes for resistors are all 10mm apart, so
there should be no problem for 1/4 W resistors. For capacitors, 10mm
raster types for the 100n, 330n and 470n caps and 7.5 mm for the 3n3
cap are recommended (holes for 7.5mm resp. 5mm types are available,
but these may be too wide and high).
Circuit
alternatives :
First, you should try the default VSync
output circuit with D2, D4 and R14, no Q2 and SG pad
connected to S5.
Only if your monitor absolutely won't
synchronize, you should try to add Q2 and connect pad SG1 to S5.
Since Q2 adds another negation, in this case you will also have to
get the GP signal from IC3a(4538) pin6 instead of pin7, as shown in
this picture.
With all electronic parts soldered in place, now cut all pins and
wire ends standing out on the copper sides of the PCBs as short as
possible.
Next, you need five pieces of wire,
approx. 2 cm in length (wire ends cut off the resistors should do).
Solder them to the five square pads of the smaller PCB,
standing out in full length from the copper side.
Before soldering the two PCBs together, you must solder 13 suffiently long thin isolated wires to the wirepads on the PCBs for connection to the switches, battery and LED (they will not be accessible any more afterwards). Remember which wire goes where, it may be hard to determine once the boards are joined.
Then you may join the two boards, putting the smaller board on top of the larger and carefully threading the vertical wires of the top board through the corresponding holes in the bottom board (also with square pads). Put them together as close as possible, then solder the wires to the bottom board and cut off any extra wire length from the bottom board's copper side. As soon as I get my pictures developed, you will find a picture of the stack here (not yet, sorry).
Next (if you haven't got one already), get a box that is large enough for the PCB stack, a 9V battery and the switches. Drill holes for the jacks on the PCB, the switches and the power LED and mount all parts in place. Wire and solder the switches, LED and Tantal Cap as shown in the componets drawing. Finally, solder the wires to the PCB stack to the corresponding terminals on the switches and LED.
If you now plug in your shutter glasses and power the device, the
LED should light.
In page-flip or sync doubling mode, the
glasses should flicker with a frequency of 20-30 Hz.
In
direct-L/R-control mode, one of the LCDs should be dark, and you can
change sides using the L/R toggle switch.
If you prefer to use an external source of 9-12V DC (from the PC or a wall plug adaptor), you may leave out the battery and add a corresponding jack.
The SYNC Polarity switch (S2) is not really needed, the automatic adaptation should do quite well (and you can save the extra money for a three-way switch, which usually costs extra).
If you only need shutter control from the VGA connector (page-flip and sync-doubling), you can also do without the 'Input' switch (S4) and connect the wire to the 'LR' pad directly to the 'X2' signal on the mode switch (S1).
The output frequency of the 4046 may vary considerably for the same external circuit between different chips. The frequency of the V-Sync output with open input should be around 25Hz +/- a few Hz. If not, the capacitor C1 (270n) should be rescaled accordingly.
I added the order numbers and prices of Conrad Electronics, Germany to the parts list since their catalogue is available online on the WWW (though usually quite busy), at least as a reference.
Direct L/R control from serial, parallel or VESA 3pin DIN port
You have to build an adaptor cable for the corresponding port (serial for the cyberboy, parallel for others, DIN-3 anyone?) according to the pinouts in this drawing In case of doubt, check your glasses' manual and Christoph's site.
Plug an adaptor cable for the desired port as (described above) into the L/R-VSYNC input jack of my controller. If you want to leave the VGA dongle in place, you need another 3.5 mm stereo jack with the ring and tip connectors soldered together.
Into this you can plug the dongle's plug to connect the computer's V-sync out to the monitor's V-sync in.
Set the input switch on the controller to 'L/R'.
You need a driver like LCDBios and corresponding software to support switching of the LCD glasses via ports.
Control by VGA vertical Sync
You have to build a VGA dongle according to the pinouts in this drawing, routing the vertical sync signal through my controller and all other signals connected straight through.
Plug the 3.5 mm stereo plug of the VGA dongle into the L/R-VSYNC input jack of my controller.
Set the input switch on the controller to 'VSYNC' and the mode switch to 'x1' resp. 'page-flip/interlace'.
You need either :
- software that does page-flipping, i.e. automatically toggles left and right picture every video (VSync-) frame, or
- a VGA board that supports interlaced video modes, i.e. displays even and odd pixel lines alternating in every other video (VSync-) frame and software (or stereo pictures) with left and right-eye images interleaved. This mode is also Windows desktop -compatible, at least for viewing stereo pics.
Sync-Doubling
Put the plug from the VGA dongle into the L/R-VSYNC input jack of my controller.
Set the input switch on the controller to 'VSYNC' and the mode switch to 'x2' resp. 'sync-double'.
You need software that puts the left and right-eye pictures in the top and bottom half of the screen, separated by some black lines for vertical re-tracing, and a non-interlaced VGA video mode. The controller will insert an extra V-sync pulse in the middle of the screen, causing the monitor to restart displaying from the top.
I have no 3D-software with native support for this mode, but a first test with a stereo picture pair, glued together with Picture Publisher and displayed full-screen at 800x600 resolution worked.
Toggle L/R
When in stereo mode the 3D-perspective 'doesn't seem right', most likely you see the left and right pictures reversed. In fact, since the controller does not have any L/R information when tapping the VGA vertical sync signal, you only have a 50-50 chance that the relation between picture and LCD is correct. For those glasses that don't have a L/R toggle switch built in (the Cyberboy has), the controller has its own L/R toggle.
Force Sync Polarity
Normally, you should leave the sync polarity switch in middle (neutral) position. Thus, the sync signal generated cy the controller will have the same polarity as the signal received from the VGA controller.
In sync doubling mode, you may try to toggle the sync polarity by setting the switch left or right (depending on the input signal, only one position will have an effect).
Switch from VGA-sync control to direct (serial/parallel/VESA 3pin DIN port) L/R control by just plugging the adaptor into a third jack.
Add line-blanking mode like in the new CyberJoy controller. The controlling circuit should need just an additional flip-flop and an xnor-gate for the H-sync, but the blanking switches to pull the RGB signal levels to black every second line look critical (bandwidth, impedance matching etc.). The MAXIM MAX4019 (triple video buffer with output disable) and MAX499 (RGB video switch) look promising, but seem to be hard to find. Even better than the MAX4019 would be the MAX4219 (0.1 dB bandwidth of 90MHz vs. 30MHz)
LCD auto-shutoff when no input signal is present (suggested by Jaroslav Groman). IC3b would make a perfect loss-of-signal detector, but switching both LCDs off seems to require some additional gate(s). Would be a useful feature especially in L/R switching mode since drivers tend to send no switching signal when stereo is off, which now makes one LCD stay dark.
(far future) Put the whole logic into a PIC program for an even smaller device that would allow automagical detection of operating mode and push-button control. First guess is that even an 8-pin (6 I/O lines) controller should do already, but I guess I should prefer a good ol' 16C84. Found a good PIC site at David Tait's
The circuit was designed with the Light version of EAGLE CAD from CADSoft . This version (approx. 4MB) is free for non-commercial or evaluation use.