multiple solenoid valves working together ( multiple pins to be set as output )

Hi all.....

I have a question about how can i set multiple pins in the arduino to be set as outpout..... is there registers such as Atmega16 or what???

please help

I have a question about how can i set multiple pins in the arduino to be set as outpout..... is there registers such as Atmega16 or what???

Yes, there are.

Now, what are you trying to do? Why don't pinMode() and digitalWrite() meet your needs? They do for nearly everyone else.

this of for my graduation project.... i have around 100 solenoid valves therefore i was hoping to have an easy way to program it so that i don't waste time ...

i have around 100 solenoid valves therefore i was hoping to have an easy way to program it so that i don't waste time ...

I don't seem to recall which Arduino has 100+ digital pins. Nor, do I remember you mentioning which one you are using.

i will be using 2 mega and one uno ... that's not the issue....

that's not the issue....

OK. Clue me in, then, on what IS the issue.

Yes you can manipulate I/O pin (set mode, read bits, write bits) by using direct port manipulations.

Here is a write up that uses a 328P based board such as a Uno showing how to use port commands.

Not that the mega based boards have different and more pin mapping then a Uno board so you have to figure out which port names control which arduino pin names. This worksheet should help:

https://spreadsheets.google.com/pub?key=rtHw_R6eVL140KS9_G8GPkA&gid=0

Lefty

my issue is that how can i program multiple pins to be set as an output without the need of writting, pinMode function 100 times and digitalWrite function 200 times if i want the 100 solenides to be tuned on and then off..

retrolefty:
Yes you can manipulate I/O pin (set mode, read bits, write bits) by using direct port manipulations.

Here is a write up that uses a 328P based board such as a Uno showing how to use port commands.

Arduino Reference - Arduino Reference

Not that the mega based boards have different and more pin mapping then a Uno board so you have to figure out which port names control which arduino pin names. This worksheet should help:

https://spreadsheets.google.com/pub?key=rtHw_R6eVL140KS9_G8GPkA&gid=0

Lefty

Thanks..... i will check them and i will let u know :slight_smile:

my issue is that how can i program multiple pins to be set as an output without the need of writting, pinMode function 100 times

Perhaps a for loop would work. 4 lines of code, instead of 100.

and digitalWrite function 200 times if i want the 100 solenides to be tuned on and then off..

Are you planning on banging all 100 solenoids on and off at the same time? If so, you can do that by connecting them all to the same pin, and use just two statements to turn them all on or off.

If they are to be turned on and off at different times, then you will still have to write all the code to make that happen. No magic bullets.

PaulS:

Perhaps a for loop would work. 4 lines of code, instead of 100.

how can i do that? is like this

for( i ; i=45; i++)
{
pinMode( pinname , OUTPUT)
}
then another for loop for the second and third arduinos?

Are you planning on banging all 100 solenoids on and off at the same time?

lol… yes for example at the beginning of my graphical water show i want all the solenoids to be opened at once so that the water falls as a curtain and then i want to manipulate them so that they can give me a desired drawing or a letter etc…

Hani:
then another for loop for the second and third arduinos?

lol.... yes for example at the beginning of my graphical water show i want all the solenoids to be opened at once so that the water falls as a curtain and then i want to manipulate them so that they can give me a desired drawing or a letter etc...

Nothing you're saying so far gives me any confidence that either the hardware or software required for this project is within your capabilities.

For what it's worth, I would have thought that a single Arduino using shift registers to drive your large array of driver circuits would be the most practical approach, since it avoids needing to synchronise activities across multiple Arduinos. Have you designed the driver circuits yet and figured out how you're going to build and then power 100 of them?

  1. what do u mean by not within my capabilities?

  2. what does "single Arduino using shift registers to drive your large array of driver circuits" mean? or how can i use a single arduino to control such number of solenoids?

Hani:

  1. what do u mean by not within my capabilities?

  2. what does "single Arduino using shift registers to drive your large array of driver circuits" mean? or how can i use a single arduino to control such number of solenoids?

I think the second question makes my point about the first.

1/ I mean that your explanation of what you're planning to do gives me no confidence that you understand the software and hardware design issues that you would need to solve.

2/ I mean the number of Arduinos is one.The Arduino uses shift registers (probably more than one) to drive multiple outputs from a single pin. The outputs will need to be amplified via driver circuits before they would be able to power your solenoids. That means you're needing a lot of driver circuits. Which implies you need to either spend a significant amount of money buying them, or design and build your own. Given your question "what does it mean" I'm guessing that you would not find it easy to design and build your own driver circuits.

if what u mean by the driver circuit is not the mosfets and bybass diodes which will be connected to the solenoids then i have no idea of what drivers mean.... if it is what u mean then there is no problem with the drivers ...... the problem is with the shift register stuff..... how can i program multiple outputs on one pin? that's what i meant by question number 2 :slight_smile:

and by the way maybe the use of mosfets not the best idea therefore we are planning on using solid state relays

Look at this tutorial on shift registers to see how to output multiple on/off signals using a minimum number of pins. Add more shift registers until you have enough outputs to control your solenoids.

Hani:
the problem is with the shift register stuff

What is the problem with 'the shift register stuff'?

Hani:
and by the way maybe the use of mosfets not the best idea therefore we are planning on using solid state relays

You're going to buy one hundred SSRs, really?

UKHeliBob:
Look at this tutorial on shift registers to see how to output multiple on/off signals using a minimum number of pins. Add more shift registers until you have enough outputs to control your solenoids.

http://arduino.cc/en/Tutorial/ShiftOut

thanks

PeterH:

Hani:
You’re going to buy one hundred SSRs, really?

well what do u suggest? … i think u are asking questions more than answering and helping me!!

Hani:
well what do u suggest? .... i think u are asking questions more than answering and helping me!!

I've already explained how I'd go about it and what you need to know, but you apparently didn't follow, and didn't even manage to Google the terms in my description which you didn't understand. And yes, I'm questioning your decision to use 100 SSRs and I wonder whether you have budgeted for that sort of cost, because it seems like rather expensive overkill to me.