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

Discussion in 'Embedded Systems and Microcontrollers' started by mfr, Jan 29, 2015.

  1. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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 !
     
  2. John P

    AAC Fanatic!

    Oct 14, 2008
    1,634
    224
    I have no idea what "I need a 12x12 matrix, analog" means. What's being controlled?
     
  3. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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).
     
  4. djsfantasi

    AAC Fanatic!

    Apr 11, 2010
    2,809
    834
    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?
     
  5. John P

    AAC Fanatic!

    Oct 14, 2008
    1,634
    224
    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.
     
    mfr likes this.
  6. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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.

    Answer: Yes

     
    • u2.jpg
      u2.jpg
      File size:
      31.3 KB
      Views:
      46
  7. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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...


     
  8. ScottWang

    Moderator

    Aug 23, 2012
    4,855
    767
    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.
     
  9. mfr

    Thread Starter New Member

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

     
  10. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
  11. ScottWang

    Moderator

    Aug 23, 2012
    4,855
    767
    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.
     
    mfr likes this.
  12. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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

     
  13. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    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.
     
    mfr likes this.
  14. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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!!!


     
  15. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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).
     
  16. kubeek

    AAC Fanatic!

    Sep 20, 2005
    4,670
    804
    That doesnt really matter, if you want the points to move you need to update the registers anyway.
     
  17. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    Typo?

    Cd4015 vs CD4051?

    Thanks !

     
  18. mfr

    Thread Starter New Member

    Apr 24, 2011
    19
    0
    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 !


     
  19. ScottWang

    Moderator

    Aug 23, 2012
    4,855
    767
    CD4051 : 8-Channel Analog Multiplexer/Demultiplexer.
    CD4067 : 16-Channel Analog Multiplexer/Demultiplexer.
     
    mfr likes this.
Loading...