View Full Version : Firing two solenoids together
Jon Stratis
17-02-2015, 09:55
Coming to CD for a little thought experiment...not really an issue for my team, but something noticed during testing.
Say you have two pistons that you always want to fire at the same time. There are a couple of common ways to do this, however each one has its drawbacks. First, you could use a T fitting to plumb both pistons to the same solenoid. They'll fire at the same time, but you're relying on the airflow through that single solenoid to fill both pistons, which may be slower than you want. So, you use two solenoids, one for each piston. Air flow is increased, and you probably just set your programming up to fire them both, one right after the other in the code. In most cases, this is probably good enough.
But what if that millisecond delay from one solenoid command to the next (plus any overhead in sending the messages over two separate CAN xommands) caused a noticeable and troublesome difference in how the pistons move? How do you get around this? Is there a way to sync the commands so the roboRIO sends both of them to the PCM in the same CAN command, and have the PCM updated them both simultaneously? Can you hook up both solenoids to the same port on the PCM so they both operate off the defensible, and program it as though it was just a single solenoid (are there concerns about current draw from a single port, or is it ok?)? Do you switch to controlling the solenoids through a relay, and if so how do you handle 24V solenoid?
Read the lines under table 4-4 in the game manual:
*Multiple low-load, pneumatic solenoid valves, electric solenoids or CUSTOM CIRCUITS may be connected to a single relay module. This would allow one (1) relay module to drive multiple pneumatic actions or multiple CUSTOM CIRCUITS. No other electrical load can be connected to a relay module used in this manner.
So, if you use a spike instead of the PCM to switch this, no problem.
JamesCH95
17-02-2015, 10:29
Coming to CD for a little thought experiment...not really an issue for my team, but something noticed during testing.
Say you have two pistons that you always want to fire at the same time. There are a couple of common ways to do this, however each one has its drawbacks. First, you could use a T fitting to plumb both pistons to the same solenoid. They'll fire at the same time, but you're relying on the airflow through that single solenoid to fill both pistons, which may be slower than you want. So, you use two solenoids, one for each piston. Air flow is increased, and you probably just set your programming up to fire them both, one right after the other in the code. In most cases, this is probably good enough.
But what if that millisecond delay from one solenoid command to the next (plus any overhead in sending the messages over two separate CAN xommands) caused a noticeable and troublesome difference in how the pistons move? How do you get around this? Is there a way to sync the commands so the roboRIO sends both of them to the PCM in the same CAN command, and have the PCM updated them both simultaneously? Can you hook up both solenoids to the same port on the PCM so they both operate off the defensible, and program it as though it was just a single solenoid (are there concerns about current draw from a single port, or is it ok?)? Do you switch to controlling the solenoids through a relay, and if so how do you handle 24V solenoid?
Read the lines under table 4-4 in the game manual:
So, if you use a spike instead of the PCM to switch this, no problem.
::rtm::
Jon Stratis
17-02-2015, 10:35
Read the lines under table 4-4 in the game manual:
So, if you use a spike instead of the PCM to switch this, no problem.
Yup, I'm well aware of the applicable rules... I'm not aware of any rule keeping us from running two solenoids from a single port on the PCM, but I don't know if doing so would cause problems for the device. Running multiple ones from a spike is fine, as you said, but spikes are 12V devices, so what do you do if you're using a 24V solenoid?
rich2202
17-02-2015, 10:43
IMHO, the potential delay of the electrical system is dwarfed (on the time scale of electrical signal delay) by the tolerances of the mechanical system.
Even if both solenoids fired at the exactly the same time, there would be a difference in timing due to mechanical movement (opening/closing of the valve).
Similarly, even if you had it T'd off one solenoid that could instantaneously pressurize lines of the exact same length, there would be mechanical differences of the pistons themselves that would make one move faster than the other.
I'm not aware of any rule keeping us from running two solenoids from a single port on the PCM
R42 says one (pneumatic) solenoid (valve) per PCM channel.
Jon Stratis
17-02-2015, 10:57
IMHO, the potential delay of the electrical system is dwarfed (on the time scale of electrical signal delay) by the tolerances of the mechanical system.
Even if both solenoids fired at the exactly the same time, there would be a difference in timing due to mechanical movement (opening/closing of the valve).
Similarly, even if you had it T'd off one solenoid that could instantaneously pressurize lines of the exact same length, there would be mechanical differences of the pistons themselves that would make one move faster than the other.
I would have thought the same thing. We were careful with our system, and added flow control valves so we could manually adjust the speeds of the two pistons to match, and they do, in fact, match. But we noticed on was starting up before the other. Programming switched the two lines of code, and we saw a corresponding change in the motion of the pistons. It's not much, and doesn't really affect how our system works, but it got me thinking.
R42 says one (pneumatic) solenoid (valve) per PCM channel.
Good catch. I swear, I spent 15 minutes looking for this rule this morning, but somehow couldn't find it. Turns out I was looking in the wrong sections... It's in power regulation, not controls or pneumatics!. I had even searched for "PCM", but the table spells it out instead of using the abbreviation like in other locations. I can't wait until Wednesday and the blessed Sleep it'll bring.
Anyways, the question still stands... How do we get 24V solenoids to trigger at exactly the same time?
JamesCH95
17-02-2015, 11:07
Anyways, the question still stands... How do we get 24V solenoids to trigger at exactly the same time?
Several mechanical control valves could be ganged together and switched by a solenoid. No 24V required.
Or, simply use 12V solenoids: http://www.mcmaster.com/#61975k55/=vy77am
rich2202
17-02-2015, 11:19
R30 allows a Custom Circuit to create 24 V.
Per R42, a Relay Module can control multiple Pneumatic Solenoid Valves.
Except for the possibility of R44, I couldn't find anything that would prevent a Relay Module from switching 24 V.
The PWM Port can control the Relay.
JamesCH95
17-02-2015, 11:53
R30 allows a Custom Circuit to create 24 V.
Per R42, a Relay Module can control multiple Pneumatic Solenoid Valves.
Except for the possibility of R44, I couldn't find anything that would prevent a Relay Module from switching 24 V.
The PWM Port can control the Relay.
[R41] B
Spikes are the only relay modules allowed. Maximum operating voltage is 16V. Methinks that might not end well.
[R41] B
Spikes are the only relay modules allowed.
In this context yes, presuming that the pneumatic solenoid in turn controls an actuator. It's OK to use other relays for non-actuator items, such as lights and sensors.
Also, back to the original problem. If you can accept a momentary inequality, perhaps you could do something like:
Open Valve 1
Open Valve 2
Close Valve 1
Open Valve 1
Assuming that opens and closes each take 1 time step, (and they may very well have different time delays), at the next time step, each valve will be open and will have been open for three steps. By adding a short pause either before or after "Close Valve 1", you should be able to get them synchronized. Do the same thing in reverse at the other end of the run.
vBulletin® v3.6.4, Copyright ©2000-2017, Jelsoft Enterprises Ltd.