Log in

View Full Version : Pneumatics Programming


KWalsh
18-02-2004, 22:11
Hi,

Can someone tell me how to go about programming multiple pneumatics? And how to assign them buttons on the joystick? Newb question brought to you by Team 1191, if someone could help it would be greatly appreciated, thanks

KenWittlief
18-02-2004, 22:15
what do you want them to do? usually you program each solonoide to trigger on a different joysitck button, or switch on a custom control box.

Astronouth7303
18-02-2004, 22:21
We're doing a multi-pos. system, but yes, same thing.

KenWittlief
18-02-2004, 22:32
have you seen the thread on multipositioning with pneumatics? I think most of the details were covered there.

Chris Fultz
18-02-2004, 22:46
Check the White Papers section also, in the Technical group.
There is a sketch of a layout circuit -

ngreen
18-02-2004, 23:04
We programmed our last year to extend when we held one button. Makes it both extend and turns the other solenoid on. And stop when we let go. Retract was the same, just on a different button. As for programming specifics I can't answer anything.

Astronouth7303
19-02-2004, 07:36
Yes, That is simlest.

Our idea was using a pot for 'Target' position and using a sensor with 2 solenoids to make it stop.
Like:

Const Arm_Upper_Stop as Unsigned Int = 150
const Arm Upper_Catch as unsigned int = 140
Const Arm_Upper_Range as Unsigned Int = 130
Const Arm_Target as Unsigned Int = 125
Const Arm_Lower_Range as Unsigned Int = 120
const Arm_Lower_Catch as Unsigned Int = 110
Const Arm_Lower_Stop as Unsigned Int = 100

void inter_ArmSensor(void)
{
Static iPrevValue as unsigned int

//Continue after catchup
if (iPrevValue >= Arm_Upper_Stop & ArmSensor < Arm_Upper_Catch)
{ArmMotor_Go;}
if (iPrevValue <= Arm_Lower_Stop & ArmSensor > Arm_Lower_Catch)
{ArmMotor_Go;}

//Emergancy Stops
if (ArmSensor >= Arm_Upper_Stop)
{ArmMotor_Stop;}
if (ArmSensor <= Arm_Lower_Stop)
{ArmMotor_Stop:}

//Start Cylinder
if (ArmSensor >= Arm_Upper_Range)
{ArmCylinder_Out;}
if (ArmSensor <= Arm_Lower_Range)
{ArmCylinder_In;}

//Stop Cylinder
if (ArmSensor < Arm_Upper_Range)
{ArmCylinder_Stop;}
if (ArmSensor > Arm_Lower_Range)
{ArmCylinder_Stop;}
}

But I have a more efficient idea. ;)

ngreen
19-02-2004, 08:46
You could use one of the magnectic sensor actuators from bimba and control the cyclinder based on the position of the piston throw. That would be simple and super efficient. I don't know how much more these cyclinders weigh but I doubt it could be much.

Ryan M.
19-02-2004, 09:17
Yes, That is simlest.

Our idea was using a pot for 'Target' position and using a sensor with 2 solenoids to make it stop.
Like:

Const Arm_Upper_Stop as Unsigned Int = 150
const Arm Upper_Catch as unsigned int = 140
Const Arm_Upper_Range as Unsigned Int = 130
Const Arm_Target as Unsigned Int = 125
Const Arm_Lower_Range as Unsigned Int = 120
const Arm_Lower_Catch as Unsigned Int = 110
Const Arm_Lower_Stop as Unsigned Int = 100

void inter_ArmSensor(void)
{
Static iPrevValue as unsigned int

//Continue after catchup
if (iPrevValue >= Arm_Upper_Stop & ArmSensor < Arm_Upper_Catch)
{ArmMotor_Go;}
if (iPrevValue <= Arm_Lower_Stop & ArmSensor > Arm_Lower_Catch)
{ArmMotor_Go;}

//Emergancy Stops
if (ArmSensor >= Arm_Upper_Stop)
{ArmMotor_Stop;}
if (ArmSensor <= Arm_Lower_Stop)
{ArmMotor_Stop:}

//Start Cylinder
if (ArmSensor >= Arm_Upper_Range)
{ArmCylinder_Out;}
if (ArmSensor <= Arm_Lower_Range)
{ArmCylinder_In;}

//Stop Cylinder
if (ArmSensor < Arm_Upper_Range)
{ArmCylinder_Stop;}
if (ArmSensor > Arm_Lower_Range)
{ArmCylinder_Stop;}
}

But I have a more efficient idea. ;)If anyone uses that make sure to change the Consts to lowercase. (Horrible error, Astronouth. ;))