What's new

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
10,964
Reaction score
11,584
Location
NH, USA
I'm reviving this thread because I've been doing a lot of research into spinners recently and have some thoughts on how to adjust pulse output.

Basically These devices are a simple digital "counters" (sort-of) imagine 1 signal wire "A" is the first binary digit and the second signal wire "B" is the second binary digit.

rotating clockwise will give you this:
-> 00 -> 01 -> 11 -> 10 -> 00 -> 01 -> 11 -> 10 ->

rotating counterclockwise will give you this:
<- 00 <- 01 <- 11 <- 10 <- 00 <- 01 <- 11 <- 10 <-

notice that it's not actually counting binary but more like "doing the wave" with just 2 people. like this: -> _ _ -> | _ -> | | -> _| -> _ _

Much like you can tell if a wave changes direction so to does this pattern allow you to determine direction from one signal to the next.

Because of this I don't think it's possible to simply divide the pulses and call it a day. because if the signal goes from 00 -> 11 then all of a sudden it's counting out of order and the hardware decoding the system doesn't know if it's a clockwise or counter clockwise pulse. 00 -> 11, 01 -> 10, 11 -> 00, and 10 -> 01 are all invalid pulse sequences and any of those can easily occur with simple pulse division.

if you're always traveling in one direction then pulse dividing could work, but as soon as you add the ability to reverse directions pulse diving stops functioning and you start getting weird results.

Looking at this like it's a Truth Table and how we can decode the spinner output into simple positive and negative pulse directions requires that you know the output state from the previous pulse:

if A becomes 1 and B is 1 then +
if A becomes 1 and B is 0 then -
if A becomes 0 and B is 1 then -
if A becomes 0 and B is 0 then +
so if A changes state then xnor(A, B) = direction

if A is 1 and B becomes 1 then -
if A is 1 and B becomes 0 then +
if A is 0 and B becomes 1 then +
if A is 0 and B becomes 0 then -
so if B changes state then xor(A, B) = direction

If we wanted to add a divider then the cleanest method would be some logic that perform the above calculations and then adds it to a counter and simulates the binary "wave" output of the original device.

So if we're going to say divide the output by 4 then we'd create a counter that goes from -4 to +4 and starts at 0. We run the above xor/xnor calculations then add or subtract from that counter. then when it reaches +4 we reset the counter back to 0 and output a "positive signal change", alternatively if the counter reaches -4 we reset it back to 0 and output a "negative signal change".

we would need to track our current output state and then issue positive or negative changes in line with the original pulse pattern:
rotating clockwise:
-> 00 -> 01 -> 11 -> 10 -> 00 -> 01 -> 11 -> 10 ->

rotating counterclockwise:
<- 00 <- 01 <- 11 <- 10 <- 00 <- 01 <- 11 <- 10 <-

This could probably be handled with a PIC chip or ATiny. Maybe it's possible with some flip flops (for storing last input and output states) and some logic ICs but I think the circuit might be a bit bulky.
 
Last edited:

Touki_JAFF

New User
Joined
Dec 4, 2021
Messages
5
Reaction score
0
Location
France, 77500 Chelles
Hello Everybody.

First of all Thank you !!! Thanks to you and the work you put into playing NG / JAMMA games with a spinner, also I wanted to take advantage of this possibility.
Except I don't have a Spinner, I picked up a SpinTrak because @brizzo had received an email from Andy (@ Ultimarc) who seems to have confirmed that the SpinTrak is quadrating.
But a SpinTrak produces 1,200 pulses per turn of the button, while the Taito-style spinner produces 300 pulses per turn (PPR).

On this thread, you talked about changing the sensitivity of a Taito Spinner using D Flip-Flop.
So I made a mockup of this solution based on the work of @brizzo.

SpinTrak => D Flip-Flop => USB Adaptator

I chose this test mode because I said to myself that if the signal is well processed by the adapter, then everything is fine.
Besides, I was confronted with a strange behavior, the most embarrassing was the fact that the change of direction was not well identified.
With a D Flip-Flop, we divide the time by 2. So I said to myself that there must be a "synchro" problem.

Then @twistedsymphony came along to shed some light on the wave operation. By the way Thank you !

So I scribbled a number of paper to come up with something interesting using NAND

With a little simulation software, here are the two results as well as the diagram.
I don't have a NAD available to make a mockup, but I wanted to share my little work with you if that helps.


P.-S. : Sorry for my English.
 

Attachments

  • Signal.png
    Signal.png
    124.1 KB · Views: 45
  • NAND_and_D_Flip-Flop.png
    NAND_and_D_Flip-Flop.png
    79 KB · Views: 39

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
10,964
Reaction score
11,584
Location
NH, USA
But a SpinTrak produces 1,200 pulses per turn of the button, while the Taito-style spinner produces 300 pulses per turn (PPR).
This is not entirely correct.
One thing to note is that there are "pulses per revolution" and "transitions per revolution" and they are not the same thing despite people often conflating them. A "transition" is a state change from low to high, or a state change from high to low. A "pulse" is two state changes: such as low to high then high back down to low. So you can see there are twice as many "transitions" per revolution than there are "pulses" per revolution.

On a standard Taito-4-Gear spinner (which has the same exact gearing/pulse configuration as the Semitsu LS-29 spinners, the Capcom Push Spinner, the Ghox Tilting Spinner and nearly ever other spinner made in the late 80s to present)
you have a 72-tooth gear on the knob turning an axle with a 16-tooth gear, that axle has another 72 tooth gear which turns a 16-tooth gear attached to the pulse wheel, and the pulse wheel has 24 spokes/windows.

if you calculate the gear reductions and understand that a single pulse wheel spoke will produce 1 whole pulse the result is that these spinners have 486 pulses per revolution; and that translates to 972 transitions per revolution.

I've noticed that a lot of people confuse "transitions" as pulses particularly on these newer spinners where all the electronics are self-contained. If you're using the SpinTrak I think the first thing you want to be sure about is if it's actually producing 1200 pulses and 2400 transitions, or if it's producing 600 pulses and 1200 transitions. Because that will change the division logic significantly.

I scribbled a number of paper to come up with something interesting using NAND

With a little simulation software, here are the two results as well as the diagram.
I don't have a NAD available to make a mockup, but I wanted to share my little work with you if that helps.
Thats interesting. it seems like a more apt approach. I'd be interesting to see how it ouputs with randomized pulse patterns to simulate actual use. The logic could maybe even be reduced to a single GAL.
 
Last edited:

Touki_JAFF

New User
Joined
Dec 4, 2021
Messages
5
Reaction score
0
Location
France, 77500 Chelles
Hi @twistedsymphony,

On the ultimarc site, it mentions an "Ultra-high resolution. Unbeatable 1200 pulses per revolution."
I'm not competent enough to know if it's "pulses per revolution" or "transitions per revolution".
In any case, thank you for the additional explanations.

My approach to signals is just based on the principle of "making the wave".
I don't know yet what that can give, the basic result with the little simulator also seems interesting to me.
I receive NAND this week, I will only have to test this mockup
 

Astro X

Student
Joined
Jan 30, 2018
Messages
106
Reaction score
56
Location
Germany
this thing has only 300 pulses per revolution.........:S

1.jpg
 
Last edited:

Touki_JAFF

New User
Joined
Dec 4, 2021
Messages
5
Reaction score
0
Location
France, 77500 Chelles
Between the commercial presentation and the reality, there is a ditch .. 🤨

If I allow myself to extrapolate, 300 pulses makes 600 transitions, on two wires ... 1200 transitions.

Maybe that's it ? What do you think ?
 
Last edited:

Touki_JAFF

New User
Joined
Dec 4, 2021
Messages
5
Reaction score
0
Location
France, 77500 Chelles
Hello,

I recovered some logic gate and tested the previously posted treatment.
It does not work, the direction of rotation cannot be managed with this assembly. :S

So I restarted with a different logic...
At the Spinner output we have a quadrature signal with a direction according to the progress of a signal compared to the other.
So I followed the principle of the diagram used by @brizzo to basically retrieve the sens.

From there, I used one signal put on clock D Bascule to recreate a new quadrature signal.
This has the effect of dividing the frequency by 2.

So I had the sens and a new quadrature signal (div 2) that I organized with a few AND and OR gates

For me, it works great with the Spinner and its USB adapter.
Now I don't have an oscilloscope to check the assembly on a test board
Thank you @AstroX, since you measured 300 pulses, I will limit myself to dividing the frequency by two.
I don't know if it helps to redivide by two (f/div4)
 

Attachments

  • New_Quadra_Dvi2_1.png
    New_Quadra_Dvi2_1.png
    43.6 KB · Views: 38
  • New_Quadra_Dvi2_2.png
    New_Quadra_Dvi2_2.png
    43.5 KB · Views: 40

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
10,964
Reaction score
11,584
Location
NH, USA
If I allow myself to extrapolate, 300 pulses makes 600 transitions, on two wires ... 1200 transitions.
If it does indeed only read 300 ppr then I think you are correct in how the came to the marketing number.

since you measured 300 pulses, I will limit myself to dividing the frequency by two.
no need to divide at all, if it's 300 ppr then it's already slower than the Taito spinner at 486 ppr
 

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
10,964
Reaction score
11,584
Location
NH, USA
I think if you want success you have to STOP thinking about this as a wave form and start thinking about it as a 2-directional counter.
you need convert the wave to a pulse counter, divide the count, then convert back into a wave.
 
Top