Overview
WPILib provides classes for controlling pneumatic systems, including solenoids for actuators and compressors for maintaining air pressure. This guide covers the Pneumatics Control Module (PCM) and Pneumatic Hub (PH).Pneumatics Modules
WPILib supports two types of pneumatics modules:- CTRE PCM (Pneumatics Control Module) - Legacy CAN-based module
- REV PH (Pneumatic Hub) - Current generation CAN-based module with additional features
Module Types
- Java
- C++
Solenoids
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Solenoid.java:14
Solenoids are electrically controlled pneumatic valves for actuating cylinders.
Single Solenoid
Single-acting solenoids have one state (extend/retract) controlled by air pressure:- Java
- C++
Double Solenoid
Double-acting solenoids control both extend and retract with air pressure:- Java
- C++
Pulse Control
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Solenoid.java:133
Create timed pulses for quick actuations:
- Java
- C++
Compressor
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java:14
The compressor automatically maintains air pressure. It typically doesn’t need to be controlled directly.
Basic Compressor Usage
- Java
- C++
Compressor Control Modes
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java:129
- Java
- C++
Compressor Monitoring
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Compressor.java:82
- Java
- C++
Complete Pneumatics Example
- Java
- C++
Solenoid Safety
Source:wpilibj/src/main/java/edu/wpi/first/wpilibj/Solenoid.java:116
Check for Shorts
- Java
- C++
Best Practices
- One compressor per robot - Only instantiate one Compressor object
- Use double solenoids for critical functions - They provide positive control in both directions
- Turn off solenoids when disabled - Save air and reduce wear
- Monitor compressor current - High current may indicate leaks or problems
- Check for shorts - Use
isDisabled()to detect solenoid shorts - Use pulse mode for quick actions - Saves air for brief actuations
- Size your air storage - Ensure you have enough air for a full match
Troubleshooting
Solenoid Not Working
- Check CAN connection to pneumatics module
- Verify correct channel numbers
- Check for shorts with
isDisabled() - Ensure compressor is building pressure
- Verify pneumatic connections
Compressor Not Running
- Check pressure switch wiring
- Verify compressor is enabled:
enableDigital() - Check current draw (should be 0A when not running)
- Ensure 12V power to compressor
Low Pressure
- Check for air leaks in system
- Verify pressure switch threshold
- Check compressor current (should be high when running)
- Inspect airline connections
Next Steps
- Motor Control - Control motors
- Sensors - Read sensor data
- Vision - Process camera data