arduinoリレーシールドの作り方

arduinoリレーシールドの作り方

・arduinoでリレーをON/OFFするだけのシンプルなシールドです
・リレーは3路スイッチ2回路です(専門用語だと2C)
・arduinoのデジタル4~7ポートで制御します
・リレーは全部で4つ。モーターの正転逆転回路なら2個のモーターを制御できます
・リレーでON/OFF出来るのは
  直流30Vまでなら2A
  交流125Vまでなら1A


2012-08-10

マブチモーターFA-130を1.2Vのエネループで正転/逆転しているところ

R0015143.jpg
モーター正転/逆転のサンプルスケッチ
0001  /*----------------------- 2012-08-10 --------*/
0002 /* Relay Shield sample FA-130 motor */
0003 /*-------------------------------------------*/
0004
0005 #define RELAY_ON LOW
0006 #define RELAY_OFF HIGH
0007
0008 #define CCW LOW
0009 #define CW HIGH
0010
0011 #define BRAKE HIGH
0012 #define RUN LOW
0013
0014 int RELAY1 = 7;
0015 int RELAY2 = 6;
0016
0017 void setup() {
0018 digitalWrite(RELAY1, RELAY_OFF);
0019 digitalWrite(RELAY2, RELAY_OFF);
0020
0021 pinMode(RELAY1, OUTPUT);
0022 pinMode(RELAY2, OUTPUT);
0023 }
0024
0025
0026 void loop()
0027 {
0028 digitalWrite(RELAY1, CW );
0029 digitalWrite(RELAY2, RUN );
0030 delay(1000);
0031 digitalWrite(RELAY2, BRAKE );
0032 delay(300);
0033 digitalWrite(RELAY1, CCW );
0034 digitalWrite(RELAY2, RUN );
0035 delay(1000);
0036 digitalWrite(RELAY2, BRAKE );
0037 delay(300);
0038 }
行番号
解説
11行目
モーターの両端子をリレーでショートさせるとブレーキ
15行目
リレー2が正転/逆転を担当
16行目
リレー1が回転/ブレーキを担当
28~37
1秒間回転、0.3秒間停止の繰り返し
動いているところ
ファイル ファイルタイプ 添付ファイルの解説
motorfa130.wmv MOVIE 上のプログラムを実行しているところ。ブレーキをかけているので停止するときに反動でギヤボックスが暴れています。

上の回路の配線図

motorbrake.png

上の実態配線図を回路図にするとこうなります。点線は同時に切り替わると言う意味です。

mkairozu.png

基板表面。arduinoと接続するためのピンヘッダーのさらに外側にはユニバーサル基板ピッチのパターンがあります。赤いタクトスイッチはarduinoのリセットスイッチ。LEDはarduinoのデジタル13番ポートLEDが見えなくなってしまうのでシールド上に増設した物です。

R0015128.jpg

赤丸で囲ってある部品の取付向きに注意して下さい。リレーは他の部品より寿命が短い(電流1Aで10万回)ので交換できるようにしてあります。8カ所の穴のうち2箇所だけが小さく他は大きくなっています。半田吸い取り器で大きい穴の半田を除去するとリレーのピンとパターンが分離します。2カ所だけになれば片方ずつ半田を溶かして引き上げれば取り外すことが出来ます。

rbrd.PNG

裏面はピンヘッダのみ。ピンヘッダはarduinoに重ねた状態で半田付けして下さい。arduinoに重ねたとき裏側に突き出たピンが干渉するようであれば切り詰めて下さい。USBコネクターなどと干渉していたらビニールテープを貼って絶縁して下さい。

R0015132.jpg

部品表

partslist.png

回路図。リレーがON/OFFすると電源に若干のノイズが載ります。もし電源電圧に影響を受けやすいセンサーを使うのであればリレーON/OFFの直後30ミリ秒はセンサーの信号を読み取らないようにして下さい。

rsch.PNG

ご参考:ブレーキが必要ないときはこんな配線になります

motorfree.png
リレーを順番にON/OFFするだけのサンプルプログラム
0001  /*----------------------- 2012-08-09 --------*/
0002 /* Relay SHield sample */
0003 /*-------------------------------------------*/
0004
0005 #define RELAY_ON LOW
0006 #define RELAY_OFF HIGH
0007
0008 int RELAY1 = 7;
0009 int RELAY2 = 6;
0010 int RELAY3 = 5;
0011 int RELAY4 = 4;
0012
0013 void setup() {
0014 pinMode(RELAY1, OUTPUT);
0015 pinMode(RELAY2, OUTPUT);
0016 pinMode(RELAY3, OUTPUT);
0017 pinMode(RELAY4, OUTPUT);
0018
0019 digitalWrite(RELAY1, RELAY_OFF);
0020 digitalWrite(RELAY2, RELAY_OFF);
0021 digitalWrite(RELAY3, RELAY_OFF);
0022 digitalWrite(RELAY4, RELAY_OFF);
0023 }
0024
0025
0026 void loop()
0027 {
0028 delay(500);
0029 digitalWrite(RELAY4, RELAY_OFF);
0030 digitalWrite(RELAY1, RELAY_ON);
0031 delay(500);
0032 digitalWrite(RELAY1, RELAY_OFF);
0033 digitalWrite(RELAY2, RELAY_ON);
0034 delay(500);
0035 digitalWrite(RELAY2, RELAY_OFF);
0036 digitalWrite(RELAY3, RELAY_ON);
0037 delay(500);
0038 digitalWrite(RELAY3, RELAY_OFF);
0039 digitalWrite(RELAY4, RELAY_ON);
0040 }
行番号
解説
28~39
0.5秒間隔でリレーを順番にON/OFFしています
サンプルプログラム現物
ファイル ファイルタイプ 添付ファイルの解説
motor.zip OTHER 上の2つのサンプルプログラム .ino ファイル