Low cost Electro-pneumatic circuit for Soft Robots

Rather than using manual pumps or squeeze bulbs to actuate your next soft robot project, a cheap and quick design using your Arduino microcontroller can be used. The circuit works well for any pneumatically powered robot with input pressures between 0 - 60KPa. If you already have an Arduino and a power supply, the design can be implemented with less than $50. Estimated time to complete the design is 2 hours or less.

Introduction to Electro-pneumatics

Pneumatic circuits can be controlled by electric circuits. The interface between these two circuits is a solenoid valve. Solenoid valves perform the same function as normal pneumatic valves but there are operated electrically.

Inside the solenoid valve, there is a coil of wire through which an electric current is passed. It produces a magnetic field which attracts an iron armature. The movement of the armature operates the valve.

Solenoid Operation Off: When the electric current is not flowing, a spring pushes the iron armature out of the coil. A seal connected to the armature blocks port 1. Air can flow between ports 2 and 3.

Solenoid Operation On: When current flows, the iron armature is attracted into the coil by a magnetic field. The spring pressure is overcome and the seal moves to block port 3. Air can flow between port 1 and 2.

When the solenoid valve is on, an electric current will flow through the coil. When current flows through the coil, the iron armature is attracted by magnetism. The solenoid has control of the valve. Port 1 is connected to port 2 and air flows to inflate the soft robot.

When the solenoid valve is off, the coil is de-energized and the spring has control of the valve. Port 2 is connected to port 3 and air flows out of the soft robot.

Background Design

The main aim of this system is to design a low cost and affordable electronic circuit for pneumatic soft robots. The system is composed by two main parts, the embedded control board and the design of housing for the pneumatic components. Figure 1 shows the block diagram of the pneumatic control setup. The input signal is used to set the desired pressure. For control of soft actuators by a microcontroller, 1-way/2-position normally closed solenoid valves is used, (2 valves are required for one actuator) one for inflation (inlet solenoid valve) and the other for deflation (exhaust solenoid valve). Solenoid valves control the flow of air into and out of the actuators. To measure pressure, an amplified pressure sensor (0 - 5psi pressure range) with analogue interface was used and a 10-bit ADC on the microcontroller is used to read the pressure in form of voltage readings.

(Left) Segments with a slightly different response. (Right) Inflation sequence of a segmented actuator assembled from three segments.

The figure below shows the arrangement of air pump and valves for the actuation of soft robots in order to carry out inflation and deflation cycles. As shown, it consists of an air pump to act as the pressure source; two solenoid valves (one acts as an air supply valve while the other as an exhaust valve) and a pressure sensor to measure the air pressure in the soft actuator.

Compressed air from the pump passes through the air supply solenoid valve and changes to output pressure when the air supply solenoid valve turns ON. In this way, air from the supply pump passes through the air supply solenoid valve and changes to output pressure. A PWM (Pulse-Width Modulated) output is then produced on the output pin of the MCU to switch ON/OFF the exhaust valve in order to produce an output pressure equal to the desired pressure. The exhaust valve is also used to deflate the soft actuator - this is essential for crawling motions of soft robots. The output pressure is fed back to the microcontroller via the pressure sensor. This is to check if the desired pressure has become equal to the output pressure. Pressure corrections then occur to produce an output pressure that is equal to the set pressure. Once the pressure sensor has sensed that the desired pressure is equal to the output pressure, the exhaust valve will turn OFF (close) in order to maintain a constant pressure.

Soft robots with multiple air-channels can be actuated using this system. This would be achieved by the addition of two valves for every separate air channel. This is a low pressure controller system that operates at about 0 to 5psi; since the pressure range of the pump and solenoid valves are between 0 - 6 psi. To achieve a high pressure system, this pressure regulator circuit is easy to scale up by using a high pressure pump and solenoid valves.

Assembling the Board

In order to assemble board, you would require some basic tools such as a cable crimper to strip off the insulation from the wire so that it can be used to connect components on the breadboard. You would also require some jumper wires or single core cables for connection to the solderless breadboard. A Power Supply Unit that can supply 9 - 12V DC and at least 800mA of current is essential. Rechargeable batteries or AC-DC Power adapters can be used as power supply.

You would also require a soldering iron and some solder to join two wires together. This will be done for the pumps and valves. Usually the pump does not come with wires so you have to solder wires to the pump. For the solenoid valves, you might want to extend the wires in order to suit your design hence the need for soldering. Also you would have to solder wires to the voltage regulator so that it can be easily connected to the breadboard.

Components and Tools

Most of these components can be purchased from your local electronics store. You can also purchase them on Ebay or Amazon by doing a quick search for it. 

Components

S/N Item Quantity
1 Arduino or other microcontroller 1
2 TIP120 Transistors 3
3 1N001 Diodes 3
4 6V DC Air pump 1
5 6V Air solenoid valves 2
6 LM2596S Switching Voltage regulator 1
7 ASDX Pressure sensor 1
8 SPDT Switch 1
9 10Kohms Resistor 1

Tools

S/N Item
1 PSU/DC Power supply adapter/Rechargeable batteries 
2 Breadboard
3 Jumper wires/Cables
4 Cable crimper
5 Soldering iron

Schematic Wiring

The schematic circuit arrangement for the actuation is shown below

The functions of each of the circuit component are explained below:

Arduino: The Arduino microcontroller is the brain of the regulator system. Here, control commands are written to inflate/deflate the robot, read the system pressure from the pressure sensor to be used as an appropriate feedback.

Transistors: TIP120 which is an NPN Darlington transistors is required to interface the high current external devices to the microcontroller. The pump and solenoid valves make use of high current and cannot be directly connected to the digital I/O pins of the microcontroller. One transistor is required for each of the two the solenoid valves and air pump to drive them at their appropriate current while ensuring that they are controlled by the MCU. When the output pin of the MCU to which the valve/pump is connected to is high (5V), the transistor is active and current is able to flow into the base turning on the TIP120 transistor. When the output pin is low (0V), the collector current, IC, will be zero therefore the transistor is off. In general, the transistor is used to switch current on and off to the solenoid valves and pump; through the transistor, a small current supplied by the microcontroller will switch on a large current that drives the valves and pump. A 1Kohms resistor can be placed between the microcontroller output and the base. This resistor controls the maximum current that can flow from collector to emitter. The circuit is designed to make sure that large currents needed by the dc pump and valves are not supplied by the microcontroller but by the external circuitry. Furthermore, the current should flow from the 6V source, across the pump/valves, through the TIP120 from collector to emitter, and back to the source (without flowing through the microcontroller).

Diodes: The 1N4001 diodes are used as flyback diodes for the valves and pump. Three diodes are required for the pump and valves. When the pump or valve is subjected to a large change in current, such as when the transistor switches, the inductor in the pump and valves presents a large back-emf (back-electromotive force or voltage). This large voltage spike could be harmful, so flyback diodes were required to dissipate this spike. For the air pump, the diode can be soldered across its terminals instead.

Switching Voltage Regulator: The switching voltage regulator is needed to produce a 6V DC output from the 12V power supply in order to power up the valves and pump at the appropriate voltage. The LM2596 DC-DC Switching Adjustable Step Down Voltage Regulator Buck Converter is used to achieve this. It is more efficient to use a switching voltage regulator compared to using a linear voltage regulator because a current of about 800mA is required for the pumps and valves when the circuit is in operation which results in significant amount of heat.

Power supply: The current drawn by the pump is about 150mA and the current drawn by the each of the valves are about 180mA each. Therefore, the power supply should be able to supply at least 800mA of current. A NiMH rechargeable battery can be used or any power supply with at least 800mA of output current and 8V-12V DC output.

Board Implementation

All the components required to make the circuit functional are shown below:

The picture of the complete system in operation is shown below

Close up picture of soft robot in use with the circuit is shown below

Hardware

Electronic Components

Actuation Components

The solenoid valve has a metal side and plastic side. The metal side should be connected with the high pressure side to prevent excess leakage. The valve has two wires, with as no polarity. You can extend the wire by soldering longer wires to it. Also you can use different colours of wires to be able to distinguish between the two wires.

The pump and solenoid valves are arranged as shown in the image below. Two solenoid valves are required to carry out inflation and deflation cycles. One solenoid valves act as the inlet valve through which air always enters the soft robot. The second solenoid valve acts as the exhaust valve that expels air from the system when open. Both solenoid valves are arranged in series as shown. 

In order to facilitate compactness of the system, all the actuation components are placed inside a 3D printed casing. This casing was designed in SolidWorks and printed with ABS plastic using a HP DesignJet® 3D Printer. An image of the casing is shown below.

download custom 3D printed casing

Pressure Sensor

The pin out of the pressure sensor and its connection is indicated below:

Transistor Connection

Each of the transistors are connected to the pump as shown in the diagram below. A complete schematic is found on the schematic layout page

The components are now connected on a breadboard as indicated in the schematic layout. The connection of the electronics components on a breadboard is shown below.

The completed arrangement of the circuit is shown below

The circuit in operation is shown below

Software

Programming the board for inflation and deflation

Using a SPDT switch to control the inflation and deflation cycles of the soft robot, the digital pin to which the switch is connected to is used as an input. Depending on the state of the pin, the soft robot will inflate or deflate. The Arduino code for inflation and deflation given input from the switch is shown below: 

if ( switch_pin == HIGH) {
digitalWrite(inletValvePin,HIGH); // turn pressure valve HIGH
digitalWrite(pumpPin,HIGH); // make sure pump is on
digitalWrite(exhaustValvePin,LOW); // turn exhaust valve LOW
digitalWrite(ledPin,HIGH); // LED ON
}

if ( switch_pin == LOW) {
digitalWrite(inletValvePin,LOW); // turn pressure valve HIGH
digitalWrite(pumpPin,LOW); // pump is off
digitalWrite(exhaustValvePin,HIGH); // turn exhaust valve HIGH
digitalWrite(ledPin,LOW); // LED off
}

Pressure sensor calibration

The ASDXAVX005PGAA5 pressure sensor is an analogue pressure sensor that outputs a voltage in proportion to the air pressure being measured. It is a gauge pressure sensor meaning that it measures pressure in excess of atmospheric pressure from 0 - 5 psi. The calibration equation is given by:

Vout=(0.8×Vsupply/Pmax−Pmin)× (Papplied−Pmin)+0.10×Vsupply

Therefore, the equation to get the pressure from the voltage reading is given as:

Papplied=[Vout−(0.10×Vsupply)]×(Pmin−Pmax)/0.8×Vsupply+Pmin

The Arduino Code is given by:

sensorValue = analogRead(analogInPin); 
                            
// digital value of pressure sensor voltage
voltage_mv =  (sensorValue * reference_voltage_mv) / ADCFULLSCALE;
 
// pressure sensor voltage in mV
voltage_v = voltage_mv / 1000; 
                                     
output_pressure = ( ( (voltage_v - (0.10 * (reference_voltage_mv/1000) )) * (Pmax - Pmin) ) / (0.8 * (reference_voltage_mv/1000) ) ) + Pmin;

FSM for pressure control

To maintain the air pressure inside the soft robot, a Finite State Machine (FSM) can be used (see Figure below). For example, to control the air pressure between 0.7 psi to 0.9 psi, two pressure thresholds are used to prevent the pump from toggling on/off/on/off/on... too quickly. This is essential due to air leakage which can cause the pressure of air in the soft robot to fluctuate rapidly after attaining the desired pressure. Using this FSM, if the system were to be in the PUMP-off state (speed of air pump is reduced), then the system would remain in the PUMP-off state until the pressure drops below 0.7psi. If the system were to be in the PUMP-on state (air pump is inflating the robot at maximum duty cycle), then the system would remain in the PUMP-on state until the pressure rises above 0.9psi.

The code for FSM Control is given as:

if (sensorValue <= desiredValue) {
analogWrite(pumpPin,255); // Pump. (0 is off) and (255 is on)
digitalWrite(inletValvePin,HIGH); // open the air valve
digitalWrite(exhaustValvePin,LOW); // close the exhaust valve
}

if (sensorValue > desiredValue) {
while (analogRead(A0) > (desiredValue - tolerance) ) {
analogWrite(pumpPin,190); // reduce speed of pump
digitalWrite(inletValvePin,HIGH); // open the air valve
digitalWrite(exhaustValvePin,LOW); // close the exhaust valve
}
}

Variations

Pump and Solenoid valves:  6V solenoid valve having a power rating of 2.25W solenoid valve, a maximum operating pressure of 350mmHg; exhaust speed of 4s and leakage of 3mmHg/minute was used. These solenoid valves are light and compact enough to be integrated as demonstrated in this work. For higher pressure system, higher pressure valves are needed. This can be achieved by either operating two or more solenoid valves in parallel as one logical valve or simply using valves with higher pressure. 12V DC Pump and Solenoid valves can be bought instead. For this case, if you have a 12V power supply, a voltage regulator will not be required if you are using the Arduino microcontroller.

Microcontroller: Other types of microcontroller can be used such as Arduino, PIC, MSP430 microcontroller. In these cases, you have to ensure that the appropriate supply voltage is applied. For the MSP430 and LM4F120 LaunchPad, a 3.3V supply voltage is required. For the PIC16F876A microcontroller, a norminal supply voltage of 5V is required. In these cases, make sure to have the appropriate voltage regulator. 

Voltage regulator: When using other microcontrollers whose input voltage is less than the voltage rating of the pump, a linear voltage regulator (e.g. LM317T) can be used rather than a switching voltage regulator. This is because little current is required to power up a microcontroller so the output voltage is regulated to 3.3V/5V while the current to the valves and pump will be supplied by the power supply. Note that to use a linear voltage regulator whose output drives the valves and pump will require the use of a heat sink because heat results when a large current is drawn. For a LM317T Voltage Regulator, it is required to use the appropriate resistor values of R1 and R2 related by the following equation to produce the desired output voltage.

Vout=1.25(1+R2/R1)

Power Supply: A 12V DC Plug-in Power supply Adapter was used to power this circuit. You can also use any DC Power Supply Unit (PSU) that can supply 9-12V and at least 1A of current. To make the system portable, I recommend using a rechargeable battery such as a 8.4V NiMH battery.

As explained above, this design leaves room for adaption to any specified application desired such as implementing the circuit design without the pressure sensor to reduce costs, a Liquid Crystal Display can be added to display the current pressure, embedding the actuation components and circuit inside the robot’s body. The system can also be extended for multi-channel soft actuators. In this case, the number of valves required will double for each separate air channel.

The picture below shows a PIC16F876A microcontroller being used. You can also choose to build the circuit on a Printed Circuit Board (PCB) as shown.