SpresenseでLチカから始める (13) アイソレータ ISO7710DR
最初にアイソレータの定番であるフォト・カプラTLP152を使い、次に、そのフォト・カプラの置き換えができるアイソレータSi8710BCを利用しました。ここでは、ロジック・レベルで使うことを前提としたテキサス・インスツルメンツのディジタル・アイソレータISO7710DRを利用します。同社のアイソレータは何世代かあり、このモデルは最近の製品です。
●ISO7710DRの特徴
電源電圧は2.25~5.5Vに対応しているので、3.3Vと5Vのレベル変換にも使えます。このモデルは、内部に1回路が入っています。
ISO7710DRの入力にプルアップ抵抗が入っており、入力信号がないとき出力はHighになります。モデル名にFが付くのはプルダウン抵抗が入っており、入力信号がないときは出力はLowになります。アイソレーション部分はSiO2ベースのキャパシタを利用しています。
入力部分はシュミット・トリガになっており、5V電源の場合、立ち上がり時のON電圧は3.0V(typ)、立ち下がり時のOFF電圧は2.0V(typ)です。
- 電源電圧 2.25~5.5V
- 入力電流 ±10uA
- 出力電流 最大±15mA。5V時±4mA、3.3V時±2mA
- 信号速度 最大100Mbps
●接続
入手したISO7710DRは8ピンSOICだったので、変換基板を利用してDIP化しました。高速な動作をするので、電源端子近くにパスコンを取り付けました。IC自体は入力と出力側はきれいに分離できるようなピン配置です。変換基板はOPアンプ用で配線が入り乱れているので、カタログ・スペックの絶縁性能を出せるわけではありません。
最初は単独で動作させます。1次側のVcc1-GND1はArduino UNOの5VとGNDを接続します。2次側のVcc2-GND2はエネループ3本の約4Vの電池を接続します。
void setup() {
pinMode(2,OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1);
int i=0;
while (i<1000) {
i=i+1;
digitalWrite(2, HIGH);
delay(1); // wait for a second
digitalWrite(2, LOW);
delay(1);
}
}
オレンジ色がIn端子、青色がOut端子です。2次側の電圧は高めでかつ不安定ですが、入力に相似した波形が観測できます。
オシロスコープの二つのプローブのGNDを、共通なGNDに落としたときの波形です。
●MOSFETが直接駆動できるか
MOSFETは電圧駆動型なので、ゲート入力電流は流れません。というのはゆっくりとした動作の場合で、急速なON/OFFを行うときには、ゲートにある大きなキャパシタを充電するための電流を供給/放電する対策が必要です。
最初に、ISO7710DRの出力に直接MOSFETをつないで、オシロスコープで観測します。入力信号は次のスケッチを使って3番ピンからのPWM出力を使いました。
#define pinNumber 3
void setup() {
pinMode(pinNumber,OUTPUT);
}
void loop() {
analogWrite(pinNumber,225);
}
接続です。
オレンジ色はArduino UNOの3番ピン(約490Hz)、青色はMOSFETの出力に47Ωの負荷をつないでいるドレインの波形です。ドライブできているようです。
Analog Discovery2の発振器の出力をISO7710DRの1次側につないで、周波数を上げます。入力はデューティ比50%、3V0-pです。
◆100kHz
立ち上がり部分の拡大です。
◆1MHz
立ち上がり部分の拡大です。
◆5MHz
ゲートの波形です。
次は、ドライブ・バッファにPチャネル/NチャネルMOSFETを使います。両方が同じパッケージに入っているFDS4897Cを使いました。終段のTr3の駆動に電力が必要なときにも対応できます。
回路図です。 ISO7710DRの2次側の電源はエネループ4本だと実測で5Vを超えてしまうので3本(実測約4V)にしています。FDS4897Cのゲート電圧はデータシートによれば4.0V以上で確実にONになるので、Vcc2に4Vではなく5V電源を使うのが確実です。12V電源はエネループ8本なのでほぼ10Vです。
ゲート入力に入っているR2およびR3の値は、とくに実験で適切な値を選んだものではありません。スピードアップ・コンデンサや放電用ダイオードを追加すると、より高速なスイッチングが期待できます。R4はTr4のゲートをオープンにしないだけの目的で使われるので、10k~100kΩの範囲で任意の抵抗値でよいようです。
100kHzまでは問題なく駆動できます。オレンジ色は入力信号です。青色は47Ωの負荷を観測しています。二つのプローブのGNDは共通です。
回路図のパラメータでは、1MHz以上は駆動できませんでした。1MHz入力時の波形です。
立ち上がりの波形です。
●Spresenseの波形
下記のスケッチを動かし、MOSFETの負荷に47Ωをつないだときのドレインの波形です。
#define pinNumber 3
void setup() {
pinMode(pinNumber,OUTPUT);
}
void loop() {
analogWrite(pinNumber,225);
}
モータを負荷に接続しました。駆動したモータはフォト・カプラTLP152の記事と同じです。
回路図です。
波形です。2次側のオシロスコープのGNDは、1次側のGNDとは共通ではありません。青色の波形がMOSFETのドレインです。還流ダイオードと0.022uFのコンデンサをモータに入れてありますが、相当レベルの高いスパイク状のノイズが出ています。けれども、入力側の信号(オレンジ色)には影響はわずかです。実験はブレッドボードで行っているので、プリント基板を使い、ISO7710DRの入出力を分離し、グラウンドを強化し、デカプリング・コンデンサを適切に入れると、ノイズの影響はさらに低減できると思われます。
(※)Analog Discovery2のオシロスコープのプローブは差動入力です。専用のBNCアダプタを使うと、GNDは共通になります。通常筆者はBNCアダプタは使わず、入力1のGNDはAnalog Discovery2のGNDへつなぎ、入力2のGNDは開放状態、つまり差動入力にしています。