circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

November 1997, Issue 88

From the Bench:
Nonintrusive Interfacing - Using Kid Gloves


LOOK, BUT DON'T TOUCH

"Yeah, Dad, you can borrow it, but please don't ruin it. I still play with it." Kristafer, my youngest, reluctantly passes over his treasure.

I'm thinking, there must be a way to make use of this thing without damaging it. It has a great LC display. Where's my screwdriver?

OK. On the inside, it has what you'd expect. An LCD driver chip, a processor, and a few glue chips.

All the functions are multiplexed. Take the x-y control knobs, for instance. They're similar to rotary encoders. For each axis, an LED is aimed at two phototransistors.

The knob, which looks like one of those cookie-cutter-style hole saws, is placed over the receivers so the LED's light is blocked by large teeth on the knob. The receivers are strategically placed such that when the knob is turned, the LED's light hits one and then the other receiver.

Comparing the phases of the phototransistors' outputs tells which direction the knob is turning. The trick here is that the transmitting LED is only active for a particular time slot. So, the phototransistor's open-collector output is only actively low during that particular time slot.

To simulate the x-y knobs, I used four TTL outputs--a pair for each knob. By toggling the pairs of outputs in software, I create the changing phases, which are interpreted as rotating a knob one way or the other.

Figure 1 SmallThese signals are ORed (74HC32) with the control signal enabling the Animator's LEDs (see Figure 1), which creates time-slotted outputs. These outputs are buffered with open-collector drivers so they can be connected in parallel to each of the Animator's four phototransistor outputs.

The function buttons are much simpler to control since there is no direction involved. There are two rows of four buttons. One button--on/move--operates differently, so really, there are only three buttons in the top row of this matrix.

Different time-slot signals, active low, are applied to the rows. When a button is pushed, these time slots are transferred to the column pulling them low.

Again, I used four TTL signals to control these functions. A dual 2Ð4 open-collector decoder (74LS156) worked nicely. Two of the TTL signals are used as address inputs, performing dual 1-of-4 output selection. One set is used for each row.

The '156 has two sets of enables for each decoder. One set is fed by the time-slot signals to keep the outputs active only at the appropriate times.

The other set is controlled by my other two TTL signals--the key press enables. By selecting an address and enabling a row output, a time-slotted signal is placed in parallel with a button's column, faking a physical button push.

The last button I want to discuss is the on/move button. It has a double function and cannot be controlled with a simple open-collector driver.

When the Animator is in sleep mode, a condition it enters when activity has ceased for 3 min., all execution halts to save battery power. The processor outputs a high to one side of the on/move button. The other side goes into power-on circuitry.

To mimic the on/move button, I placed a FET across its contacts, with its gate biasing the FET off. A ninth TTL signal pulses the FET's gate to imitate the button being pushed. I could have used FETs on all eight pushbuttons, but the costs would have been considerably higher.