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は開放状態、つまり差動入力にしています。

前へ

SpresenseでLチカから始める (12) アイソレータ Si8710BC

次へ

SpresenseでLチカから始める (14) Wireライブラリ 温湿度SI7006-A20