« GPSモジュールをテストする | トップページ | STM32 ADCの設定 »

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のソース・ドレインが逆になっていたため修正)

« GPSモジュールをテストする | トップページ | STM32 ADCの設定 »

STM32-ARM」カテゴリの記事

コメント

はじめまして。ちょっとGPS Micro-Miniでわからないことがあって調べていたらこのサイトを知りました。
GPS Micro-Miniなのですが、VccとGNDを電源につなげば、何もしなくても(こちらからコマンドを送らなくても)勝手にTX-DからGPS情報が出てくるのでしょうか・・?
一応メッセージは出てくるのですが、ずっと以下のように、肝心の位置情報が出てきません・・
$GPGGA,000928.091,,,,,0,00,,,M,0.0,M,,0000*5D

何かコマンドを送らなくてはいけないのでしょうか?それとも単に電波を受信できていないだけなんでしょうか・・??

初歩的な質問ですいません・・アドバイスなどがあればお願いしますm(__)m

特にコマンドを送らなくても電源Onで位置情報が取得できていました。ただ、私の環境では、Position Fixまで1分強時間がかかることがありました。


$GPGGAメッセージなどが受信できているということは、GPSモジュールとのシリアルの通信はできているため、電波を受信できていないのだと思います。GPSは、衛星を3機以上補足しないと位置情報をFixできないのですが、マンションのベランダなど全天が見えない場所だと、衛星を1~2機しか補足できず位置情報Fixにならない場合があります。建物の外で360度近くの上空が見渡せる場所で確認することをお勧めします。


PCで動くGPSソフトを使うと補足している衛星の数や信号強度をリアルタイムで表示してくれるため、受信状況の確認に役立ちます。私は、VisualGPS(http://www.visualgps.net/VisualGPS/default.htm)を使っていました。

返答ありがとうございました。

教えていただいたソフトを使ってみたら、どうも衛星が捕捉できていなかったようです・・
別のメッセージで、衛星が捕捉できていると勘違いしていました。

思いのほか感度が低いんですね・・もっと開けた場所で試してみたいと思います。

一点追記があります。

私が試した限りでは、GPS Micro-Miniはノイズに弱い部分があります。VisualGPSを使って動作確認をする場合は、USB-シリアル変換を使ってPCと接続すると思いますが、見通しがよい場所でも受信しない場合は以下の点を確認するとよいです。


1)ノイズ源であるPCからできるだけ距離を離す

2)USBから電源を取らず、別電源(電池)からGPSに給電する


以下のURLにmbedでGPS Mirco-Miniを動かした時の写真がありますが、mbedの近くにGPSモジュールを配置するとMCUからのノイズのせいか感度が低下してしまうため、写真のようにできるだけ離れた位置に配置しています。


http://mbed.org/users/todotani/notebook/gps-nmea-parser/

だいぶ遅いレスで申し訳ありませんが、2SK241はスイッチング用のFETではありませんので、ゲート電位がゼロでもドレイン電流が流れてしまいます。データシートを見て下さい。
http://www.e-ele.net/DataSheet/2SK241.pdf
Vds=3.3Vの時、Vgs=0Vでも8mA弱流れてしまいます。

スイッチング用のFETですと、ゲート電位は数V以上でないとドレイン電流は流れませんが。こういうFETを「エンハンスメント型」と呼びます。

かつぽんさん、
コメントありがとうございました。
FET種別による特性の違いなんですね。勉強になりました。

この記事へのコメントは終了しました。

« GPSモジュールをテストする | トップページ | STM32 ADCの設定 »

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      
無料ブログはココログ