! Under Construction, use at own risk !
Updated : Mar.15,1999 |
Stability Problem fixed !
It's me again. Seems as if I now have solved the mysterious negative VSync instability problem. All you have to do (starting from my V1.1 plans) is to replace R1 and R3 (around Q1) by ~4.7kOhms. As a quick fix, 10k in parallel to R1 (100k) should already do the trick.
I have already updated the parts list, updated plans for Rev 1.2 will be here soon.
Having brushed up a little my discrete
electronics this weekend, I now know that 100k for R1 was far too
much to allow Q1 to recover from saturation fast enough. Effect was
that the falling edge of the input signal was flattened to ~3-4us,
like (excuse for the ASCII plots, read '-' as +Vb, '_' as GND))
___|---\__,
which
makes this edge a lot more sensitive to noise. Reducing R1 to 4k7
now gives a perfect square pulse, and a perfect stable output
signal.
Due to my auto-polarity ciruit, and since the PLL locks to the rising edge of its input signal, this effect obviously is only on negative Vsync input :
Pol. Input after Q1 PLL inp.
(+) __|-|__ --|_/-- __|-\__
(-) --|_|-- __/-|__ __/-|__
Jaroslav Groman@post.cz already built my V
1.1 controller and noticed that the output impedance of the Vsync
output can be too high for certain monitors to recognize the sync
pulses. I suggested he should try to add a diode parallel to R14 ( )
to ensure the output is pulled low, but he didn't respond yet.
He also crticized that in L/R control
mode, one of the glasses stays dark when no signal is received,
which might damage the LCDs. I found that the spare monoflop on the
4538 and some re-wiring could add a loss-of-signal detector that
switches both glasses clear, but I think I will care for
the line-blanking add-on first.
Previous version of this page (now obsolete), with Rev 1.0 plans, 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
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 : (not yet updated, Rev 1.2 soon to come)
circuit schematics ( 37k GIF ),
PCB layout ( 64k GIF 600dpi )
components placement ( 40k GIF )
- or all of the above together as Postscript, zipped (86k)
parts list. (already updated for Rev 1.2)
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).
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.
I found that there are also tiny 12V - batteries (e.g. Duracell MN21 - 33mAh) which would be perfect for even better shading and an even smaller case, if you can find a corresponding battery holder.
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.
(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.