オープン ドレイン 出力。 ラズパイのオープンドレイン出力

オープンコレクタ

オープン ドレイン 出力

STマイクロエレクトロニクスのSTM32やSTM8では、多目的に多方面で使用できると言う意味で「汎用」を付けて、「汎用IO」(General Purpose Input Output)と呼んだり、英文表記の頭文字を取って「GPIO」と呼んでいます。 港から荷物を出したり、入れたりするので、マイコンでもポートという言葉が使われています。 マイコンの場合の荷物は、0または1のデータになります。 GPIOの役割 図1にGPIOの最も簡単な使い方の例を示します。 【図1】GPIOの役割 押しボタンスイッチが押されていない時は、ポート2へは0(GNDレベル)が入力されますが、押しボタンを押すと1(電源レベル)に切り替わります。 一方、ポート1は通常は1を出力しておくとLEDは点灯せず、0を出力するとLEDは点灯するようになっています。 この2つの動作をマイコンのプログラムで連動させると、押しボタンを押せばLEDが点灯し、離すと消灯する回路が作れます。 実際は、押しボタンスイッチは制御回路の入力信号。 LEDはモータのドライバICなどにつながれて使われています。 GPIOの構成 では実際にGPIOの構成がどうなっているか見てみましょう。 構成は各社のマイコンで異なっていますので、詳細は各マニュアルを見なければなりません。 ここでは、STマイクロエレクトロニクスのSTM32のGPIOをベースにして説明します。 図2にGPIOの構成図を示します。 【図2】GPIOの構成 (クリックで拡大) 上半分が入力回路、下半分が出力回路です。 右側にGPIOピンがあって、ここからデータが入ったり、出たりします。 ピンのすぐ近くには、ノイズやサージ電圧を電源(またはGND)に逃がすための保護ダイオードが付いています。 入力データはCMOS回路で一度受け、その後内部回路に伝わります。 このCMOS回路を入力バッファと呼びます。 この図ではCMOSインバータを使っています。 マイコン内部から来た出力データは出力バッファによって出力されます。 このバッファはCMOSインバータの構成ですが、マイコン外部の回路をドライブするので、ドライブ能力の高いCMOSが使われます。 GPIOの構成で「NMOSオープンドレイン」と呼ばれる構成があります。 NMOSのドレインが開放状態、すなわちPMOSがNMOSにつながっていない構成です。 図2の出力バッファでPMOSがなく、NMOSだけで構成される場合を「NMOSオープンドレイン」と呼びます。 図2の右側に参考図として記述してあります。 このままでは1( Highレベル)が出力されませんので、外付けプルアップ抵抗が必要になります。 NMOSオープンドレインは、I2Cなどの通信用端子に使われています。

次の

オープンドレイン(オープンコレクタ)またはプッシュプル(アクティブドライブ)になるようにNIデバイスを構成する

オープン ドレイン 出力

RA4は更なる罠を隠し持っています。 下の回路図を見てみましょう オープンドレイン出力のRA4をプルアップして正論理でLEDを光らすというものです。 一見これで何の問題もなさそうです。 (プログラムはCで記述。 コンパイラ:HI-TECH C PRO Lite mode ) バッチリ全LEDが点灯しました。 RA4などいじっていないのに・・・ これは 8ビットシリーズのPIC特有の現象です。 8ビットマイコンは1ビット単位の処理はできず、8ビット単位でしか処理できないのです。 一旦PORTAの全ピンを読込み、その値に対して演算してビット0だけを書き換え、またPORTAに戻します。 この1文目が重要です。 PORTAは出力ポートなのにあたかも入力ポートかのように読込んでいます。 この時のRA4ピンの電圧に注目しましょう。 これを説明するためにオープンドレイン出力であるRA4ピンの動作をスイッチで示したのが以下の図になります。 この図でRA4は何Vでしょう? LEDの電圧降下分である2V弱程度であることが分ります。 つまり、"LOW 0 " です!!! なんということでしょう! "1" を 出力しているのに、 入力として読むと "0"なのです! つまり、RA0を書き換えるとき、一旦PORTAを読込むが、その時にRA4について実際の出力とは異なる値を読み、 そのまま書き込んでしまうためRA4が書き換わってしまうのです。 ちなみにこれはRA4ピンでなくても出力ピンに低いインピーダンスの負荷をつないでいるときに起こります。 これを防止する最も確実な手段は1ビット単位での書き換えをしないことです。 代わりにあらかじめ、 PORTA用変数 char latA を用意しておき、 latA を自力で書き換えたあと、最後にPORTAを丸ごと書き換えます。 実は、PIC以外のマイコンには上記のPORTA用変数 char latA が もともとついているのです。 これを DATAラッチといいます。 つまり、8bitシリーズのPICには Microchipの陰謀により、 DATAラッチがないため、このような現象が起こるのです。 16bitシリーズのPIC dsPICやPIC24F にはDATAラッチがあります。

次の

オープンドレイン出力のリレー制御

オープン ドレイン 出力

2 オープンドレイン LPC1114のdp5とdp27は、内部でドレイン端子が接続されていないオープンドレインです。 オープンドレインの話をする前に、ほかのピンが出力ピンとして設定されたとき、内部回路はどうなっているか見てみましょう。 図3をご覧ください。 オープンドレインでない出力ピンは2つのMOS FETによってプラス側かグランド側のどちらかにつながった状態になっています。 このような構造をCMOSといいます。 MOS FETには3端子あり、それぞれの端子にはゲート(Gate)、ドレイン(Drain)、ソース(Source)と名前が付いています。 この名前の付けかたは電子の流れを意識したものなので電流の流れとは逆になっています。 図3 簡単に言えばこのMOS FETは電流の流れを制御するスイッチのようなものです。 蛇口に例えるとソースが水が供給される水道管につながります。 ドレインが水が出る蛇口、ゲートが蛇口を開け閉めするコックとなります。 この出力ピンに1をセットすると、上側のMOS FETのみがONになりプラス電源とピンがつながります。 よってピンの電圧は電源電圧に近い値になります。 図3のように配線された発光ダイオードは点灯します。 一方このピンに0がセットされると、下のMOS FETがONとなりこのピンはグランドに接続されます。 このピンの電圧をグランドレベルになり接続した発光ダイオードは消灯します。 ただ流せる電流はというと(MOS FETの能力によりますが)、この様なマイクロコントローラーに内蔵されているものの場合、数mAから数10mAといったところで、LEDを点灯させるのが精いっぱいです。 それ以上電流を流そうとするとこのピンの出力段のMOS FETが破損する場合がありますので注意してください。 くれぐれもGPIOを出力ピンに設定する場合、抵抗なしでLEDにつないだり、GNDや電源につながっていないか確認してください。 CMOSタイプの出力ピン同士をつなぐことも禁物です。 それではオープンドレインの場合を見ていきましょう (図4)。 オープンドレインはグランドにつながったMOS FETのみ構造となっています。 オープンドレインの出力ピンを1にセットするとこのピンはグランドに短絡し、出力電圧はグランドレベル(ほぼ0V)となります。 LPC1114の場合、プログラムでセットした値を反転してゲートに入力しています。 図4 一方、このピンに0をセットすると、MOS FETはオフになり、どこにもつながっていない状態となります。 これをハイインピーダンス状態といいます。 この状態ではデジタル的に0とも1ともどっちとも付かない状態なので、図のようにプラス電源とピン間に抵抗を入れます。 これをプルアップ抵抗といいます。 この抵抗によりハイインピーダンス状態では1となり、0か1かが必ず決まります。 このピンに対してプログラムから0をセットした場合、ピン自体はハイインピーダンス状態ですが、このピンは抵抗を通してプラス電源に引っ張り上げられていますので、結果として出力は1となります。 ではこのピンにプログラムから1をセットした場合はどうでしょう。 MOS FETはオンになりピンにつながったドレインはグランドに短絡します。 結果として出力は0となります。 それではオープンドレインのピンに発光ダイオードをつないで見ましょう。 まず 図5のように発光ダイオードを接続してみましょう。 プログラムから0をセットしたときはMOS FETのドレインはどこにもつながっていませんので、発光ダイオードはプルアップ抵抗から流れてきた電流で点灯します。 プログラムから1をセットしたときはMOS FETがオンとなりドレインとソースがつながります。 その結果今まで発光ダイオードに流れていた電流の大部分は内部のFET側を通ってグランドに流れ込みます。 よって発光ダイオードは消灯します。

次の