Looking for a way to output 144 Analog Channels (matrix)

Thread Starter

mfr

Joined Apr 24, 2011
19
0favorite
I need a 12x12 matrix, analog. I've been searching for days and found 2 ways that could work, but not sure about implementation:

  1. Using shift registers like in: http://tronixstuff.com/2011/08/26/tutorial-maximising-your-arduinos-io-ports/

  2. 74HC595 Multiplexing with lots of ICs 20+ IC not that attractive of an idea
Questions:

1.How to implement some basic DAC with one setting controlling all channels' output levels simultaneously.​

  1. I need 5-20 volts out, 0.5-1 micro-second resolution (for square wave pulses)

  2. Pulse Width is (PW in image) can range from 10-100 uS and Pulse Period is (PP in image) can range from 10-100 uS. This needs to be achievable in Arduino software (or similar micro controller - open to other micro controllers as well. Is this resolution within Arduino's clock ability? Do I need to move to a faster micro controller?

  3. I could divide the grid say in 36x36 blocks (4 of them) and have them scan - raster simultaneously, therefore asking less performance from the Arduino...
The image attached indicates the type of pulse I need to output.

*The final result needed is to produce geometrical patterns, moving around a matrix of analog output devices. The pulse info is 'the experiment'. This is from an old lost project I'm trying to figure out how to recreate.

- I'd like the pulse parameters to be precise and consistent
- I'd probably prefer using shift registers



Thanks for help !
 

Attachments

Thread Starter

mfr

Joined Apr 24, 2011
19
Electrodes for skin stimulation for pain management. 12x12 = 144 electrodes (same as a lightbulb).

The waveform (pulsed) is to achieve a certain level of conductivity (adjustable).
 

John P

Joined Oct 14, 2008
2,025
If I'm understanding this right, the proposal is a 12x12 matrix of electrodes, which have to source and sink small currents at up to 20V.

You can do this in a reasonably straightforward way with 12 sources in the form of PNP transistors or P-chanel FETs or maybe integrated drivers like the Allego A2982. Then there would be 12 sinks which could be NPN's or N-channel FETs, or ICs like the ULN2003. You could indeed supply the logic input via 74HC595 shift registers, and use only a few processor pins--data, clock, strobe and maybe an output enable. But I'm not sure that this is what's needed. Would the processor have to control the input voltage from 5 to 20V? That's possible too.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Hi,

Thanks for suggestion. I have the original output circuit, it is interesting as it provided for return path via adjacent electrodes. One rule was that 2 adjacent electrodes are never simultaneously 'ON'. See image attached. However it calls for a impossible to find Analog Demux. Unless U1 on diagramm is a 'Block' of many IC's... The original design broke the array into four 6x6 matrixes.

If I'm understanding this right, the proposal is a 12x12 matrix of electrodes, which have to source and sink small currents at up to 20V.
Answer: Yes

You can do this in a reasonably straightforward way with 12 sources in the form of PNP transistors or P-chanel FETs or maybe integrated drivers like the Allego A2982. Then there would be 12 sinks which could be NPN's or N-channel FETs, or ICs like the ULN2003. You could indeed supply the logic input via 74HC595 shift registers, and use only a few processor pins--data, clock, strobe and maybe an output enable. But I'm not sure that this is what's needed. Would the processor have to control the input voltage from 5 to 20V? That's possible too.
 

Attachments

Thread Starter

mfr

Joined Apr 24, 2011
19
Well, I meant to say that in theory one could replace the output load by an lightbulb... Not sure why I thought it would me it simpler to understand.... My mistake.

My apology, I meant four 6x6 not 36x36...


I don't understand the "same as a lightbulb" comment. What is the same? And then, is it 12x12 or four 36x36? Did you mean 6x6?
 

ScottWang

Joined Aug 23, 2012
7,397
One block diagram of the 6 to 36 data selector maybe like this:
1. CD4067 *2
2. CD4051 *1
3. 74HC138
Using three output pins of 74HC138 to enable the CD4067 and CD4015.
Using 2 input pins of 74HC138 to be the 2 inputs of the block diagram.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Thanks, let me get into that.

One block diagram of the 6 to 36 data selector maybe like this:
1. CD4067 *2
2. CD4051 *1
3. 74HC138
Using three output pins of 74HC138 to enable the CD4067 and CD4015.
Using 2 input pins of 74HC138 to be the 2 inputs of the block diagram.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Thank you !

I can maybe set the goal a bit less ambitious at 100 outputs...

I'm drawing up the schematics for the solution with CD4067 *2 - CD4051 *1 and 74HC138

If you using that then you need 6 pins to select the 36 inputs, and one pin to do the common I/O, so 32-6-1=25, you only have 25 pins left, if you want to do that then the 32 pins is not enough to reach 36 I/O channels, so you still need to adding some other I/O chips.
 

kubeek

Joined Sep 20, 2005
5,794
How many outputs do you need active at a single time? Is the the output voltage same for all the outputs?
Assuming arbitrary number of active ports, you coud use a shift registers like for example 74HC4094. I´d connect six strings of three chips in series, which will give you the required 144 outputs. Then it needs only 2.4MHz capable SPI port for each string to get 10us pulse period. ATxmega I think has enough ports to do this, and they are fast enough. Also with DMA and events the patterns could be loaded automatically into the peripherals.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Hi,

I think if we break the 144x144 into four 36x36 then i can have simultaneous 'raster' like scanning of the four 36x36 's one one dot per 36x36 is on at a time - check the drawing closely .... i think it says that anyways.

Output voltage same across, BUT the current is not, since skin conductivity will change as it is being excited. Hence the pulse streams. The skin conductivity may do all kinds of things as it is variable. I have a diagram of an output stage that uses the adjacent electrodes as drains to the one being active.

thanks!!!


How many outputs do you need active at a single time? Is the the output voltage same for all the outputs?
Assuming arbitrary number of active ports, you coud use a shift registers like for example 74HC4094. I´d connect six strings of three chips in series, which will give you the required 144 outputs. Then it needs only 2.4MHz capable SPI port for each string to get 10us pulse period. ATxmega I think has enough ports to do this, and they are fast enough. Also with DMA and events the patterns could be loaded automatically into the peripherals.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Apology, my wrong:

"one one dot per 36x36 is on at a time" is wrong. I thing there may well be a few dots ON at the same time, but not adjacent (software limited rule).
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Typo?

Cd4015 vs CD4051?

Thanks !

One block diagram of the 6 to 36 data selector maybe like this:
1. CD4067 *2
2. CD4051 *1
3. 74HC138
Using three output pins of 74HC138 to enable the CD4067 and CD4015.
Using 2 input pins of 74HC138 to be the 2 inputs of the block diagram.
 

Thread Starter

mfr

Joined Apr 24, 2011
19
Hi,

The voltage may be controlled by processor or just by a knob...

I'm using a Rasberry Pi 2 and trying to build the 1st draft schematics.

I'm also hoping to use the adjacent electrodes to sink the currentsinstead of using a ground plane around the electrodes.

Thanks !


If I'm understanding this right, the proposal is a 12x12 matrix of electrodes, which have to source and sink small currents at up to 20V.

You can do this in a reasonably straightforward way with 12 sources in the form of PNP transistors or P-chanel FETs or maybe integrated drivers like the Allego A2982. Then there would be 12 sinks which could be NPN's or N-channel FETs, or ICs like the ULN2003. You could indeed supply the logic input via 74HC595 shift registers, and use only a few processor pins--data, clock, strobe and maybe an output enable. But I'm not sure that this is what's needed. Would the processor have to control the input voltage from 5 to 20V? That's possible too.
 
Top