Controlling several Solenoids

Discussion in 'General Electronics Chat' started by Reze, Sep 12, 2016.

  1. Reze

    Thread Starter New Member

    Oct 14, 2011

    I have a board that actuate a module with 10 solenoids. Those solenoids are 24V and Bi-stable. So I send a 24V pulse of 90 ms to open the solenoid and send anothe 90ms pulse but with changed polarization to close it.

    I wan't to connect several of those modules in cascade using a flat cable (for example), so I need a way to address the module I'm controlling.

    The first part is already working, so I can control the 10 solenoids in one module. How can I select the module I wan't to control? I have another 8 signals in the cable. I could use a relay and activate the relay of the module I wan't to control but that's seems to be horrible. There must be a better way of doing it.


  2. MaxHeadRoom


    Jul 18, 2013
    Do you activate all 10 solenoids at once?
    Also are the modules turned on or sequenced by manual operation or some automatic method?
    What is the current of a module?
  3. AlbertHall

    AAC Fanatic!

    Jun 4, 2014
    Do the modules have an 'enable' input which can enable or disable all the solenoids in that module?
  4. Reze

    Thread Starter New Member

    Oct 14, 2011

    No I activate one solenoid and then 90ms after another and so on. I can just activate one solenoid in one module and nothing more.
    I'm using na Arduino for now to control the solenoids. I have a Demultiplexer/Decoder to addres the correct solenoid but all of that electronic is in the board. The modules only have a litle board with a conector with two wires for each solenoid. So each module only need to check in those comands are for them.
    Each Solenoid use about 400mA when activated, but they are bi-stable so they only need to be activated for 90ms.

    I think that answer the 'Enable' input. For know it does not have but it's exactly what i'm looking for.

    Thanks for the help.

  5. MaxHeadRoom


    Jul 18, 2013
    Do you have to sequence switch them or at a random time?
  6. Reze

    Thread Starter New Member

    Oct 14, 2011
    No, it's ramdom. I can change any solenoid of any module at any time.

    As you can see I have one connector JP1 for the 24V.

    Another connector JP2 to control the solenoids, Anything can control this, for example an Arduino, Raspberry Pi, etc.
    The pins are 4 (S0 to S3) to select the solenoid for each Demultiplexer/Decoder, and the E1 and E2 pins (Probably I will need to separate them and change JP2 to a 12 pins connector).

    The U3, U7, U11 and U15 are 'Quadruple Half-H Driver', so each one can control 2 Solenoids (to open and close them).

    The output connector have 14 pins for the 7 solenoids of the selected module and 8 digital pins to address the module 2^8=256 modules max.
    So SV1 will be connected to the first module and the first to the second and so on.

    So what I need is a way in each module to not accept the comands for the solenoids if it's not their address.

    Thank you for the help

  7. marcf


    Dec 29, 2014
    I cannot make out any detail on your .png file. Could you attach the actual 'eagle' or whatever file?
  8. MrSoftware

    Senior Member

    Oct 29, 2013
    If you have a multiplexer on each module, then maybe you can front-end each multiplexer with and I2C (or mSPI?) module. That will give you the ability to address a whole pile of modules.
  9. KeepItSimpleStupid

    Distinguished Member

    Mar 4, 2014
    I'll pretend I know nothing and I want to activate 24 DC relay in a matrix form.

    What I might do:

    Use High side drivers for the row/column.
    Use something like a ULN2003 series chip for the low side
    Use an H-bridge for the Input. It would likely have a NOT enable and direction.
    So, one would set a high side driver, then a low side driver. Then, the direction would set the polarity and the NOT enable would deliver the pulse.

    It's possible you could incorporate a solenoid driver IC.

    You effectively have an x/Y position, a NOT enable and Polarity as inputs.

    You can reduce the inputs by using a BCD to decimal decoder driver for the address selects.
    So, you can select 16 things with 4 bits. You may want to make it 15 rows or 15 columns with 0 being off.