Inspiration
DDR has its dance pads, which electriacly are a simple momentary button array. The Padd is plugged into an external (black box) controller. The controler is then conneceted through adaptors to a host system.
Lots can go wrong with is and does. make debugging faster a way to see that the padd is working. (while its still connected)
The problem: the contoller is a black box. and there are aleast 8 diffrenet sytles that all might have diffrent ways of interacting with the pad's button array.
What it does
It watches, without changing or interfearing the voltage across a switch. The button when pressed (and working) will short causing a value of zero volts.
The controller should develop some amount of voltage across the button when its not pressed, even for current based switching. this voltage could be small, and of either polarity.
The array is based on a common. we use a isolated power supply, and reference our Gnd to that (so its the same for all buttons). The other Switch line is split into two paths, H (switch line is higher than com) and L (switch line is lower than com).
H goes into a Unity Opamp to make our own usable version of Switch Line. It is then sent to a Single Rail Opamp, that efectivly clamps - signals to 0v
L goes into a Unity Opamp to make our own usable version of Switch Line. It is then send through an inverting amplifier, making a negitve signal in to a positive one. Then it is send to a Single rail Opamp that clamp negative(that were originally positive) signals to 0V
H and L are connected via a pair of same value resistors. The midpoint is then sent to another opamp to be given a gain of two, which is our output signal.
So
A signal line of +V to com Makes H +V and L 0V half the difference to gnd is +1/2V which we * 2, getting +V out
A signal line of -V to com Makes H 0V and L +V half the difference to gnd is +1/2V which we * 2, getting +V out
A signal line of 0V to com Makes H 0V and L 0V half the difference to gnd is 0V which we * 2, getting 0V out
Thus [button pressed] is 0V, and [button not pressed] is +V no matter how the main controller is wired
How I built it
I used an Arduino 101 as a controller substitute, and its buttons as a pad. To simulate different controllers, I kept changing the polarity of my wires connected to the arduino's buttons.
Its 8 opamps, 6 741s and 2 TL082s
Challenges I ran into
I had assumed I could get way fully single rail, but that had problems with the negative inversion.
So my first opamp on each path is a full rail, and the inverting on the L path. The rest is all single, positive rail.
My biggest problem was getting Op amps, ant what amps were availble. the 741 is really bad for this application, when doing the rounding to the ground rail, I was getting half the positive rail out!!
Also my test setup required three batter pack, and I had batters but no battery holders and a Hackathon???? (scavenged of things)
Also the linear line of 741, just keeps adding more and more voltage to values that should be 0V
Late Saturday I was able to get one TL082, these are a dual opamp with much better rail-to-rail to use in my 0V rounding. The that indroduced a new problem that doing the rounding on one of the two amps, maid the other amp on the chip not work correctly. Also the rounding was giving .6v not zero
The solution was to dual round on the chip (.09V) and beg for another chip.
That worked both - and + voltage properly resolve.
The last problem is the TL08's when send .001V are giving near full + rail. they are both doing this. So my output is right now correct except that button press is full rail not 0V. Not correct but is workable.
and LED shows the button state when connected to the output
Accomplishments that I'm proud of
The inversion summing works!, That with parts very poorly suited to this I still have a working board.
What I learned
741 are so far off Ideal Opamps, and so much error there really not that useful. IT Works!!! which was the important part.
Must do more realworld examples ! before PCB art
What's next for Key Leech
Find a better opamps. and pay extra attention to the pair that does the rail-to-rail on a single rail 0V rounding.
Part reduction. this was to be a 4 opamp circuit and is currently 8. This needs to be repeated 12 times for all DDR buttons
look at any other way to do the inversion with out dual rail.
Built With
- isolated-dc
- op-amps
Log in or sign up for Devpost to join the conversation.