2017年1月1日日曜日

Arduino で 5v ソレノイドを制御してみた

概要

秋月で 450 円で売っていたソレノイドを Arduino で制御してみました

環境

  • Arduino UNO
  • Arduino IDE 1.6.9
  • ソレノイド
  • トランジスタ 2N5088 x 1
  • 抵抗 47 Ω x 1
  • 整流ダイオード x 1

配線

全体の写真
arduino_with_solenoid_circuit1.jpg

回路の部分をアップにした写真
arduino_with_solenoid_circuit2.jpg

ソレノイドは LOW <-> HIGH を切り替えた時に逆起電流が発生するので回路および Arduino を保護する目的で整流ダイオードを並列に接続しています

スケッチ

int tr = 2;

void setup() {
  pinMode(tr, OUTPUT);
}

void loop() {
  digitalWrite(tr, HIGH);
  delay(1000);
  digitalWrite(tr, LOW);
  delay(60000);
}

2 番ピンの LOW <-> HIGH を繰り返しているだけです
なぜこんなに delay を入れているかは以下で記載します

ポイント

まずこのソレノイドは 5v という小さな電圧で動作するのですが、電流が 1.1A も必要になります
Arduino のピンはだいたい 20mA くらいなので全く足りません

そこでトランジスタを使い電流を増幅させます
ベース (真ん中) に 47Ω の抵抗を挟んで Arduino の 2 番ピンを接続します
そしてエミッタ (左) に Arduino のGND を接続し、コミッタ (右) をソレノイドの GND 側に接続します
これで 2 番ピンの出力電流を増幅させることができます

で抵抗の値がなぜ 47Ω なのかというと手元にあるのが、それしかないからという理由もありますが、いろいろな抵抗で試した結果 47Ω の抵抗しかソレノイドが動作しなかったからです
はじめは 7.5KΩ というかなり大きい抵抗を使っていたのですが、それだとベースに流れるベース電流の量がかなり小さくなってしまいソレノイドがうんともすんとも言いませんでした
で、手元にある抵抗を使って抵抗の値をどんどん小さくしていった (7.5KΩ -> 5KΩ -> 3KΩ -> 1KΩ -> 470Ω -> 220Ω -> 47Ω) のですが、それで動作したので 47Ω の抵抗だけでした

ただ、問題が発生しました
47Ω の抵抗を使えばソレノイドは動くのですが、トランジスタがとんでもなく熱くなります
(おそらくベースから流れる電流が大きすぎるせいでトランジスタに負荷がかかり発熱していると思われる)
で、スケッチのほうで制御しようと基本は 2 番ピンの状態を LOW にすることでベースにかかる負荷を最小限にしています
なので LOW の状態で delay を 60 秒もかけているわけです

おそらくこの方法はあまりよくないと思われます
本来ならもう少し抵抗の値を大きくして、トランジスタにかかる負荷を軽減し電流増幅率の高いトランジスタに変えてあげるのが良いと思います
トランジスタにはダーリントン式と呼ばれるトランジスタを複数つなげて更に電流を増幅する方式があります
自分でダーリントン接続回路を組まなくてもダーリントン式のトランジスタというのがあるのでそれに変えてあげるといいかなと思います

動作確認

PC に Arudino を接続してスケッチを書き込んでみましょう
ソレノイドが 60 秒おきに「カチッ」と動作すると思います

最後に

Arduino でソレノイドを制御してみました
前に DC モータも制御したのですが、そのときもトランジスタを使って電流増幅させました
アクチュエータ系の制御はトランジスタ必須と言ってもいいかもしれません

あとはどれか他のデバイス (Pro mini, WROOM, RPi, zero) でも試してみたいかなと思っています

参考サイト

2 件のコメント: