昨年インターンで来てくれた、九州工業大学の小野又さんと米中さんが【ソレノイドをArduinoで制御する説明書】を作成してくれました!今日からパートごとに紹介させていただきます!
■ソレノイドをArduinoで制御しよう!編
■付録編
まず、必要なものリストはコチラ▼
ソレノイドはタカハ機工でhttp://www.takaha.co.jp/index.htm
他の部品は秋月電子で購入できます。http://akizukidenshi.com/catalog/default.aspx
ソレノイドについて
ソレノイドは、プランジャーと呼ばれる鉄の棒を直進運動させる部品のことです巻いた銅線に電流を流すと、その銅線が磁石になって、プランジャーが引っ張られます。「引く」動作をするプルソレノイドと、「押す」動作をするプッシュソレノイドの2種類があります。
詳しくはタカハ機工HP、もしくは「ソレノイド探偵団」をご覧ください。
タカハ機工 HP :http://www.takaha.co.jp/index.htm
ソレノイド探偵団 :http://www.takaha.co.jp/manga/index.html
ソレノイドの基本動作
ブレットボード上にスイッチを追加してソレノイドの動きの基本を確認してみましょう
スイッチを押すソレノイドに電圧がかけられ、直線運動をするのがわかると思います。スイッチを話すと、バネの力で、プランジャーが元に戻ります
Arduinoでソレノイドを動かしてみる
Arduinoの動作環境を整える準備は付録①にて説明します。Arduinoを初めて扱う方は、付録①〜④を行ってから、ソレノイドに挑戦する順序をオススメします
ソレノイドをArduinoで制御するにあたり、ダイオードとトランジスタが必須になるため、以下で説明をします。
ダイオード
ソレノイドは、電磁石の作用で動きます。電源をOFFにした際に、それまでの電流を維持しようとコイルから電流(逆起電力)が発生します。その電流が回路側や、制御側に悪影響を及ぼす可能性があるため、ダイオードを用いてそれを防止します。
トランジスタ
トランジスタについて説明します。トランジスタとは、電気の流れを制御する電気部品です。基本的な使い方は、回路上でスイッチの役割や、電流を増幅させる作用があります。トランジスタは三又になっており、それぞれエミッタ、コレクタ、ベースと名付けられています
Arduinoから供給できる電流は、ソレノイドに対しては小さいため、ソレノイド動作用の電源は電池から供給します。トランジスタは、Arduinoから信号を受け取り、電池とソレノイドの間のスイッチの役割を果たします。
付属品以外のソレノイドを使用する場合については、付録⑤に説明します。
トランジスタを利用したスイッチング回路
回路図:
付属しているソレノイドCBS08300120は、6[V]で連続通電です。よって単三電池を4本使用します。また、付属しているソレノイドには、プラス・マイナスの極性が存在しないので、2本の線をどちら側に繋いでも問題ありません。
ソレノイドから延びる2本の線より、片方は電池、もう片方はトランジスタのコレクタに接続します。ベースは抵抗などを介してArduinoに接続し、コレクタはGNDに接続します。なぜ、抵抗を挿入するかなどの詳しいことは付録⑤にて説明します。
プログラム:
プログラムは、LEDを接続するときなどとほとんど同様です。プログラムの書き方は、LEDを例として付録②で説明します
プログラム |
説明 |
int TR = 8;
void setup() { //setup関数 pinMode(TR,OUTPUT); } void loop() { digitalWrite(TR,HIGH); delay(1000); digitalWrite(TR,LOW); delay(1000); } |
ピン定義
【setup関数】 TRピンを出力として設定
【loop関数】 TRピンにHIGHを出力
TRピンにHIGHを出力
|
スイッチを追加する
スイッチの扱い方は、付録③で説明します。
回路図:
スイッチは、Arduinoとトランジスタの間に設置します
プログラム:
スイッチを、回路に追加してもプログラム上での制御は必要ないため、P.6のプログラムとほとんど同様です。
下記のプログラムは、スイッチを押すとソレノイドが5秒間(5回)動いて止まる動作です
プログラム |
説明 |
int TR = 8; int SW = 2;
void setup() { pinMode(TR,OUTPUT); pinMode(SW,INPUT); }
void loop() { if(digitalRead(SW) == LOW) {
int i = 0; while(i < 5) { digitalWrite(TR,HIGH); delay(500); digitalWrite(TR,LOW); delay(500); i++; } } } |
トランジスタのピン定義 スイッチのピン定義
【setup関数】 TRピンを出力として設定 SWピンを入力として設定
【loop関数】 条件:SWピンがLOW(=0[V])ならば下記を実行 整数iを定義 ※iが5未満ならば下記を実行 TRピンにHIGHを出力
TRピンにLOWを出力
iを1増加させる ※に戻る |
センサーを追加する
センサーの扱い方は、付録④で説明します。
回路図:
センサーは、Arduinoで値を読み取るために、「ANALOG IN」ポートに接続してください
プログラム:
プログラム |
説明 |
int TR = 8;
void setup() { pinMode(TR,OUTPUT); }
void loop() { int value = analogRead(A5);
if(value>800){ digitalWrite(TR,HIGH); } else{ digitalWrite(TR,LOW); } delay(100); //100ミリ秒待つ } |
ピン定義
【setup関数】 TRピンを出力として設定
【loop関数】 センサーの値を読み取ってvalueという関数に入れる →valueが800以上の時 TRピンにHIGHを出力
→valueが800以下の時 TRピンにLOWを出力
|
次回、付録編を紹介します
ここまで見てくださった皆さんありがとうございます
作成者:九州工業大学 小野又 、米中