2016年1月10日日曜日

Arduinoで12Vを制御して、ソレノイドを動かす方法


部品の選択や試行錯誤に時間がかかったので、備忘録を兼ねて内容を共有します。

使ったもの


電子工作の小ネタ

ソレノイドの小ネタ

ソレノイドのワイヤーをハンダで固くしておくと、ブレッドボードに刺しやすくなるので便利です。


ソレノイドには極性が無いので、どちらの端子を+にしても-にしても動作します。

三端子レギュレータの小ネタ

スーパー三端子レギュレータに端子の役割を書たビニールテープ貼っておくと、組み立て時に迷わなくて便利です。


回路の説明



ArduinoのD4がHIGHの時にソレノイドが動作します。
逆起電力(ソレノイドへの電力供給停止後、ソレノイドの棒が元に戻るときに発生する電力)でArduinoなどが壊れるのを防ぐために、ダイオードを組み込んで逆起電力を開放しています。
プログラム書き込み中などでD4が中途半端な電圧になったり、D4への線を離したときも誤動作しないように、gateを10KΩ経由でGNDに接続しています。


上側にソレノイド向けの12Vを、下側に3端子レギュレータを通してArduino向けの5Vを供給しています。
ArduinoのVINに12Vを供給しても動作はしますが、Arduinoに載っているレギュレータからノイズが聞こえるので、この回路では外付けの3端子レギュレータを使いました。

プログラムの説明

D4につないだMOSFETを操作します。

solenoid_test
#define SOLENOID_PIN 4

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

void loop() {
  // solenoid off
  digitalWrite(SOLENOID_PIN, LOW);
  delay(1000);

  // solenoid on
  digitalWrite(SOLENOID_PIN, HIGH);
  delay(1000);
}

動作確認

一秒おきに、ソレノイドが動いていたら成功です。


この情報が役に立てば嬉しいです。

応用例

自分がソレノイドを使って作ったものを紹介します。

スロークッカー

第3回ソレコンに応募した作品です。
関連記事はこちらです。
Arduino LEONARDOでLCD(AE-AQM1602A)を使う
Arduinoで水温計DS18B20を使う

おいしいお肉を作ってくれましたが、今はヨーグルト発酵器が活躍しています。

ソレ・エア・リモコン

第2回ソレコンに応募した作品です。
これは6V電源とraspberry piで制御していますが、12V電源とArduinoのものと回路はほとんど同じです。


空調の影響が少ない席に移ったので、運用は終わりました。

関連記事はこちらです。
tocos twe-liteの信号をubuntuで確認する

ソースコートはこちらです。
room_server

参考

MOS FETによるスイッチングの基礎
マンガでソレノイド
コイルのパルス駆動と逆起電力
3.2.4.1. フォトカプラの利用方法

変更履歴

2016.04.22
逆起電力による回路へのダメージを防ぐため、ソレノイドと並列にダイオードを設置しました。

2016.06.29
  • ソレノイドに極性がないことを記述
    モーターのように極性があると誤認識していました。
  • MOSFETとフォトカプラの説明を修正
    絶縁していないにも関わらず、絶縁と思えるような記述を削除しました。
  • 利用するフォトカプラをTLP621からTLP222に変更し、回路も変更
    これにより、HIGHでソレノイドが動作し、LOWでソレノイドの動作が停止するようになりました。
  • 利用する三端子レギュレータを変更
    これにより、電源部分の部品点数が減ったのと、スイッチによる降圧のため電力効率が上がりました。

2016.07.05
応用例を追加しました。

2016.07.07
5Vでのゲート制御ならフォトカプラが無くても問題ないことが分かったため、フォトカプラを削除して回路を単純にしました。
参考: 下記データシート3p中段、Id-VgsとVds-Vgsのグラフ
http://akizukidenshi.com/download/2sk2232.pdf

2017.07.21
不要になった「フォトカプラ」に関する記述が残っていたので、削除しました。

2018.05.24
逆起電力を開放するためにダイオードを使っているという説明を追加しました。

2020.10.11
twitterでgateのプルダウン抵抗が1kΩだと小さいというコメントがあり、確かにそうだと思ったので10kΩに変更しました。

4 件のコメント :

BlueTone さんのコメント...

コメント失礼します。
もしよろしければ教えてください。
動画で使用している、LEDの点灯検知の部品は何を使用していますか?

Asuki Kono さんのコメント...

コメントありがとうございます。

秋月電子で売られているこちらの光センサを利用しました。
電磁調理器: 大面積Si PINフォトダイオード S6967
エアコン: フォトICダイオードS9648

どちらも「Arduino 光センサ」で検索して出てくるCdSセルの光センサと同じように利用できます。
光センサ(CDSセル)で遊ぼう

電磁調理器に少し高めのこちらのセンサを利用した理由は「四角くて横からピンが出ていて、テープで貼り付けやすかったから」だったような気がします。
電磁調理器を安くて丸いセンサで検知できたかは、覚えていません。
(試してなかったかもしれません。)

どちらのセンサを使う場合も、検知したいLED以外の光がセンサに当たると期待通りの値を取れない(昼と夜で値が変わる)ので、黒いビニールテープなどで覆うことをお勧めします。

BlueTone さんのコメント...

返信ありがとうございます!
なるほど。黒いのは自作のカバーなんですね。
やはり、外光の影響を考慮する必要がありそうですね。
自分もそこを心配していました。
チャレンジしてみます!

ブログ、いつも参考にさせてもらっています!
今後も楽しみsにしています!頑張ってください!

Asuki Kono さんのコメント...

チャレンジがうまくいくと良いですね。

ありがとうございます(^-^)
そうコメントしてもらえると嬉しいです。
気ままに続けていこうと思いますので、良かったら引き続きご覧ください。