ラズパイちゃんの目覚め。私は誰?

2018.03.16(sincesince2018.03.08)
サイトマップ トップ < ラズパイの部屋 < . >  LEDとDiodeの差

Lチカキットの話題から、プルアップとか、プルダウンの話独立。 そもそも、CdSセンサーで光源有無判断する実験の一つがうまくいかないという噂で、Cdsの抵抗値と内蔵抵抗の値を調べてみた。するとCdSの抵抗変化はまあ案内書の範疇(1kΩ~無限大)。するとプルアップ抵抗がおかしい?、結論は最初に読んだ実験案内の手法では、プルアップ/ダウン付入力回路にならず出力になっていることが分かった。 教わったまっとうな切り替えコマンドは、オリジナルページのを修正。

CdSの抵抗値測定は、屋内照明(1kΩオーダ)と、炬燵の中で遮光の状態(断線40MΩ以上)。昔の炬燵は、無理やり赤い色の光で満たされてましたが、十年くらい前?(記憶あいまい)に買ったものは、真っ暗。別に暖かければそれでいいという説もあるけど、あれ?こたつの電源は?暖かいのは電源入っている?それとも余熱?ととっさにわからない。ケーブル中間スイッチの表示もあるしコンセントもパイロットランプが個別にあるので、切れているのはわかるけど、暖かくならないのは、待てばいいのか、ケーブル外れたとかわからなかったりする。 豆LEDでもよいので光らせる方が安全だと思うぞ(切り忘れは最悪火事もあるかもしれないし) > 家電メーカ殿

専用システムICなら端子処理は決まった回路でよいけれども、汎用CPUボードでは、入出力は設計しだいだが、入力回路が浮く(Hiz状態で、誰も、値を決めないので不定状態:論理H/Lが不明という軽い話ではなく、CPUの、0V, 3.3V(とほぼ同等)という値に対して、その範囲外を含め、電圧不定)では、破壊の危険性があるし、逆にリセット時出力にすると、つないだものが出力だと、これまた両者壊れる可能性がある(偶然両者が、Hとか、Lを共に出したならいいけど、初期値不定はありうる)、まして同一電源のIC同士の衝突ではなく、大電圧素子から低い電圧素子への出力の場合は、全滅しかねない。

ラズパイのGPIOに対して、ブート時にどのような設定になっているか、測定推定してみた。

8pinあるGNDは、全ピンショート、ラズパイ電源のGNDともショート
2pinある5Vは、ともにショート。ただし、ラズパイの電源入力ピンとはショートではない(保護ダイオードくらいどこかに入っているかな?)
2ピンある3.3Vはともにショート(基板内部生成なので別端子なさそう)。

注意:単体ラズパイでの調査で追試験してませんから、これに間違いがあってこれに従って運用して何か不具合が起きても責任とれません。利用する場合は、きちんとした調査の上各自の判断の上でお願いします。予備調査程度の参考資料だと思ってください。まあ本来はICハード仕様書探すべきでしょうね。

コメント 開放電圧 信号名 コネクタ 信号名 開放電圧 コメント
ピン番号
3.273 3.3V 1 2 5V 5.06
R2=1.7k R2up SDA,#2 3 4 5V 5.06
R2=1.7k R2up SCL,#3 5 6 GND
R=48k Rup #4 7 8 TXD,#14 (IN) (0)
GND 9 10 RXD,#15 Rup R=48k
R=48k Rdown #17 11 12 #18 Rdown R=48k
R=48k Rdown #27 13 14 GND
R=48k Rdown #22 15 16 #23 Rdown R=48k
3.273 3.3V 17 18 #24 Rdown R=48k
R=48k Rdown MOSI,#10 19 20 GND
R=48k Rdown MISO,#9 21 22 #25 Rdown R=48k
R=48k Rdown SCLK,#11 23 24 CE0,#8 Rup R=48k
GND 25 26 CE1,#7 Rup R=48k
R=48k Rup SDA,#0 27 28 SCL,#1 Rup R=48k
R=48k Rup #5 29 30 GND
R=48k Rup #6 31 32 #12 Rdown R=48k
R=48k Rdown #13 33 34 GND
R=48k Rdown #19 35 36 #16 Rdown R=48k
R=48k Rdown #26 37 38 MOSI,#20 Rdown R=48k
計測基準 GND 39 40 SCLK,#21 Rdown R=48k
pin3,5の呼称R2=1.7kΩは、噂では、基板にプルアップ抵抗ついてる説あり(未確認:基板の配線追いかえればよいけど、ディスプレイとねじ止めしたラズパイ君の配線追いかけるの面倒だったりするので知らんぷり。抵抗モードのテスターで端子と基板上の抵抗の足を突っつけば分かるはずだけど)。

pin8のTXDは、不明(電圧計では安定しない。後でオシロででも見る予定ですが、RS232Cの本来出力モードのまま?)
 gpio readall コマンドによると、入力端子設定で、データは”0”としてリードしたとのこと(テスターの意見とは違う気がするが)
オープンでは0Vで触ると大きく電圧変わる浮いた感じの端子(個人差?)(2018.03.13)指で触ると浮いていて0.5V程度のラインノイズが乗る雰囲気
最終確認まだできないが、試すと、他のピンは入力設定で所定のプルアップとかプルダウンになるが、このピンだけ素の入力になるのかな?
pin23,24,26,28は、ラズパイインタフェース設定コマンドでSPI有効にすると、出力モードになるのを確認。RS232C通信で複数デバイスの衝突どうしようというのが卒論テーマ(の最終目的で未完)。いま知らないうちに、CE端子を使って、同一ポート(装置間で信号ライン共用)に複数デバイを、ホスト(この場合ラズパイ)が、選んで使える仕様になった模様。確かに昔もハンドシェーク機能はあったけど、そのまま流用の運用上手なだけなのか、新規追加仕様なのか勉強しなおす程の意欲無し)。

プルアップ&ダウン抵抗値は、利用したラズパイ1台の実測からの計算値では、48k±1k Ω程度と思われる。E系列の抵抗値なら47kΩといいたいが、IC内蔵抵抗はこの制約でしばる必要ないので、47k(あるいは51k?)狙いのばらつきな範囲なのか、そもそも限の良い数字50kΩ狙いなのかよくわかりません。今回調査のラズパイ君は日本産ということですが、同じメーカでも、IC量産工場のラインが変わるだけでアナログ性能半端なく変わるという悲しい思い出があってよくわかりません。
#一括ポート状況報告コマンド実施(SPIは禁止)
gpio readall
によると、上記調査あっていると思わる。

豆知識 抵抗値の推定方法   必要なもの: テスターと、抵抗一本と抵抗をつなぐ線材(ハーネス)。
(直流DC)電圧測定モードテスターの黒リードをGND(上記測定例では39pin:単に端っこが好きだっただけです)につなぐ。アナログテスターでは黒赤間違うとテスター壊すかも(単なる脅しですけど、少なくとも振り切れるので精神的にもよろしくない:(私物)ディジタルテスターはAC/DC自動判別なので逆接ありかもしれんが利用テスターの取説読んでね。まあ原則にしたがいましょう)。
テスターの赤リード棒で、検査したいピンの電圧を測定します。その端子が出力モードで、さらに”H”出力ならば、ほぼ3.3V電源端子(3,5pin)と同じ電圧、もし”L”出力ならGND端子とほぼ同等になります。
出力でプルアップ有り無しは必然ではないので放置して、入力設定の場合、単純プルアップだと、プルアップのオン接続用SWによる電圧降下があるので、10mV程度?低い電圧だと思います(アナログテスターだと1%未満誤差は読みにくいかも)。さらにその端子を指で触るとプルアップ付入力端子なら、電圧が、0.2~0.4Vアップすると思います(入力保護ダイオードの閾値相当かな?)。通常出力だとこの程度ではびくともしないので区別つきます。ただし何ボルトというのは個人差あるかも(家のくもあし配線の実験場だと、ライン系のノイズが飛び込んでいるのがオシロをつなぐとみえたりしました)。 冬、車のドアノブさわると結構静電気でショックを受けることの多かった私だったりします。ノーマル”L"出力ならびくともしないけど、プルダウンも0Vに対して指で触るとかすると電圧が微妙に動くのがわかるはず。

で、ノーマル出力ではなく、プルアップ(ダウン)だったとき、抵抗値の見極め方法。ラズパイ君はLEDちかちかキットで電流制限抵抗として200~300オームの抵抗をパッケージしていますので、10~15mA程度は平気であると想定しているようなので、1kΩ程度なら余裕で引っ張れるはずです。実験用プルアップ(ダウン)の10kΩも使ってみましょう。
3.3V端子の基準電圧を、VHとします。測定ピンのプルアップの解放電圧を、VoH1、抵抗Rの一端をGND,もう一方をこの端子につないだときの電圧を、VoH2としましょう。
抵抗Rに流れる電流Ihは、抵抗値R(測定計器の精度統一という意味でも実測しましょうか?)を使い
Ih=(VoH2 - 0)/R ;#0VはGNDの電位。数mV説あるけど、VHやVoH1の有効測定精度と比べるとゴミ説(なんなら、これで0V調整してもよいけど)
上記電流は、内蔵抵抗(および今回無いけど出力トランジスタのオン抵抗の並列回路合成抵抗)から流れだします。従ってその内蔵抵抗Rinの値は電位差から
Rin=(VoH1 - VoH2)/Ih = R*(VoH1 - VoH2)/VoH2
内蔵プルダウンの場合も同様なので、考えてみてね。 外付け抵抗値が、1kの場合と、10kの場合に差があるか?というと、測定誤差と大差なし程度の可能性もありますが、IC内蔵の抵抗の作り方が物理的な抵抗シート体利用の場合はそっくりですが、トランジスタのオン抵抗利用する(省リソース対応)場合、トランジスタの動作点(トランジスタのオン抵抗は一定ではなく、直流電圧がどのようにバイアスされるか)によって特性が変化しますから、どの程度電流流して、電圧ドロップがいくらあるから、動作点はどこか?という話で変わってきます。 あ、勘違いしないように。プルアップ抵抗の意味は、入力端子が、電圧不定で勝手に直流パスができて電流が流れてしまうのを防ぐのが目的なので、50kΩが40kになりました程度で問題にならないように使うのが正しい。それが問題ならばIC設計者もばらつきの少ない方法で設計します(安定したパラメータで抵抗を作ろうとすると、大概大面積を使うことになるので、ICが大きくなる→高くなる ので、よっぽど必然性が無い限り適当に作る方が、作る方も、使う方も幸せだったりします)。 
実は、入力でプルアップ(ダウン)抵抗の場合を想定した解説ですが、出力回路の場合も同じです。最初に、1kΩなら平気といったのは、出力の場合でも(壊れるという最悪の)影響のない抵抗を選んでいたのです。プルアップ抵抗と、トランジスタのオン抵抗は、大概桁違いにトランジスタが低インピーダンスなので、プルアップ抵抗あっても誤差の範囲と考えて十分でしょう。こんかいラズパイ君の出力インピーダンスは、2ピン程はかりましたが、大体30Ω程度だと思います(思いのほか高い?)

入力端子にプルアップ・プルダウン抵抗の意味。最悪壊れるのを防止する意図があります
ラズパイ入力回路に何も電圧設定するものが無い場合、その電圧は不定になります。誰もそこに電位を与えないけど、静電気ノイズが飛び込むとか、いろいろな電位になる可能性があります。

0V-3.3vの範囲外になる場合の壊れる理由
0Vより低い電圧の場合、大概入力回路には保護ダイオードが入っていて、0Vより低い、-0.4V程度(目安:トランジスタがオンになる電圧:閾値、スレッショルド電圧)以下になると、この保護素子が、端子電荷をICのGND電位に引き込んで、それ以上低い電圧になることを防ぎます。また、3.3Vより高い電圧になった場合も、保護ダイオードが入っていて、3.7V(目安)程度以上になると、ラズパイの電源方向に、電流を流して、それ以上高い電圧になることを防ぎます(大電力低インピーダンスソース起因ではなく、指で触るとか静電誘導等の電荷によるものを想定しています。 例えば5Vの電源をつなぐと、保護ダイオードに(5-3.3)Vの順方向電圧がかかって、大電流が流れます。5Vの電源が勝つか、3.3Vの電源が勝つか、それとも、保護ダイオード(と入力トランジスタ)が焼切れるか運しだい。5V電源が勝つと、ラズパイの電圧も5Vになります。、3.3V駆動前提の微細加工の半導体は、絶縁膜が薄くなって耐圧が下がるので、5V電源印加すると、壊れる可能性高いはず。少なくとも劣化、寿命が短くなる)。

中間電位(たとえば1.6Vの場合)の壊れる理由 (2018.03.15)記述書き換えでわかりやすくなった?
CMOS回路が低消費電流と評価される理由を考えましょう。
まず、FETの制御入力(ゲート)を除いて、ソースとドレインを電源からグランドに結ぶ線を引いてみましょう。 
たとえばNANDデートでは、PchFETが2個並列につながって、NchFET2こが直列につながったY型の線が引けます。Pch2ケとNch1けがつながった点が、Nandデートの出力になります。
この一連のFETは、入力1つが”L"であると、Nch直列FETが少なくとも1ケオフになり、同時に”L"の入力されたPchFETがオンになって電源とつながります。従て出力は”H"となるけれども、Nch側がオフなので、直流電流(ゲート貫通電流)がありません。 ちなみに2つの入力ゲートがともに”L"につながっても、両pchFETが電源につながるだけで、NchFETがオンにならないので、直流電源は流れません。建前ゲート入力は絶縁体なので電流を流しません(これがFETの入力インピーダンスが高いという意味です)。
2入力とも”H"の場合、PchFETは両方オフで、Nch直列FETは両方オンになるので、出力が”L"に固定されますが、Pch側ともにオフなのでやはり直流電流は流れません。
つまり電源とGNDに間につながった一連の(ゲートという単位で考える)複数PchFET群と、NchFET群が同時にオンにならないので直流電流(貫通電流)が流れない。従て消費電力が少ない。少ない消費電力は、この群トランジスタが、次段入力電圧制御FETなので、微細コンデンサ(FETの入力容量と、配線容量)を充放電するだけで、複数ゲートとしても、直流電流を流さないから、切り替わりのスイッチング電流以外無視できることに消費電流が少ないという話になります。

ところが誰も電位を定めない入力トランジスタの電圧が、たとえば1.6Vになった場合、PchFETも十分オンになる電圧ですし、NchFETも十分オンになる電圧です。通常動作時は、数ナノセカンド(10^(-12)秒オーダ)の一瞬の素通りなので、何もなかったことにできますが、常時この中間電圧になると、PN両FETが常時オンになり、3.3V→0Vに大電流(貫通電流)を流し続けることになります。結果温度上昇により破壊されることになります。単体ゲートの出力がPNFETが衝突して電流流れている場合、出力電圧もHとかLのきっちりした電圧でなく、また中間電圧を出力することになり、じゅづつなぎに、貫通電流を流すゲートが大量発生し、結果システム全体おかしくなる可能性心配しなくてはいけません。
不定であっても、通常回路が出力している場合、0Vか3.3Vかどちらしかないので、壊れる心配はあまりありません。複数装置を使う場合、全部つないで同時に電源投入するというのは、不定回路が、中間電位を作らないという安全策だったりします(もちろん安全対策あるし、中間電圧を供給する回路がある場合と違い、静電誘導等の偶発状態は一時的に問題になっても長時間継続しないので、のでよっぽどのことがないと、壊れないとは思いませんが、運が悪い場合は何かが起きる!!IC・素子単体では壊れないとしても、不定状態で、それぞれ誤動作して、システム・装置全体で暴走するという話は別です。

中間電位になりやすい状態として、たとえば、データバスがあります。いろいろな装置が時分割でデータ出力したり、別のいろいろな装置が時分割でデータ読む配線群です。たとえば、CPUのデータバスは、ROMからデータ出力されることも、RAMからデータ出力することも、逆にRAMにCPUがデータを出力することも、他のLANとかUSB装置から出力されたデータをCPUが読むこと等、DMA含めると多彩な状況があります(実際にはいくつかの専用ローカルバスに分かれて、それぞれ専用に分離されたりするものもある)。
LSI設計システムの検証項目で、バスが長時間ういている(だれも出力しない)ので、対策(誰も出力しない場合に、代理出力する回路を別途追加せよとか)クレームをつけられたことがあります。 設計ツールにこういわれたときに、バスは浮いても、入力回路の電圧不定でも、貫通電流流さない工夫しているので、そのままIC作ると主張して原則に逆らった黒歴史があったりしました(注意ではなくはっきりエラーなので本来はIC作らせてもらえないが、この場合はエラーを出すのが悪い(ツールの考えが甘いと)原理を説明して強行 >ごめんね担当部署)。 たとえば先の例に示したNANDゲートは、一方の入力が”L”に固定されれば、もう一方のゲート入力がL,でも、Hでも、中間電位であっても、出力H固定が確定してますし、ゲートの中の全ノード不定のノードは発生しません。

------------------------------------
サイトマップ トップ  < ラズパイの部屋 < . > LEDとDiodeの差