How to check 125 logic states...?

I'm designing a gadget which uses a small micro to look at the

0V/3.3V logic states on 125 lines. I need to turn it into serial data. It doesn't have to be very fast. There doesn't seem to be any electrical problem with stringing 16 8-bit parallel-serial shift registers (74HC165 etc) together, except that it'll take up a fair amount of board area. Does anyone know of a more 'elegant' way of doing it with a smaller number of bigger chips? Thanks!

Bob

Reply to
Bob Parker
Loading thread data ...

Hi Bob, my normal answer is to do it all with micros, but if you are looking at 125 dats bits, then you may need 4 x 40 pin micros, then you have to write the software to co-ordinate the data gathering.

I have strung 164 type chips over a distance of 5 meters, for large LED message boards. Just use a few bypass caps to shut them up. One per chip of course.

I often wonder if a PCB designed for serial/parallel Input (and or) Output shift registers, would be a handy thing.

Don...

--
Don McKenzie
E-Mail Contact Page:               http://www.dontronics.com/e-mail.html

Crystal clear, super bright OLED LCD (128x128) for your microcontroller.
Simple serial RX/TX interface. Many memory sizes.
http://www.dontronics-shop.com/product.php?productid=16460
Reply to
Don McKenzie

Allegro make some 32 bit serial/parallel shift registers. Means a special one-source chip though.

--
Regards,

Adrian Jansen           adrianjansen at internode dot on dot net
Design Engineer         J & K Micro Systems
Microcomputer solutions for industrial control
Note reply address is invalid, convert address above to machine form.
Reply to
Adrian Jansen

There's the On Semi MC14067 analog 16 channel mux/demux, also Vishay Siliconix's DG406B 16 ch analog mux. I've used it in the past successfully. The On Semi device is considerably cheaper from Farnell than the Siliconix chip.

Reply to
dmm

You could use 16-bit shift registers in SO package to halve your chip count and keep the area down (eg 74*676 etc).

Reply to
swanny

The 74xx674 is a 16bit parallel in serial out shift register, 24 pin package. If you can get it in a small SMD (doubt it) then you could save some space, otherwise just use the 165 et.al in the smallest SMD package you can get. If you are really strapped for space, consider doubled sided component mounting. Or if you are keen, then design a "module" using a dedicated PCB which does just that job, hen it can go over other SMD parts on your board to better utilise the space. Otherwise it's a large pin count PLD, FPGA, or micro, although that's just too much trouble I recon, and has the potential disadvantage of the part or package being discontinued in a few years (likely these days)

Dave :)

Reply to
David L. Jones

use programmable chips, program them to behave like shift registers. that way you can get more lines per chip with larger chips.

what's your input from? can it be arranged in a matrix, a 12x12 matrix would get you 144 inputs...

Bye. Jasen

Reply to
jasen

Thanks Don! In fact I was half way through writing an e-mail to ask your advice (if anyone knows about stringing lots of shift registers together it would be you with your big message displays!), then realized you'd see my question on the newsgroup anyway.

My micro just wants to output one clock pulse to grab each input state in sequence and decide what to do about it, so lots of shift registers are best suited to this application.

There are times when it would be handy to be able to input/output a lot of bits serially. Maybe a board like that would sell.

If that idea interests you, I found a Philips (who've changed their name to NXP Semiconductors) I2C chip with 40 I/O lines which could be handy, called a PCA9506. You can download the PDF file from

formatting link
I sorta considered using it for this project.

Cheers Bob

Reply to
Bob Parker

Thanks Don, Dave, Adrian, DMM, Swanny and Jasen! Unfortunately the inputs can't be arranged as a matrix. :-( There's a fair bit of space available on the board, but I didn't want to go ahead with a long string of 8 bit shift registers if there was a tidier way of doing it. I think it would only complicate things if I used micros programmed to behave like shift registers or analog switch chips. I've been burned by Allegro chips becoming obselete, making me reluctant to use their parts. The 74xx674 would be ideal but I can't find anyone selling the HC version, plus as Dave expected, they only seem to be available in the DIP 28 package. The 74xx676 seems to be equally scarce. Isn't electronics fun? :-)

Cheers Bob

Reply to
Bob Parker

Bob, If you can use boring old 74HC165's that would be the cheapest and simplest way to do it. They should cost less than $0.05 per input pin, will load the sensed circuit by less than 1 microamp and have a quiescent power draw of less than 80 microamps each chip. They're available in lots of different packages from multiple sources and should be a stock line from most distributors. You'll need 16 of them in series but that's less 1.28 milliamps of power being used to read your 125 input lines, making it probably the lowest power option as well.

Regards, Brenden Ede

Bob Parker wrote:

Reply to
Brenden

Thanks Brenden, I think you're right. :-) I've already been using 7 x 74HC165 to give me 56 inputs so I'll expand it to 16 of them... with a 0.1uF bypass cap on the power leads of each one as Don mentioned.

Cheers Bob

Reply to
Bob Parker

That's at full speed, so it'll be even much lower power than that given that he only has to clock it at a slow rate.

Dave :)

Reply to
David L. Jones

This can be done easily with latch shift registers. I don't see how it would be more elegant. You will find surface mount shift registers easily and they will be tiny. could do the whole thing well within 1" square on just one side of the board.

Reply to
Dac

They'd have to be awfully tiny shift register ICs to fit 16 of them into a 1" square area of the board, wouldn't they? I was planning to leave them inside their packages. :-)

Bob

Reply to
Bob Parker

I'd use surface-mount 8 bit buffers or latches with Tri-State outputs (eg; 74x573, etc) & mux them onto an 8 bit buss back to an 8 bit input port on the CPU. You could select which latch to red with 4 output bits from the CPU, & maybe 1 more output bit (connected to all the clock/enable inputs of your latches) to trigger a simultaneous capture from all your data lines. This type of scheme is cheap, compact, well-proven, & can be made to work reliably for sample rates of well past 20MHz.

No matter how slow your sample rate, you'll still need to build in decoupling caps (100nF monolithics) at the power pins of *every* chip, or you'll get ground-bounce, which wil cause random-looking data errors that will be a nightmare to debug.

--
   W          
 . | ,. w ,   "Some people are alive only because
  \|/  \|/     it is illegal to kill them."    Perna condita delenda est
---^----^---------------------------------------------------------------
Reply to
Lionel

Thanks for the idea Lionel, I can see its advantages and I'll add it to my mental collection of solutions to problems for future use. Unfortunately in this application, I don't have enough available micro port lines to use that configuration. Also the way the firmware's structured, it's much easier to output one clock pulse to read each captured bit in sequence as it steps through a lookup table. Thanks for the tip on putting a bypass cap right at each chip, as Don also suggested. This is something I learned about quite a long time ago. :-)

Cheers Bob

Reply to
Bob Parker

Try Texas instruments. They seem to carry all the weird 74xxx logic families & obscure latch/register/shifter functions:

If you can't spare 8 input bits for the suggestion I posted, you can simply add a single 8 bit parallel to serial shifter to it to convert the output to serial.

--
   W          
 . | ,. w ,   "Some people are alive only because
  \|/  \|/     it is illegal to kill them."    Perna condita delenda est
---^----^---------------------------------------------------------------
Reply to
Lionel

Thanks again I couldn't find any suitable devices with 16 inputs on the TI site. In addition, I couldn't find any supplier like Digikey, Mouser or anyone local who could sell me anything useful, whereas 74HC165s are plentiful and cheap. There's pressure from 'on high' for me to get a prototype working ASAP so I've already drawn 16 x 74HC165s into the schematic with dear old Protel 99SE (my 'favourite' piece of software) and I'm about to start making big changes to the original PCB artwork which currently has

7 x 74HC165s looking at 50 input lines. Better luck next time. :-)

Bob

Reply to
Bob Parker

Small FPGA?

Rudolf

Reply to
Rudolf

Just an idea, but could you possibly use 16 x OP AMPS configured as summing amplifiers with the inputs scaled to 1,2,4,8,16,32,64,128 (Im pretty sure you can get resistors close to those values in 0603 packages from Farnell) and feed the outputs into a PIC with 16 x A/D's like the PIC18F6720. With the inputs scaled that way you should be able to calculate which individual inputs are on or off according to the output voltage. This way you would need about 150 resistors, a couple of OP AMPS and the PIC which you need anyway, may work out cheaper in parts and might simplify your design and layout but would probably be harder to put together.

Best regards

AJ

Reply to
AJ

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.