ソレノイドをArduinoで制御しよう!【本編】
2016年にインターンで来てくれた九州工業大学の小野又さんと米中さんが【ソレノイドをArduinoで制御する説明書】を作成してくれました ので紹介させていただきます 。
■ソレノイドをArduinoで制御しよう!編
①必要なもの
②ソレノイドとは?通電してみよう
③ダイオードとは
④トランジスタとは
⑤トランジスタを使用したスイッチング回路を作る
■付録編
①必要なもの
ソレノイドはタカハ機工でhttp://www.takaha.co.jp/index.htm
他の部品は秋月電子で購入できます。http://akizukidenshi.com/catalog/default.aspx
②ソレノイドとは?通電してみよう
ソレノイドは、プランジャーと呼ばれる鉄心を直進運動させる部品です。巻いた銅線(コイル)に電流を流すと、その銅線が磁石になって、プランジャーが引っ張られます。「引く」動作をするプルソレノイドと、「押す」動作をするプッシュソレノイドの2種類があります。 詳しくは、タカハ機工HPもしくは「ソレノイド探偵団」をご覧ください。
- ソレノイドの基本動作
ブレットボード上にスイッチを追加してソレノイドの動きの基本を確認してみましょう。
スイッチを押すとソレノイドに電流が流れ、直線運動をします。スイッチを離すと、バネの力でプランジャーが元に戻ります。
③ダイオードとは
ソレノイドは、電磁石の作用で動きます。電源をOFFにした際に、それまでの電流を維持しようとコイルから電流(逆起電力)が発生します。その電流が回路側や、制御側に悪影響を及ぼす可能性があるため、ダイオードを用いてそれを防止します。
④トランジスタとは
トランジスタとは、電気の流れを制御する電気部品です。基本的な使い方は、回路上でスイッチの役割や電流を増幅させる作用があります。トランジスタは三又になっておりそれぞれエミッタ、コレクタ、ベースと名付けられています。
Arduinoから供給できる電流はソレノイドに対しては小さいため、ソレノイド動作用の電源は電池から供給します。トランジスタはArduinoから信号を受け取り電池とソレノイドの間のスイッチの役割を果たします。
CBS0830以外のソレノイドを使用する場合については、付録⑤に説明します。
⑤スイッチング回路を作る
トランジスタを接続する
- 回路
ソレノイドCBS08300120は6Vで連続通電です。よって単三電池を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とトランジスタの間に設置します。
- プログラム
スイッチを、回路に追加してもプログラム上での制御は必要ありません。次のプログラムはスイッチを押すとソレノイドが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を出力 |
面白いコラムありがとうございます。
超初心者で申し訳ないんですが…良かったら教えてください。
複数のソレノイドを制御したい場合、ソレノイド数分トランジスタが必要になりますか?
リレーと比べてのメリットデメリットって何なんでしょうか?
コメントありがとうございます!
複数のソレノイドを常に同時に動かす場合はトランジスタは1つで大丈夫です。複数のソレノイドを別々に動作させるにはソレノイドの数だけトランジスタを用意する必要があります。
リレーとトランジスタのメリットデメリットについて代表的なのは以下です。
【メリット】
・サイズ
トランジスタよりもリレーのほうが大きいです。
・スイッチング速度
トランジスタは高速でONOFF可能ですが、リレーは機械的にスイッチングを行うためトランジスタよりも遅いです。
【デメリット】
・使用の難しさ
トランジスタを使用するためにはトランジスタについてある程度理解する必要があります。動作させたいものや使用する電圧などによって使用する抵抗やトランジスタを選定する必要があります。リレーの場合でもリレーの知識は必要ですが、トランジスタよりは簡単です。
これから電気回路について学ぼうとしているのであれば少し難しいですがトランジスタを使用してみることをお勧めします。
また、上で書いたメリットデメリットについては数あるものの一部となります。
「リレー トランジスタ 違い」などで検索すると詳しい情報が出てきますのでこれらを参考にするとショシンシャー様の助けになると思います。
またご質問があればお気軽にご連絡ください。
お世話になります。
コラムを拝見させていただいて興味を持ち超初心者ながら真似をしてみましたが、上手く動作しなかったためアドバイスを頂きたくコメントを送らせて頂きました。
配線・プログラム・部品は本ページを参考にさせて頂きましたが、抵抗・ダイオード・トランジスタは下記のもので問題ないでしょうか。
また、ソレノイドを動かすための電池はマンガン電池よりアルカリ電池の方がよいのでしょうか。
抵抗・・・470Ω 2W ±5%
ダイオード・・・品番:D1N60-5060
トランジスタ・・・2sc2655(2Wクラスのオーディオ用トランジスタ)
間違い等あれば、ご教授頂けると幸いです。
コメントありがとうございます。
素子は問題ないと思います。
電池はアルカリ電池の方がいいと思います。
ソレノイドは何を選定されましたでしょうか。
お世話になります。
お返事ありがとうございます。また、返信が遅くなってしまい申し訳ありません。
ソレノイドはCBS08300120を選定しています。