フォトカプラで、モーターとマイコンを絶縁する(TLP627,TA7257P)
以前、フォトカプラのTLP627で回路を絶縁し、出力先のHIGHとLOWを制御をしました。今回は同じフォトカプラ二個とモータードライバーを使って、モーターを制御します。モーターも以前に使ったものです。
モータードライバーについて
モータードライバーは部室にあったTA7257Pを使いました。データシートに「テープデッキのリールドライバとして最適」と書いてあり、古いなぁと思っていたら2000年頃のデータシートでした。もしかしたらレアなものかもしれません。
ただデュアルモータードライバーと同じくらいの大きさですが、1個しか制御できません。これからモータードライバーを買うという人は、もっと新しいものを買ったほうがいいと思います。今回は使ってみたかっただけです。
▼実際のTA7257P。どれが1番ピンなんだ?というので困惑しましたが、文字が書いている面の左端が1番で大丈夫です。
回路を組む
ArdinoのNanoとUnoをフォトカプラで絶縁しています。Nanoで制御用の信号を送信し、その信号を受信したUnoがモーターを制御します。よく考えたらUnoは要らない気がしましたが。他に5V電源を用意できれば無くてもいいと思います。
分かりやすいように、D2→A2→D2、D3→A3→D3と信号が伝わるように繋いでいます。
▼簡単なブロック線図にしたものがこちら
▼Eagleで作った回路図
▼実際に組んだもの
プログラムを書く
▼TA7257Pのデータシートにロジックが載っています。
IN1 | IN2 | OUT1 | OUT2 | モード |
1 | 1 | L | L | ブレーキ |
0 | 1 | L | H | 正/逆転 |
1 | 0 | H | L | 逆/正転 |
0 | 0 | ハイインピーダンス | ハイインピーダンス | ストップ |
プログラムだと1はHIGH、0はLOWに当たります。
単純なプログラムです。Nanoの2ピンがHIGHになると、UnoのA2がHIGHになるのを読み取って、D2をHIGHにします。他も同様です。4通りのパターンを5秒刻みで繰り返します。
//Arduino Nano
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
}
void loop() {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
delay(5000);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
delay(5000);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
delay(5000);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
delay(5000);
}
//Arduino Uno
void setup() {
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
}
void loop() {
if(digitalRead(A2) == HIGH) {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
if(digitalRead(A3) == HIGH) {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
}
}
実際の動作
ちゃんと動作しました。モータードライバーはこの後触ってみると、ちょっと熱くなっていました。
まとめ
フォトカプラを通して電圧を制御することは大丈夫そうです。今回はモータードライバーを制御しましたが、同じようにして他のICも制御できることでしょう。
次はフォトカプラを使って、Spresenseのようなマイコンと外部の機器を中継する基板を作ろうかなと思っています。そのときはフォトカプラを4回路分内蔵したICを使ってみてもいいかもしれません。以前注文した時に、在庫が無かったんですよね…