« 2009年12月 | トップページ | 2010年2月 »

2010年1月の記事

MOS FETを使用したハイサイドスイッチ

GPSモジュールをSTM32 Primer2に組み込んだ際に、CircleOSからGPSアプリを起動した時にGPSモジュールの電源をONにし、アプリ終了時に電源OFFを行いたいと考えています。GPSプロジェクトは遅々として進んでいませんが、今回は電源ON/OFF回路の実験で分かったことを記載します。

MOS FETを使ったハイサイドスイッチ回路

当初、stm32circle.comのプロジェクトに登録されているLocus GPSの回路を拝借しようと考えました。以下のような回路となっており、Pch-MOS FETを使用してGPSモジュールのVCC側でON/OFF制御を行う、いわゆるハイサイドスイッチになります。Primer2のVCC(本体の電源ON/OFFと連動)は2.8Vとなっており、GPSを駆動するためには電圧が足りないため、FETにはVBAT(バッテリーの出力電圧)を印加します。バッテリーの出力は当然常時ONのため、この意味でもGPS電源のON/OFF制御が必須となります。

この回路では、FETのGateをVBATにプルアップしているため、MCUリセット時のGPIOピン初期状態(入力モード&Hi-Z)ではFETがOFFとなります。そのため、CircleOSが起動した時点(GPSアプリはまだ起動していない)では、GPS電源OFFを保障できます。

HighSideSW-PFET2

ただし、この回路には次の問題がありました。MCU の電源が入っていない状態(VCC = 0V)では、GPIOがHi-ZではなくGNDと導通した状態になるようで、FETが以下のようにON状態になりました。FETは手持ちの2SJ128 を使用し、VBATは3.3V電源で実験しています。

①R1 = 10KΩにおいてMCUのVCCを0Vにした場合
・Gate電圧: 1.46V
・Drain電圧: 1.81V → 半分ON状態

②R1 = 47KΩに変更すると以下となりました
・Gate電圧: 0.85V  → GPIO~GND間がつながった状態になる
・Drain電圧: 3.23V → 常時ON状態

これでは、Primer2を電源OFFにするとGPSモジュールが通電状態となってしまうためスイッチの意味がありません。上記の実験はMCUとしてArduino Nanoを使用していますが、STM32を接続した場合でも、MCUの電源OFF時に(Gate電圧が低下して)FETがON動作する同様の事象が発生します。

Pch-MOS FETの場合、Gate電圧が0でON状態となるロジック的には負論理動作ですが、問題を回避するためには、正論理のスイッチ(Gate電圧0ではOFFで、電圧HiでONとなる)が必要です。Nch-MOS FETを使用すると正論理の回路が組めて調子がよさそうですが、NMOSはGND側にスイッチ回路を挿入するローサイドスイッチになります。回路図は割愛しますが、GPSモジュールのVCCにはVBATを直接接続し、NMOS FETを使ってGNDピンとG間でON/OFFの制御を行うイメージです。

電球やモーターの制御ならローサイドスイッチでもよいのですが、電子回路がつまったGPSモジュールのVCC側に電圧をかけてGNDピン側をオープンにしておく使い方は気持ちが悪いため(悪影響があるかは分からず)、やはりハイサイドスイッチで行きたいと思うのです。

NPNトランジスターとの2段接続

解決策をググッて調べたところ、NPNトランジスターとの2段接続で正論理が組めそうです。以下の回路で実験したところ問題が解決しました。NPNトランジスタは手持ちの2SC1815です。

HighSideSW-NPN_PFET2

この回路ならNPNトランジスタのベースがプルダウンされているため、MCU電源OFF時もスイッチOFF状態を維持できます。Arduino Nanoを使って動作試験を行った際の写真を以下に示します。

PowerCTL_test

Arduinoでドライブする場合、R1を割愛しても動作は可能でした。ただ、R1はベース電流の制限抵抗となるため割愛しない方がよいと思われます。R1がない状態で、GPIOピンのHighに代わって電源の3.3Vを接続すると電源が停止しました。(B-E間に大電流が流れてシャットダウンしたか?)

R3の値は、トランジスタのCE間電流(スイッチ回路の消費電流になります)が小さくなるように大き目の値としました。FETのスイッチング特性を加味して値を決めたわけではありません。このあたりはアナログの世界になって奥が深いと思いますが、理解が追いつかない部分です、、、

トランジスタのベース電流(こちらも動作時の消費電力になる)を小さくするために、1段目の素子としてNch-MOS FETを使う実験も行ってみました。FETは2SK241を使用。こちらはGate電圧0でもFETが常時ONになってしまいNGでした。2SK241は高周波スイッチング用のため、DC領域の使用には適さないのでしょうか?

2011/10/29更新:
かつぽんさんから上記NGの原因についてコメントをいただきました。2SK241はそもそもスイッチング用でないため、ゲート電位0でもドレイン電流が流れてしまい、二段目のPch-MOS FETが常時ONになることが原因でした。

今後の予定

STM32 Primer2の拡張基板は面積の制約が大きいため、2段構成の回路(部品点数にして5点)を載せる場所が厳しそうです。実は前回の記事で使用したLS20031を使用したGPSレシーバーモジュールは、裏面のチップ抵抗を剥がしてしまいあえなく起動不可となってしまいました。どうも、部品の扱いが雑で破損が多いです(反省)。前回のブログ記事にも書きましたが、GPSモジュール上面にアンテナがあるパッチアンテナ型だとケース内にアンテナが隠れてしまう問題もあったため、アンテナをケース外に出せるチップアンテナ型のモジュールを新たに購入しました。選択したモジュールはSparkFunさんのGPS Micro-Miniです。写真の左が新たに購入したGPS Micro-Mini、右がLS20031です。

GPS_Mod

もともとGPS Micro-Miniも選択肢として考えていたのですが、値段が高いため躊躇。結局買う羽目に、、 GPS Micro-Miniなら幅が狭いため、ON/OFF回路の部品も載りそうです。ただ、Tr/FETはSOT等の小型部品が必要かも。LS20031が死んでしまったため、ちゃんと比較ができませんが、ケースなどの遮蔽物がない状態での感度はGPS Micro-MiniよりLS20031の方がよい感じがします。なので、LS20031も捨てたものではなかったのですが、、

GPSモジュールのON/OFF制御ですが、GPS Micro-Miniのデーターシートを見ると、ハイバネーションモードの制御ピンがあります(100nsのパルス入力でハイバネーションと復帰をトグルできる)。また、ジャンパーを切り替えることで、電源投入時はハイバネーション状態で起動するモードもあります。この機能を使えばハイバネーションによってON/OFF制御の代わりができそうです。そのため、次はハイバネーション制御のお試しを行う予定です。

2010/2/10更新
回路図の修正(FETのソース・ドレインが逆になっていたため修正)

« 2009年12月 | トップページ | 2010年2月 »

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ