Artificially extend switch closure time

Hi all, hopefully this is the right group. If not, feel free to admonish me (all the while telling me the correct group!)

I'm trying to hook up an electronic dart board to a USB matrix processor so that I can write a program to do automatic scoring of a dart game, like what they have at bars and such. The problem I'm running in to is that the USB matrix processor (the only one I can find, at that) will only recognize a switch closure of at least 30ms, and apparently a dart hits a board in less time than that.

Unfortunately, I can't reprogram the matrix processor, and I don't really want to get into programming my own microcontroller to handle this (I mean, I can just go buy one of the real thing for $750...I just wanted to have fun!). I'm wondering if there's a way to artificially extend the time that the circuit stays closed, at least as far as the processor is concerned. That's what I'm posting for - to see if anyone can lend any suggestions about that. I thought maybe wiring a capacitor inline with each row between the last column and the processor, but I honestly have no idea. I last took any electronics theory classes 10 years ago or so, and I'm a computer guy by trade now, so "rusty" doesn't do me any justice :)

Thanks!

Reply to
Gabe Knuth
Loading thread data ...

I was going to say "Google one-shot", but that isn't immediately helpful. I guess we have to go with the longer name: Google monostable multivibrator. (No, it is not as exciting as it sounds.) And/or, go to a manufacturer's website (such as onsemi.com) and do that kind of search or go directly to a part like MC1438.

--

-Harold Hill

Reply to
hhill

Could you explain how the circuitry is sensing the dart? What is a USB matrix processor?

Reply to
Jon Slaughter

If you did, you would probably want to buy a $30 AVRUSBKEY and use the LUFA library so you can make it look like a keyboard or joystick or whatnot.

--
Ben Jackson AD7GD

http://www.ben.com/
Reply to
Ben Jackson

e

OH MAN! I didn't even think of that. I had to build an astable multivibrator for another project I was working on. If I recall from school (10 long, beer drinking years ago), it shouldn't be too hard to make. Thanks!

Reply to
Gabe Knuth

e

Just in case others Google around for something, I figured I'd answer this (even though the one-shot should take care of my problem).

The circuitry senses the dart using a matrix, much like a modern computer keyboard (not the clicky IBM ones from eons ago). There are two plastic sheets with a conductive trace on them. One contains the "rows" of the matrix, and the other contains the "columns" of the matrix. On an unmodified electronic dart board, there is a built-in processor that polls each column/row pair to see if a connection is made (e.g. when I dart is thrown, the segment that is hit by the dart will briefly connect the corresponding trace on each layer of plastic, completing a circuit).

This project is designed to modify an original dart board and plug its matrix into a matrix processor, which will then plug into a PC. The USB Matrix Processor is a device that emulates keystrokes based on the input. So, for instance, if I threw a dart and hit a triple 20 on the board, that would close column 1, row 5 (I'm making this up), which would tell the USB Matrix Processor to send the "K" keystroke to the computer, where in my case a Visual Basic program will be running to interpret that "K" as a triple 20.

For completeness - the problem is that the USB Matrix Processor (called X-Keys) is programmed to ignore any circuit closures that last less than 30ms, to avoid false positives due to noise. Evidently, a dart hitting a dart board closes the circuit for less than 30ms, which is why I'm posting here today.

Now, with the One-Shot that Harold mentioned, I can use the super- short closure time to turn on the one-shot, which in turn will send along a positive signal to the matrix processor for as long as I want (set with a combination of resistors and capacitors, I think). Effectively, this will mean that throwing a dart will send a half- second signal to the processor (or whatever) instead of a

Reply to
Gabe Knuth

And Google said "do you mean AVR USB KEY" ah, yea, I think so! Mike :-)

Reply to
amdx

Pretty sure they used a matrix as well. If not, then what? I still use one and I'd like to know.

Reply to
a7yvm109gf5d1

Yes, they all use a matrix. Wikipedia tells all about computer keyboards, both the legendary Model M as well as the lesser cheapies.

I see problems with using a one-shot for extending the time of closure of matrix switches. The scanning controller really wants to see a true switch closure (it sees a row go low when it brings a certain column low, and ONLY during that time, or vice versa), and an electrical high or low won't do it. I ran into this circa 1980 when I wanted to make a "programmable" calculator by adding some key-sequencing logic to a "regular" calculator. I ended up using

4016's and crudely left things 'floating', using different batteries for the calculator and my circuitry.

There's still the problem of detecting the switch closures in a matrix. I see no non-scanning way to read all the switches. The best bet is a microcontroller scanning at an adequately fast rate. The fastest way I see is to activate all columns and as soon as a row is activated do a binary search with the columns to find which one causes the row activation.

Regardless, the microcontroller solution uses fewer parts than using a one-shot (and 1/4 of a 4016) for every keyswitch.

Reply to
Ben Bradley

Oh well, yeah. I guess I meant more like they mylar sheets or whatever material they use today.

Reply to
Gabe Knuth

I used to repair "Mark Darts" games, and the "matrix" was juat a rubber sheet with an individual contact for each segment. If yours is like this, just trigger a one-shot on the pulse - you should only need 62 one-shots if you parallel the two X1 segments per number. If that's unfeasibme, then you'll need 82 one-shots.

If the board is being scanned (which I've never seen) then you have a task ahead of you - you'd have to sense an individual closure some way, and decode that into a unique code for each segment - translating that to USB (or whatever your "matrix processor" does).

Good Luck! Rich

Reply to
Rich Grise

The reason it needs a contact closure > 30 ms is because that's how long it takes to scan the whole board.

Where the heck did you get a dartboard with a matrix?

Go to your local game place and see if you can talk them out of the PCB from an otherwise trashed game.

Good Luck! Rich

Reply to
Rich Grise

555 used as a pulse extender. look at figure 9A (One shot mode)

formatting link

P.S.

input is "Sinked" type, which means it gets pulled to common. et.c.

formatting link
"

Reply to
Jamie

all the rows have 10K pull ups all the colums have 10K pull downs each rows goes the + input of a comparitor all the - inputs of these comparitors go to 3/4 Vcc

each column goes the - input of a comparitor all the + inputs of these comparitors go to 1/4 Vcc each comparitor feeds a monostable each monostable drives a switch (eg 1/4 of a "4066") between the "matrix controller" row or column inputs which corresponds to the matrix conneection at the other end of the circuit the rows like this vcc | .-------- matrix [10K] __|___ controller | |\\ __________ | | | row(n) inoput matrix--+------|-\\ | | | / | row(n) | >----|monostable|----|.../ | 3/4Vcc---|+/ |__________| | / | |/ |__|___| 1/4 4066 | | `---- common point shared by all rows and columns columns like this .-------- matrix __|___ controller |\\ __________ | | | col(n) inoput 1/4Vcc ------|-\\ | | | / | | >----|monostable|----|.../ | matrix -----+--|+/ |__________| | / | column(n) | |/ |__|___| 1/4 4066 [10k] | | | gnd `---- common point shared by all rows and columns 1/4 and 3/4 vcc can be taps off the same voltage divider.

Reply to
Jasen Betts

,
-

aybe

y
e

Hey Rich,

I assume they all have matrices. The Arachnid ones in the stores do, as do the bullshooter and Galaxy lines that are in bars. If you know of any PCB models, let me know and I'll track one of them down!

Reply to
Gabe Knuth

...

Look in the yellow pages for stuff like "entertainment machines", "game vendors", even juke boxes or slot machines. There should be at least one in every major city - just go there and schmooze the techs in the repair dept; they might give you one, or at least a deep discount. Or even, ask them if you can get a copy of the schematic, and build one of your own. :-)

Cheers! Rich

Reply to
Rich Grise

=A0 =A0 =A0 .-------- matrix

=A0 __|___ =A0 =A0controller

=A0 | =A0 row(n) inoput

=A0 =A0|__|___| 1/4 4066

=A0 =A0 =A0 =A0|

=A0 =A0 =A0 =A0|

=A0 =A0 =A0 =A0`---- common point

all rows and columns

=A0 =A0 =A0 =A0.-------- matrix

=A0 =A0 =A0__|___ =A0 =A0controller

=A0 | =A0 col(n) inoput

|

__| 1/4 4066

=A0 =A0 |

=A0 =A0 =A0 |

=A0 =A0 =A0`---- common point

all rows and columns

Ok, so on the board I was looking at there are 8 rows and 11 columns. That means I need 19 circuits like this, and honestly, this is starting be outside of my knowledge base. It wouldn't have been 10 years ago :) Still...I'm up for a challenge.

I hate to ask because I feel like I should know the answer, but why the comparator, and why the different voltages?

Thanks a ton!

Reply to
Gabe Knuth

a
s

=A0 =A0 =A0 =A0 .-------- matrix

=A0 =A0 __|___ =A0 =A0controller

| =A0 | =A0 row(n) inoput

|

=A0 =A0|__|___| 1/4 4066

=A0 =A0 =A0 =A0|

=A0 =A0 =A0 =A0|

=A0 =A0 =A0 =A0`---- common point

by all rows and columns

=A0 =A0 =A0 =A0.-------- matrix

=A0 =A0 =A0__|___ =A0 =A0controller

| =A0 | =A0 col(n) inoput

/ |

|___| 1/4 4066

=A0 =A0 =A0 |

=A0 =A0 =A0 =A0 |

=A0 =A0 =A0`---- common point

by all rows and columns

You know, I'm starting to think the programmable microcontroller is the way to go :)

Reply to
Gabe Knuth

matrix

 controller

inoput

point

matrix

 controller

inoput

point

you need all those inputs for the dart board?

there are 82 regions on the board, so yeah, if you need to tell the equal-scoring areas apart I guess you do. else I fugure 44 might be enough.

normally the pull-down and pull-up resistors put the comparitors in a state where their output is low.

when the a contact is closed one row is connected to 1 column then the pull-up and pull down form a voltage divider and the voltage on that row and column goes to half the supply voltace

this trips the comparitors which trigger the monostables and turn on the switches to fake the matrix controller.

this was my first idea of how to sense the rows and columns on a matrix simultaneously.

today I have another idea.

rows like this:          --+--             |       .-------- matrix   |      1/6 40106 __|___    controller     [100K]       |  |   |   row(n) inoput         |     |\\      |    / |               +----[33]-----+----|S>O----|.../  | matrix      |/         | |/    |  /   | row(n)-[33]-| NPN    |           |__|___| 1/4 4066             |\\| eg, BC547  === 1uF         |             ~\\ or 2N3904 |              | |       |              `---- common point --+--  ---+---               shared by all rows and columns

  columns like this             --+--              |                  .-------- matrix              |            1/6 40106     __|___    controller            [100K]            |  |   |   col(n) inoput  matrix |        |\\        |    / |  column(n) --+--------+------|S>O-------|.../  |     | |/    |  /   |       === iuF           |__|___| 1/4 4066                 |                   |                      |                |                --+--                  `---- common point

for the monostable I've used a combination of a 10K pull-up a capacitor, and a schmitt inverter, I chose a 4000 series part over a TTL compatible part for the higher threshold voltage. (equivalents are 74C14 and 4584)

when a row connects to a column the column capcitor discharges through the transitor's base which turns it on and discharges the row capacitor this turns the schmitt inverters on and closes the switches. the capacitors take about 50ms to charge up enough to turn the schmitt invertors off. the 33 ohm resistors keep the discharge currents to sensible levels

Reply to
Jasen Betts

I thought it was 82 individual switches and an accelerometer (for hit verification).

Reply to
JosephKK

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.