Trouble with 4x4 Telephone Keypad

Hi all,

I'm making a 4x4 keypad for a DTMF dialer using on/off tactile switch. Problem is Row and Column has internal pullup resistors, so that to generate a tone you have to short the corresponding Row/Column and pull it down to ground. Before this I have experienced with simple keypad where no ground is required, I'm totally confused as how to proceed. Please help me.

Thanks in advance

Reply to
Jack// ani
Loading thread data ...

Hi all,

I'm making a 4x4 keypad for a DTMF dialer using on/off tactile switch. Problem is Row and Column has internal pullup resistors, so that to generate a tone you have to short the corresponding Row/Column and pull it down to ground. Before this I have experienced with simple keypad where no ground is required, I'm totally confused as how to proceed. Please help me.

Thanks in advance

Reply to
Jack// ani

Sounds to me like you have the wrong type of keypad. Is there a reason you can't remove the pullup resistors, and simply use the X-Y lines directly into the chip? That's how most DTMF generators do their thing.

Keep the peace(es).

--
Dr. Anton T. Squeegee, Director, Dutch Surrealist Plumbing Institute.
(Known to some as Bruce Lane, ARS KC7GR, 
kyrrin (a/t) bluefeathertech[d=o=t]calm -- www.bluefeathertech.com
"If Salvador Dali had owned a computer, would it have been equipped
with surreal ports?"
Reply to
Dr. Anton T. Squeegee

--- Assuming that the pullups are internal to the dialer you can do this:

+V | +-----+-----+-----+-----+ | | | | | [10K] [10K] [10K] [10K] [30K] | | | | | +--[10K]--1-----2-----3-----A---------|-\\ __ | | | | | | | >------>R1 | | | | | +---|+/ | | | | | | +--[10K]--4-----5-----6-----B---------|-\\ __ | | | | | | | >------>R2 | | | | | +---|+/ | | | | | | +--[10K]--7-----8-----9-----C---------|-\\ __ | | | | | | | >------>R3 | | | | | +---|+/ | | | | | | +--[10K]--*-----0-----#-----D---------|-\\ __ | | | | | | | >------>R4 GND | | | | +---|+/ | | | | | | | | | [10K] | | | | | | | | | GND | | | | | | | | +V | | | | | | | | | [10K] | | | | | | | | +---------|+\\ __ | | | | | >------>C4 | | | +---|-/ | | | | | | +---------------|+\\ __ | | | | >------>C3 | | +---|-/ | | | | +---------------------|+\\ __ | | | >------>C2 | +---|-/ | | +---------------------------|+\\ __ | | >------>C1 +---|-/ | [30K] _ _ The comparators are LM339s, the Rs and Cs are the row and column outputs to your dialer, and 1,2,3...D are the crosspoints of your switches.

-- John Fields Professional Circuit Designer

Reply to
John Fields

--- Somehow, (my fault) the schematic and text posted slightly garbled. They should look like this:

+V | +-----+-----+-----+-----+ | | | | | [10K] [10K] [10K] [10K] [30K] | | | | | +--[10K]--1-----2-----3-----A---------|-\\ __ | | | | | | | >------>R1 | | | | | +---|+/ | | | | | | +--[10K]--4-----5-----6-----B---------|-\\ __ | | | | | | | >------>R2 | | | | | +---|+/ | | | | | | +--[10K]--7-----8-----9-----C---------|-\\ __ | | | | | | | >------>R3 | | | | | +---|+/ | | | | | | +--[10K]--*-----0-----#-----D---------|-\\ __ | | | | | | | >------>R4 GND | | | | +---|+/ | | | | | | | | | [10K] | | | | | | | | | GND | | | | | | | | +V | | | | | | | | | [10K] | | | | | | | | +---------|+\\ __ | | | | | >------>C4 | | | +---|-/ | | | | | | +---------------|+\\ __ | | | | >------>C3 | | +---|-/ | | | | +---------------------|+\\ __ | | | >------>C2 | +---|-/ | | +---------------------------|+\\ __ | | >------>C1 +---|-/ | [30K] | GND _ _ The comparators are LM339s, the Rs and Cs are the row and column outputs to your dialer, and 1,2,3...D are the crosspoints of your switches.

-- John Fields Professional Circuit Designer

Reply to
John Fields

Typically you'd hook up either the row or column pins to a 4-bit port that is normally outputting a "high" on each pin. Hook the remaining 4 bits to 4 input pins.

Pull one of the output pins down to "low" and read all of the input bits. If one of the bits is also low, then that row-column corresponds to the key that is pressed.

A complication: If you are driving, say, columns with the four output bits, consider that if two keys are pressed in the same row then you'll have a direct path between an output pin at logic high and one at logic low. This is generally A Bad Thing. Add diodes or current-limiting resistors on the output pins. Alternately, you may be able to flip the "unused" column drivers over to an input state and set only one to be an output at a time.

And the usual issues with key bounce and multiple simultaneous key presses.

--
Rich Webb   Norfolk, VA
Reply to
Rich Webb

You need a DTMF chip that can have its keypad inputs grounded to activate. The MK5089 was such a chip. Most dialers today use row and column inputs in a 2 of 7 or 2 of 8 arrangement. Your row column keypad should be fine...can you simply not connect the pull-up resistors? Any link to the keypad manufacturer?

Reply to
Lord Garth

Thanks all. Actually DTMF chip (UM95089) I'm using is old, discontinued part. And it was really hard to find the datasheet around, lucky enough here, I got one :-). They have suggested keypad schematic(Figure 1) which I can't understand! I've uploaded the datasheet here

formatting link
, will you please have a look at this problem?

Thanks again

Reply to
Jack// ani

Lord thanks a lot for reply. I'm very sorry I didn't stated the problem clearly. Pullup resistors (20K -10K) are internal to the chip and are

*not* on my keypad. Please refer to page 5 of the datasheet. Keypad is just a simple arrangement of switches in 4x4 matrix, which is shorting the corresponding row and column. Problem here is after pressing the switch I've to connect the shorted terminal to ground, in order to generate a tone. I want to get the tones only by pressing switches itself. I know there are many chips around which can easily solve my problem, but I'm interested to do with this one.

Thanks again

Reply to
Jack// ani

You can do it like this:

Connect the keypad row lines to the UM95089 row inputs. Connect each of the keypad column lines to the base of an NPN switch (such as 2N3904), and ground each emitter. Connect each collector to one of the UM95089 column inputs. This circuit is shown for a 2x2 switch array below, where R1 and R2 are row inputs and C1 and C2 are column inputs.

.-----------o----------- R1 | | | | o | o |=|> |=|>

| o | o | | '---. '---. | | .---)-------o---)------- R2 | | | | | | | | | o | | o | |=|> | |=|> | | o | | o | | | | | '---o '---o | | | | | | --- --- .-v \\-. .-v \\--. | | | | GND------o-----)-----' | | '--- C2 | | '---------------- C1 (created by AACircuit v1.28.4 beta 13/12/04

formatting link

This circuit gives up a little noise margin, but as long as it is operated at room temperature or above and the keypad is close to the IC, this degradation should not cause a problem.

--
--Larry Brasfield
email: donotspam_larry_brasfield@hotmail.com
Above views may belong only to me.
Reply to
Larry Brasfield

--
Unfortunately, with the array of 16 SPST tactile switches you propose
to use, there\'s no way you\'re going to get what you want.
Reply to
John Fields

Excellent, this chip is a clone of our late '70's MK5089. You may ground any row and any column to produce DTMF which is perfect for electronic control of the dialer. You say your 2 of 8 keypad has internal pull-ups, Have you any idea of the value? You may be able to short the keypad pull-up resistors You're datasheet states that Vil has to be below .2 volts for it to be recognized as a low. If not, as John pointed out, you can fix this keypad with external logic in one of several ways. I would use an EPROM to fix this or buy a replacement keypad. This vendor has some hanging in his store:

formatting link

Jim Tanner can help you if you choose to call the store.

Reply to
Lord Garth

--
Very nice.
Reply to
John Fields

...

Thanks, John.

The datasheet specifies Vil as .2 VDD, meaning VDD/5. This is comfortably above the 0.65V to be expected at a biased base as long as VDD is 5V.

...

--
--Larry Brasfield
email: donotspam_larry_brasfield@hotmail.com
Above views may belong only to me.
Reply to
Larry Brasfield

The datasheet specified Vil as .2 volts max. I'd give it a shot though. Jack// ani, let us know how it does. If you don't get the row tones, you need to consider John's circuit.

You'd have no problem if you had a MK5087 or MK5092 tone dialer, these use a 2 of 8 keypad. Would you want me to look for one?

Reply to
Lord Garth

...

They give the value as 0.2 and the units as VDD. This is unusual, so I relied on the Vih spec, which ranges from 0.8 VDD to 1 VDD, to help make sense of that Vil spec. Also, a MOSFET threshold as low as 0.2V would be most unusual.

Welcome.

--
--Larry Brasfield
email: donotspam_larry_brasfield@hotmail.com
Above views may belong only to me.
Reply to
Larry Brasfield

I guess I misinterpreted that Larry. Are you saying Vil is .2*5 or 1 volt or less for a 5 volt supply to be a logical low? 20% of Vdd. That would be easy to reach.

Thanks.

Reply to
Lord Garth

Thanks all for your valuable input.

Reply to
Jack// ani

I earlier also posted it but never appeared on the board, so posting again.....

Million thanks Larry. It is working so fine, better then I expected.

Thanks a lot again.

Reply to
Jack// ani

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.