空気圧ソフトアクチュエータを動かすプログラミング入門:マイコンとバルブ制御の基礎
ソフトロボット開発において、柔らかいアクチュエータを意図した通りに動かすことは基本的な要素技術の一つです。特に、空気圧で駆動されるソフトアクチュエータは広く用いられており、その動作を制御するためにはプログラミングが不可欠となります。本記事では、空気圧ソフトアクチュエータをマイコンを用いて制御するための基礎的な考え方と、具体的なシステム構成、最もシンプルなON-OFF制御のプログラミングについて解説します。
空気圧ソフトアクチュエータ制御システムの基本構成
空気圧ソフトアクチュエータをプログラミングで制御するためには、いくつかの要素が必要です。基本的なシステムは以下のような構成となります。
- 空気圧ソフトアクチュエータ: 空気を供給することで変形する柔らかいロボット部品本体です。
- 空気源: アクチュエータに空気を供給するための供給源です。エアコンプレッサーやポンプ、圧縮空気ボンベなどが該当します。多くの場合、供給される空気圧を調整するためのレギュレーターも必要になります。
- バルブ(電磁弁): 空気源とアクチュエータの間をつなぎ、空気の流量や圧力を制御するための部品です。電気信号によって作動するため、マイコンからの制御が可能になります。
- マイコン: システム全体の頭脳として、バルブに電気信号を送ることでアクチュエータの動作を指示します。ArduinoやRaspberry Pi Pico、STM32などがよく用いられます。
- 電源: マイコンやバルブ、必要に応じて空気源(電動ポンプなど)に電力を供給します。
- センサ(任意): アクチュエータの変形や周囲の状況を検知するために使用される場合があります。センサからの情報をマイコンが読み取り、アクチュエータの制御にフィードバックすることができますが、本記事では基本的な制御としてセンサを用いない場合を考えます。
これらの要素が適切に接続されることで、マイコンからのプログラムによってアクチュエータを制御することが可能になります。
マイコンとバルブの接続
バルブは、マイコンのデジタル出力ピンから送られる電気信号を受けて動作します。一般的な電磁弁は、コイルに電流を流すことで弁が開閉します。マイコンの出力ピンから直接電磁弁を駆動できる場合もありますが、電磁弁の種類によってはマイコンの出力可能な電流値よりも大きな電流が必要になる場合があります。その場合、マイコンと電磁弁の間にリレーやトランジスタといったスイッチング素子を介して接続する必要があります。
例えば、Arduinoのようなマイコンを使用する場合、デジタル出力ピンをHIGH(通常5Vまたは3.3V)にすることで、リレーやトランジスタをオンにし、外部電源から電磁弁に電力を供給して駆動する、という形式が一般的です。配線にあたっては、電磁弁の仕様(電圧、電流)とマイコンの仕様を十分に確認し、適切なスイッチング素子や保護回路(逆起電力防止のためのダイオードなど)を用いることが重要です。
バルブの種類と基本的な制御方法
空気圧ソフトアクチュエータの制御によく用いられるバルブには、主に以下の2種類があります。
-
ON-OFFバルブ(2ポートまたは3ポート電磁弁など):
- 電気信号のON/OFFによって、空気の経路を開閉するバルブです。例えば、2ポート弁であれば空気源とアクチュエータを接続/遮断、3ポート弁であれば空気源とアクチュエータを接続するか、アクチュエータと大気を接続するか(排気)を切り替えます。
- 制御方法: マイコンのデジタル出力ピンを使って、バルブにHIGHまたはLOWの信号を送ることで制御します。信号がHIGHの時に弁が開いてアクチュエータに空気が供給され(あるいは保持され)、LOWの時に弁が閉じて空気が遮断される(あるいは排気される)といった動作になります。最もシンプルで、基本的な膨張・収縮動作を実現するために用いられます。
-
比例制御バルブ:
- 電気信号の大きさ(電圧やPWMデューティ比)に応じて、空気の流量や圧力を連続的に調整できるバルブです。
- 制御方法: マイコンのアナログ出力ピンやPWM出力ピンを使って制御信号を送ります。信号の大きさに応じてアクチュエータへの空気の供給量や圧力を調整できるため、アクチュエータの変形を段階的に、あるいは滑らかに制御することが可能になります。ただし、ON-OFFバルブに比べて高価で、制御も複雑になります。
ソフトロボット開発の第一歩としては、まずON-OFFバルブを用いた基本的な制御から始めることが推奨されます。
ON-OFF制御の簡単なプログラミング例
ここでは、Arduinoのようなマイコンを想定し、ON-OFFバルブを使って空気圧ソフトアクチュエータを周期的に膨張・収縮させる簡単なプログラム例を示します。
// バルブを接続したデジタル出力ピン番号を定義
const int valvePin = 9;
// アクチュエータを膨張させる時間(ミリ秒)
const int inflateDuration = 2000;
// アクチュエータを収縮させる時間(ミリ秒)
const int deflateDuration = 3000;
void setup() {
// バルブピンを出力モードに設定
pinMode(valvePin, OUTPUT);
// シリアル通信を開始(動作確認用)
Serial.begin(9600);
Serial.println("Starting actuator control...");
}
void loop() {
// アクチュエータを膨張させる(バルブを開く)
digitalWrite(valvePin, HIGH);
Serial.println("Inflating...");
delay(inflateDuration); // 指定時間待つ
// アクチュエータを収縮させる(バルブを閉じる or 排気するバルブを開く)
// ※使用するバルブの種類(2ポート or 3ポート)や配管によって動作が異なります。
// ここではシンプルに閉じる例(3ポート弁で排気する場合はHIGH/LOWを逆にするなど調整が必要です)
digitalWrite(valvePin, LOW);
Serial.println("Deflating...");
delay(deflateDuration); // 指定時間待つ
// このループを繰り返す
}
このコードは、指定したデジタル出力ピン(valvePin
)を一定時間HIGHにしてバルブを開きアクチュエータを膨張させ、その後LOWにしてバルブを閉じ(または排気し)アクチュエータを収縮させる、という動作を繰り返します。delay()
関数を使って待ち時間を設定することで、膨張・収縮のタイミングを制御しています。
実際のシステムでは、使用するバルブの種類(2ポートか3ポートか、ノーマルクローズかノーマルオープンかなど)や配管構成によって、digitalWrite
のHIGH/LOWとアクチュエータの膨張・収縮の関係が変わる場合があります。また、空気源の種類やレギュレーターの設定によって、膨張・収縮の速度や最大変形量も異なります。
次のステップへ
ON-OFF制御は最も基本的な制御方法ですが、ソフトロボットの柔軟性を活かした精密な制御には限界があります。より高度な制御を目指す場合、以下のステップを検討できます。
- センサフィードバックの導入: アクチュエータの変形量や、アクチュエータが発生する力などをセンサで計測し、その情報をマイコンに読み込ませます。
- 比例制御バルブの使用: センサからの情報や目標とする変形量に基づいて、比例制御バルブを使って空気圧を連続的に調整します。
- 制御アルゴリズムの学習: PID制御やより高度な非線形制御手法などを学び、センサ情報に基づいたフィードバック制御を実装します。(PID制御については、本サイトの関連記事「ソフトロボットのフィードバック制御入門:PID制御の原理と実装への第一歩」も参考にしてください)
まとめ
本記事では、空気圧ソフトアクチュエータをプログラミングで制御するための基本的なシステム構成と、ON-OFF制御の実装方法について解説しました。空気圧ソフトアクチュエータ、空気源、バルブ、マイコンといった構成要素の役割を理解し、マイコンからのデジタル出力によってバルブを制御することで、ソフトロボットの基本的な動作を実現できます。まずはシンプルなON-OFF制御から始め、徐々にセンサフィードバックやより高度な制御手法へと発展させていくことが、ソフトロボット制御技術を習得するための効果的なアプローチと言えるでしょう。