My team is adding t-shirt cannons to our robot for the offseason, and we are using sprinkler valves as solenoids to fire them. We have little experience with pneumatics, we managed to get the compressor working with no trouble; however, we don’t know the proper way to connect the solenoid so that we can fire. We tried connecting it to a Spike and switching the spike on, but it was unsuccessful. What is the correct way to do this?
There is a solenoid module and breakout for the cRio (much like the analog) to which solenoid can be connected. Inside of the program they will need to be fired using the Solenoid class.
A spike should work for a typical valve.
Check to make sure that you can actuate the solenoid in the first place (with a battery).
Check the specs for your valve. Does it use 12V, or 24V (unlikely)?
Did you code it correctly? If you are not sure, look at the colors on the spike. It should change between red and green for reverse and forward. Yellow means that it isn’t doing anything
this has been on our team’s bucket list for some time too, but we never get around to it.
Thanks, we will definitely try that, we would’ve done that earlier, but we are in the process of moving all of our parts so we don’t have the breakout right now.
If you’re using valves that aren’t the typical FRC type (like sprinkler valves), I’d recommend using a spike relay instead of the solenoid module/breakout. Then you would use the relay class/vi instead of the solenoid one when you program it.
Like Daniel said, you should start by seeing if it’s working. You don’t need to connect the solenoid to a battery for that.
If you look at the solenoid, you should find that it has to small buttons on top. Pressing them triggers the solenoid, there’s one button in charge of opening each output. Note, this only works when the system is pressurized and there’s no place for the air to escape through other than the solenoid’s release openings. Leaks won’t interfere with the test as long as they’re not huge, so don’t worry about making it super-secure (save your teflon for the actual system). I can’t find a photo right now, I’ll keep looking.
Hook it up to a system with a piston (one input tube coming from the compressor, either directly or through a regulator, two output tubes, one to each side of the piston). Start the compressor with a battery. When it’s pressurized, press a button and see if the piston works. If not, press the other. If it still doesn’t work, you have a faulty solenoid.
As for wiring, it’s usually best to use the cRIO’s relay module like parth suggested. You can use a spike if you want, but then you have to have one for each side so you can both open and close. You’d still have to wire both sides with the cRIO, but it’s way easier since both connections are already there. Make sure you got polarity right! Polarity is confusing in solenoids, more than other electrical components you often use.
Could you post a picture of the system? Maybe there’s a problem we can’t find with your description, but we could see in a picture.
Most sprinkler valves I have seen are 24v AC (Alternating Current) like the power in your house. The robot runs on 12V DC, and the power distribution board also has a 24V DC power supply built in to run the cRio.
I did do some searching around, and it appears that there are AC valves that actually work with DC, but may or may not work with the valve you have. (http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=75553)
(Remember applying voltages to components outside their specifications you are risking failure, and if on a production bot, would not pass inspection) This is not a smart decision, but it may work.
So you can test straight with 12v or 24v dc power and see if it works, if it does, then you can look at making it work from the bot.
As for wiring with a spike, review team 358 documents here. http://team358.org/files/pneumatic/Pneumatics-StepByStep-cRIOversion.pdf
I could cut and paste the diagram here, but they have done the hard work and deserve the credit.
Also, is there some time of sensor that gives feedback on what psi the compressor is at? We want to be able to adjust how far we can shoot the shirts by changing how much pressure is in the tanks.
I can say that the solenoid does work, we were able to fill up the air tanks with the compressor, and fire a t-shirt a very good distance by connecting the solenoid directly to a battery
I’ve found out that it is in fact a 24v valve, what would you guys suggest based on that?
As far as I know, there’s no way of getting 24V except hogging the cRIO’s power, and I wouldn’t suggest that. Is there a way for you to get a 12V one?
If you were able to successfully operate the valve using the KoP 12V battery, you should be able to do it with a spike relay, wired the same way your compressor is set up.
From the link I posted, they were talking that they were reliably firing the solenoids with 9vdc batteries, so I would wire it with a spike to the 12v battery. Let it run, and monitor how warm it gets, just to watch for early failure.
Not sure how much to spend on an analog pressure sensor, but we use these in industry. http://www.ifm.com/products/us/ds/PN2024.htm with good success.
As of right now we’re open to anything. We’re actually planning on building 4 cannons, but we only have one right now. If its possible we would like to get the 24v one working though
Working with the 24V isn’t different than 12V, and like Scott said, if it worked with the battery it’ll work on the robot. The thing is since you’re not using the solenoid’s specifications it might fail or work poorly. Also, it’s bad practice to not supply the component’s specifications, that’s why I suggested getting another.
Other than the tips in my original post, there’s not much I can say, based on your description. Do you think you could post a picture of the system you built?
Do you guys know of a way to use a non spike relay on the bot? We only have two working ones and one is on the compressor, we want to have 4 cannons and our team is short on cash so we really don’t want to spend the $35 for each new spike
I won’t be able to post a picture today because I don’t have access to the robot right now. It’s at another members house,I’ll ask him to post one later today
In terms of code, I am using Java commandbase. I have “public static Relay cannon = new Relay(4);” in RobotMap. I also have a command setup to fire. In the initialize i’m doing “RobotMap.cannon.set(Relay.Value.kOn);” where cannon is the name of the Relay and RobotMap is the place where it is defined. I can verify that the command is running because I have a debug statement which is printing when I push the button to run it.
Using kOn is turning both sides of the relay on, which won’t cause the solenoid to fire. You want to use kForward which sets the + side to 12v and the - side to ground.
Alternately, you can set the direction to forward in the constructor and then use kOn.
I’m reading that spikes can only switch 12v, which is why I believe that it didn’t work for us.
You mentioned earlier, and I’m reading here Team358.org - Robotic Eagles - FIRST® Robotics Competition that 24v solenoids can be run through the cRIO power. Are you familiar with how this is done?