How to control 100 solenoids?!



  • I was wondering if there was anyone with experience in controlling a few hundred solenoids via the Duet WIFI? I have looked online on methods people use basic arduinos but it seems like a lot of the information is outdated. Any guidance into what expansions boards I can use would be super helpful!

    I would prefer to use the Duet architecture because it is so handy and I can post my findings here for future reference! ☺



  • Seems to be a very interesting topic! If you need to control the solenoids, the sensor inputs are also important and I would consider an FPGA based solution. Maybe you can tell a bit about your use case to answer your question better (what are your requirements for latency etc.)


  • administrators

    @JoergS5, do you need just on/off control, not PWM? How much voltage and current do the solenoids need?

    There are a number of solenoid driver chips with SPI interface, for example http://www.ti.com/product/DRV8860#.



  • @dc42 I think I just need on/off control. I am planning on buying maybe 100 of these guys: SOLENOID

    I think that chip would work...So I guess I would build my own breakout board with ~13 of those chips and hook it up to the duet somehow?

    @JoergS5 My goal is to make a machine that separates good and bad tea leaves for my friends tea farm. Very similar to THIS machine but not nearly as big and not nearly as fast; just automated and kinda slow. I would say the actuation frequency should be less than 100ms I doubt I will need it faster than that.

    My friend doesn't have $250,000 dollars to buy one those, but I figured we could hack one together for under $5,000. 😛



  • Would that not be a classical application for a PLC rather than a motion controller ?

    Regards
    Jan


  • administrators

    @injoi9000 said in How to control 100 solenoids?!:

    @dc42 I think I just need on/off control. I am planning on buying maybe 100 of these guys: SOLENOID

    I think that chip would work...So I guess I would build my own breakout board with ~13 of those chips and hook it up to the duet somehow?

    You could daisy chain all 13 and drive them from the temperature daughter board connector on the Duet, or from the same SPI pins on the expansion bus.

    Here's another octal solenoid driver: https://www.st.com/resource/en/datasheet/l9822e.pdf. And here's a 16-channel one: https://www.nxp.com/docs/en/data-sheet/MC33996.pdf. Note, with these two the inductive back EMF when the solenoid is released will be dissipated in the device. So you need to make sure that the amount of this energy is not excessive, or else use external flyback diodes. The TI part has internal flyback diodes. Flyback diodes slow down the solenoid turn-off, but you can mitigate that by connecting the flyback diodes to a separate rail or by connecting Zener diodes in series with them.

    @JoergS5 My goal is to make a machine that separates good and bad tea leaves for my friends tea farm. Very similar to THIS machine but not nearly as big and not nearly as fast; just automated and kinda slow. I would say the actuation frequency should be less than 100ms I doubt I will need it faster than that.

    How will you tell the difference between good and bad leaves?



  • @dc42 I am using a color spectrum analysis from the openCV library.

    Okay I think I understand. I remember those DRV8860 drivers from the old RAMPS boards a few years back. I could daisy chain all the DRV8860's together on my own little breakout board, attach the signal pins to the outputs of the DRV8860's, then I connect the inputs to these SPIO pins:

    0_1553246176210_Capture.PNG

    How do I send my serial signal from my computer/web interface/gcode file to those pins to control the DRV8860's?

    @snoozer It is 2019, PLC is expensive, inflexible, heavy, clunky, and it is just outdated tech. I also want to control the whole system through the duet and off the shelf IC's. The duet and arduino in general is awesome to work with.


  • administrators

    I presume you will be running OpenCV on a Raspberry Pi. In which case, if it is just the solenoids that you need to control (no stepper motors etc.) then it would be simpler to use the SPI output on the RPi to drive those chips and not use a Duet.



  • @dc42 hmmm that's a good idea. Yea I am using a raspi for the openCV. I guess I will just use the duet to control the conveyor belts and then the SPI pins to control the solenoids.

    Is there anything else I need to put in series with those solenoids to the DRV8860's to prevent them from burning out my chips?
    '



  • @dc42 but let's say I did decide to use the duet........for educational reasons.....how would I send signal to those SPIO pins?


  • administrators

    You would use the SharedSPI library, the same way that SPI temperature sensors do. See function DoSpiTransaction in https://github.com/dc42/RepRapFirmware/blob/dev/src/Heating/Sensors/SpiTemperatureSensor.cpp.



  • @injoi9000 Nice project, good luck with it!
    For deciding good from bad tea, I found some ideas here for tobacco: https://www.tomra.com/en/sorting/food/food-technology maybe helpful ideas. Spectroscopy may be the easiest to start.



  • @injoi9000 If you're only controlling a conveyer belt, why not just hook up a simple driver (stepper driver, mosfet or ssr) to the raspberry pi? There's plenty of GPIO. I think the Duet might just add a lot of unneeded complexity, and the raspberry pi should be capable enough to do everything.

    Even if it's for educational purposes, you're going to need to jump through a lot of hoops and make it do something it's not really made to do



  • @devleon Yea I am going to use the gpio for the solenoids. Hmm I just got in these parts:
    https://www.mouser.com/ProductDetail/595-DRV8860APW

    Uhh am I supposed to send these off to a custom pcb house to get soldered to a board? The chip is tiny and the pins are even smaller...
    0_1553559511418_Capture.PNG



  • @joergs5 oh yea definitely. My friend got a quote from there and they said it would be more than $250k!! I am sure I can make a micro version for wayyy cheaper.



  • You can buy little SMD adapters that you can solder chip and headers to. Given you can use SPI then maybe you could use mcp23s17 + uln2803a which are available in DIP packages if thats important to you.



  • @injoi9000 to find out good and bad tea, you can send some thousands of images to amazon mechanical turk for classification, then train a neural network (e. g. tensorflow) and use it to separate them. As spectral light sensors, AS7262 and AS7263 chips may be useful.



  • @joergs5 I don't really know much about neural networks so using tensorflow might be a bit of a stretch at this point 😓 I was planning on just taking a picture, doing spectral analysis on that whole picture, I can pass that matrix through an effective bandpass filter, then calculate the gradients at the points that didn't pass, then figure out the bad leaves' location. Use the speed of the conveyor with some trajectory analysis and then shoot them out of the sky.



  • @bearer thanks! I am going to pick up a few of these to prototype and then maybe i'll see if I can get some cheap boards from china for the 100 solenoids:

    https://www.mouser.com/ProductDetail/872-204-0004-01

    I think I'm going to stick to daisy chaining the DRV8860's because I think I can get my head around that one. Still gotta figure out how to execute the SPI commands. Would you know any good guides using python?


  • administrators

    @injoi9000 said in How to control 100 solenoids?!:

    @bearer thanks! I am going to pick up a few of these to prototype and then maybe i'll see if I can get some cheap boards from china for the 100 solenoids:

    https://www.mouser.com/ProductDetail/872-204-0004-01

    Have you seen the price of those? It would be cheaper to design your own PCB and have the PCB made in China. There are several companies that offer low cost prototype PCB manufacture, e.g. Itead and Seed Studio.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.