ソレノイドを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を出力
 
 

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。