SpresenseでLチカから始める (10) アイソレータ TLP152
Spresenseのデータシートを読むと、GPIOは2もしくは4mAの電流が扱えます。gpio statの実行結果のなかで、mAの項目が電流の設定値です。gpio statはUbuntuにインストールしたSDKのコマンドの一つです。
解説の場所によっては6mAという表現もでてきます。どちらにしろ、CPU本体も消費電力の少ないタイプなので、できるだけ、電流を流すのは、外部の電源を利用するような形が望ましいのでしょう。メイン・ボード上の四つ並んだLEDもデジトラ(スイッチング用途に抵抗が付加されたトランジスタ)で駆動しているので、CPU本体からの電流はほんのわずかで駆動されています。
●誘導負荷でない場合
負荷電流が100mA以下のような電流が少ないときはデジトラを入れることで、負荷をON/OFF制御できます。ゲートのVthが低いMOSFETを使うと、数A単位のON/OFF制御ができます。中電力のパワーLEDなどは次のような回路で対応できます。
●ソレノイドやモータの場合は特別扱い
上記のLEDの例でも、マイコンとLEDの電源は別になってもグラウンドは共通で使えます。コイルが負荷のときは、グラウンドを分離して、マイコン本体が誤動作しないような駆動方法を選択します。グラウンドを分離するには、次の方法があります。
- リレーを駆動して、接点でアイソレーションする
- 半導体リレーを駆動して、光でアイソレーションする
- フォト・カプラを使い、光を使ってアイソレーションする
- マイコンの出力信号レベルでアイソレーションする
フォト・カプラを使うと、ある程度の高速でON/OFF制御ができ、実績があります。この数年、ディジタル信号、I2CやSPI信号をアイソレーションするデバイスが各社から発売されています。絶縁する方法は各社異なります。これらを使うと電源とグラウンドをマイコンと負荷で分離できるので、ノイズなどによる誤動作の原因を最小限にできます。
●フォト・カプラTLP152のおもなスペック
TLP152は、秋月電子通商で入手した東芝のフォト・カプラです。ある程度の負荷であれば、直接制御できます。1番と3番が1次側のLED、6番が2次側のVdd、5番が出力、4番が2次側のGNDです。
- トーテム・ポール出力(Nチャネル+Nチャネル構成) 6V(最小)
- 出力ピーク電流 ±2.5A (最大)
- 電源電圧 10~30V
- 入力側のLEDの電流 10mA
- 伝搬遅延時間 tpHL=190ns(最大)、tpLH=170ns(最大)
●駆動回路
実験は、ブラシ付きDCモータを1方向に回転させるだけの回路を考えます。回転方向を変えるには、Hブリッジ回路が適しているので、専用のドライバを利用するのが手軽です。
Spresenseの拡張ボードのGPIOはほとんどが1kΩで電源(3.3もしくは5V)へプルアップされています。したがってArduino UNOが電源が入ってI/Oポートの初期がが行われる間LOW状態とは逆にHIGHになります。Spresenseは、マイコン・ボードへの書き込み時間に時間がかかるので、HIGH状態は10秒以上続いたのち、スケッチが動き始めます。
したがって、I/Oは電源が入った直後はHIGH状態で負荷が動作しない回路にしないと、予期せぬ動きになります。
SpresenseのI/Oポートから2mA弱の電流を取り出すと仮定し、2SC1815もしくは2SA1015でフォト・カプラTLP512のLED=10mAを駆動します。フォト・カプラの1次側にあるLEDまでの電源は、Spresenseの拡張ボードの5V(Vout)を利用します。
フォト・カプラの2次側の12V(6番ピン)とモータの12Vはエネループの電池を利用します。利用したギヤード・モータはストール時に約2.4Aの電流が流れるので、MOSFETの出力には1.1A(遮断2.2A)のポリスイッチを入れ、電源やMOSFETを保護します。
モータには還流ダイオード1N4007と0.022uFのフィルム・コンデンサを入れました。
●NPNトランジスタでフォト・カプラを駆動
回路図のように、NPNトランジスタを使い、入力がHIGHになるとフォト・カプラがONになる回路です。2次側の電源に12Vをつないだとき、フォト・カプラの出力5番には約11.3Vの電圧が出ていました。Spresenseは5V動作です。
実験では、2次側の電源にエネループ8本を使って約10Vをかけています。Spresenseの3番ピンPWM出力ポートを上記の回路の入力(I/O)につなぎます。スケッチはloop()にanalogWrite(3,120);を記述しただけです。引数の120はデューティ約50%のPWM出力です。USBケーブルをつないだ時点でSpresenseのI/OポートはHIGHなので、モータは最速状態で回転します。スケッチのコンパイルが終わり、マイコン・ボードへの書き込みが終了し、数秒後に回転数が下がりました。
●PNPトランジスタでフォト・カプラを駆動
上記の入力部分をPNPトランジスタに変更し、入力がLOWになるとフォト・カプラをONするように変更しました。
USBケーブルをつないだ時点でSpresenseのI/OポートはHIGHなので、モータは停止しています。スケッチのコンパイルが終わり、マイコン・ボードへの書き込みが終了し、リセットがかかると、数秒間回転数が最大になり、数秒後に回転数が下がりました。
電源が入ってからSpresenseの3番ポートの電圧の変化を見ました。スケッチanalogWrite(3,120);は、約50%デューティ出力なので電源電圧の約半分の電圧がロギングされます。
リセットがかかったと約3秒間LOWになり、スケッチが動き出します。もしくはスケッチが動き出して約3秒間ポートにLOWが出力されています。この3秒間は、Spresense特有の現象と思われます。
電源を入れたときからのArduino UNOの端子電圧変化はこちらで測定しています。通常のディジタル入出力端子はLOWのままです。Spresenseでモータなどをつなぐときは、リセットがかかって5秒程度の時間をおいて電源を入れるようにするのがよいようです。
(※)2018/9/11追記;別の実験ではLOWになる時間が約200msでした。