[sci.virtual-worlds] Mattel Power Glove

veenu@mtfmi.att.com (Veenu R Rashid) (04/16/91)

I just picked up a Mattel power glove since they are not going to be available
much longer.  Now, how do I interface this thing to my Amiga?  Can I do this
using software?  Do I need to do a hardware hack?  Can someone with specs on
this thing please send me email or post anything which might be useful?

Thanks very much,
Veenu

vrr@cbnewsj.att.com

[ Moderator (Mark): With all the requests for info relating to Mattel
  power gloves coming in, perhaps someone who has succeeded could post 
  how they did it?  And I will cut off the flow of request messages.
  Thanks! ]

lance@motcsd.csd.mot.com (lance.norskog) (04/19/91)

Hello-

The Power Glove normally acts as a Nintendo joystick.  I've hooked
it up in this mode as an X windows mouse to 386 UNIX via a parallel port.
See Byte, July 1990, pp. 288-289 for the relevant info.  I believe the
Amiga joystick ports give you the necessary 2 5V output control lines and
one 5V input data line.

This should be in the sci.v-w archives; it's from my stash.
I'm electronics-impaired so I haven't done it.  Also, I'd rather
wait for a commercial product.


From: schur@isi.edu (Sean Schur)
Newsgroups: sci.virtual-worlds
Subject: Power Glove Specs
Date: 27 Nov 90 06:28:13 GMT


I am posting the following for a friend and associate. If you have
any responses you can respond to me or to rn and I will forward
your messages or queries.

---------------------------------------------------------------

I had been working independantly on the disection of the Nintendo
power glove when a friend and associate showed me what Eric Pepke
had listed here.  It's great to know someone else is working on the
glove, as it looks like VPL isn't going to release their RS232
version anytime soon.  I am using parts at hand, so undoubtedly a
better way exists to get the pulse and timing into something more
CPUseful.

What I did was to chop off the glove's CPU and just use the knuckle
box and receiver.  The wiring and board location names follow.

Unlike Eric, I couldn't get the switching supply on the knuckle board
to get anywhere near 40 volts.  With straight 50Khz going to the
violet wire I get 15 volts. However, using the divider below to get 
from 1 Mhz down to 50 Khz, if the 50 Khz is NOR'ed with pin 12 (QC)
of the divide by 10 counter and then fed to the violet wire, I get a
nice 25 volts. I suspect the switcher is very frequency sensitive, and
somehow this combination and pulse width is nearer to perfect.

The receivers can be used as is.  When a nice pulse is sent from the
transmitter in the form of a burst of 50 Khz (but not longer than 3ms
to keep from double triggering) the receiver will send out a clean
negative going pulse 7.5ms long.  I time from the begining of the 
transmit pulse burst until the leading edge of the receiver pulse by
counting 25 Khz clocks.  The circuit is set up so that the final
latches (only one shown)can catch the results and then be polled if
needed to pass the data on to your computer through a UART or parallel
port.  It is easy to expand so that all 6 receiver bursts (3 for each
transmitter) could be collected.

This test circuit is easy to change and play with....changing the 
counter configuration can give better resolution but more jitter.
To see the output without having to write code, I just used a couple
of Texas Instruments TIL311 hex displays connected directly to the
latch outputs.  I was getting about 1cm resolution as connected.

What I would really like to know is how to very simply and quickly
get nice X-Y-Z coordinates from the planar 3 receiver array without
lots of gooey math.  I have tried remaking the receiver stand so that
they fall on the axes, but must tilt the stand so that the glove 
points into the origin.  Again, some translation and rotation math
would be helpful.  The problem with a stand set up in this way is that
it limits movement even more than the planar version.   Any help would
be appreciated.

We at CAL-ARTs are deeply interested in VR.  We have many artists in
the film, video, dance, music,and theater arts.  In our own Media Lab,
have over 100 students producing art on Amigas, and most of those are
character animators aching to actually move INTO the worlds they are
now creating on paper, film, and video.  Thanks for the forum, and
keep those ideas comming!  

Dale McBeath                       voice (805) 255-1050 ex. 2330
CAL-ARTs                                 (805) 245-3191
Character Animation Dept.          PLINK  msu-387
School of Film and Video
24700 McBean Pkwy, Valencia CA 91355




Knuckle box wiring:
Knuckle pin   CPU pin   Color    Function
  1              3      Pink     Index finger (analog 100K to 500K)
  2              2      Brown    Thumb
  3             12      Lt. Blue Finger common (thrugh a diode)
  4              4      Orange   Middle finger
  5             11      White    Small finger
  6              7      Green    Right transmitter
  7              6      Yellow   Left  transmitter
  8              9      Violet   Switching Supply Pulse (50Khz) in
  9             10      Grey     Switching Supply feedback (2v nom)
 10              1      Black    Ground
 11              5      Red      +5 volts
 12              8      Dk. Blue Bell (small peizo element)


Receiver Box Wiring:

                        (1)     Recv 1 (top left)
        GND      (6) 
                        (2)     GND  
  Reset in       (7)
                        (3)     Recv 2 (corner)
  Clock in       (8) 
                        (4)     Recv 3 (bottom right)
  Data out       (9)
                        (5)     +5



TIMING:  low = ______  high = ---------   lots-o-pulses = |||||||

50Khz    ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

TRIG     --------+_____+-----------------------------------+______+--

RESET    __+-----+___________________________________+-----+_________

XMIT     ________|||||||___________________________________||||||||__

GO       ________+-----------------------------------+_______________

COUNT    --------+|||||||||||||||||||||||||||||||||||+_______________

RCV      -------------+_____+-----------------------------------+____

DATA     =============X=========NEXT GOOD DATA==================X====



                                                 | +5v
                                                 >
                                                 <  .39 K
                        (/10)       +------+     >
   +-----------+     +---------+    |  1/2 |QA----O--------O---> 50 Khz
   | 1meg osc. |-----| 74ls160 |--CK| 74ls |               |     (violet)
   +-----------+     +---------+    | 393  |QB------------ | --> 25 Khz
                                    |      |               |
                      +----------CLR|      |QD--------+    |
                      |             +------+          |    |
                     GND     +------------------------+    |
                             |      +------+               |
                             |      |  1/2 |    (/256)     |
                             +----CK| 74ls |               |
                                    | 393  |QD--------+    |
                                    +------+          |    |
 +----------------------------------------------------+    |
 |                               +-------------------------+        
 |                               |
 |                               +----\-----\
 |      +------+       +------+       | ls02 >nor-------------> XMIT
 |      |  1/2 |QA----A|      |Q1--O--/-----/                   (yellow
 +----CK| 74ls |QB----B| 74ls |    |                             or green)
        | 393  |QC----C| 138  |    +----------------> TRIG
        +------+       |      |
                       |      |Q8-------------------> RESET
                  +-en'+---+--+
                  |        EN
                 GND       |
                         (open)


 25 Khz>--------------------------------+----\        
 TRIG>-------+----\                     | ls00>nand--------> COUNT
             | ls00>nand-----O----------+----/
           +-+----/          |
           +---------------+ |
                           | |
           +-----------------+
           +-+----\        |
             | ls00>nand---+
 RESET>------+----/


RCV(1,2,or3)>------------------------------------+
                                                 |
                    +-------+               +----+---+
COUNT>--------------| 74ls  |               | 74ls   |
                    | 393   >----(8 bits)---> 373    >---(8 lines)-->
                    | (/256)|               | (latch)|         DATA OUT
                    |       |               |        |
                    +--clr--+               +--'OE---+
                        |                       |
            |\          |                       |
 RESET>-----| >not------+                      GND
            |/                              (or POLL for data)




==============================================================================
                             \          /
                              \   \    /      / 
Sean Schur                     \   \  /      /
                                \   \/      /
USENET: schur@isi.edu            \  /a\mpyr/
Compuserve: 70731,1102            \/   \  / ideo 
Plink: OSS259                           \/ 
==============================================================================