Arduino よもやま話-15 (未使用ピンの電圧変化の観察)
◆おさらいと、今回の調査
Arduino の未使用ピン(未定義ピン)の挙動の話の続きです。前回の記事では調査用のプログラムを使って信号レベルの変化を調べました。そこで判ったのは、デバイスやピンによってかなり挙動が違っていることですが、情報は1(HIGH)か 0(LOW)しか無いので細かな挙動までは判りませんでした。
そのあたりをはっきりさせるために、今回はオペアンプを使って入力ピンの電圧変化の様子を観察してみます。
◆調査に使った回路
入力ピンのインピーダンスはものすごく高いので、テスターやオシロではその電圧は測定出来ません。そこで CMOS のオペアンプのボルテージフォロアを使って測定しました。
・測定回路

使ったのは LMC6482 で、ボルテージフォロアで使い、出力の電圧をオシロで観察しました。インピーダンスが高いので簡単にノイズが乗ってしまうので、入力端子はシールド線を使って配線しました(この図はD10ピンの電圧を測定しているところです)。あと、オペアンプの空き端子はきちんと処置しておきます。
・実施のオペアンプ周辺の様子

入力ピン (pin3) の隣が GND(pin4) なのでシールド線の配線を行うのに好都合でした。
・全体の様子

中央が被測定対象の Arduino、右がオペアンプで、左のオシロで測定します。低速波形の観察なのでこういうオシロで十分です。(背後の MDF板の裏にはノイズ対策のためにアースに接続した金属板が入っています)
◆測定方法
前の記事で使ったプログラムをそのまま使いました。動作としては、ピンを一旦電源電圧までプルアップし、その後開放状態にして10秒待機。次にピンを一旦GNDに落とし、その後開放状態にして10秒待機、と言うパターンを繰り返します。その状態をオシロで観察、記録しました。このように記録時間が長い場合はデジタルオシロでないとやる気が失せます。
以下結果を見ていきますが、前の記事のピンの状態変化一覧表と一緒に見ていくことにします。
◆測定結果-A基板(UNO純正)
ピン状態変化リスト

・波形 A-D2ピン

GND と +5V の位置を矢印で示しています。
最初に+5Vまで電圧が上がっているのはプルアップしたためです。その後徐々に電圧が下がり、10秒後にGNDに接続したために電圧が急降下して0Vになります。その後は徐々に電圧が上昇し、10秒後に+5Vにプルアップというパターンを繰り返しています。以下の写真は全て同じ条件で波形を見たものです。
・波形 A-D12ピン

デジタル測定ではこっちの方が長生きしてたのに、電圧の低下はこちらの方が速いです。ピン毎の VIH の違いも見えていたということなんでしょう。
◆測定結果-B基板(UNO純正)
・ピン状態変化リスト

・波形 B-D4ピン

5V から電圧が下がっていく途中の 4V 付近で波形の傾きが変わっています。シュミットトリガ回路の動作が関係している気がしますが、どうなんでしょう。
・波形 B-D10ピン

こちらの波形には段付きはほとんどありません。2.5V を中心にきれいな上下対称な波形になっています。
◆測定結果-C基板
・ピン状態変化リスト

・波形 C-D5ピン

かなりはっきりした段付きがあります。これでもずっと HIGH レベルとして観測されていたということは VIH は2.8Vくらいだったということになります。
◆測定結果-D基板
・ピン状態変化リスト

・波形 D-D8ピン

デジタル測定ではまともだったピンですが、電圧変化もまあまともです。
・波形 D-D11ピン

電圧があっという間に1/2Vcc 付近に低下(上昇)していて、リークが大きそうな波形です。チップ内にコンタミなどがあるのでしょうか?
デジタルでは上昇/降下とも 1(HIGH) と判定されていて、アナログで見てもどちらも2.5Vくらいになっています。一見これで良さそうに思いそうですが、シュミットトリガのヒステリシスがどこかに行っちゃってる訳で、これはまずいです。
・波形 D-D12ピン

これはまあまともな波形です。
◆測定結果-Arduino NANO基板
・ピン状態変化リスト

・波形 1-D9 ピン

波形が収束するレベルが1.2V 付近になっていて、上の4つとは明らかに傾向が違っています。チップがそういう特性になっているのか、単にプリント基板の絶縁が悪いのか、この波形だけでは判断できそうもありません。
・波形 1-A0 ピン

数即するレベルが下がっているのは同じですが、マイナス側の時定数が短い感じです。
◆気付いた点
・リークの状態がかなり違っていて、極端に悪い物(多分絶縁が悪い物)も混ざっているようです。(偽物のCPUもある?)
・上下対称な波形になっていて欲しいのですが、下側にずれている物が多い印象です。
・正負で波形の収束する電圧に差があるものと、ほとんど同じ値に収束するものがあるようです。
・+5V から電圧が降下していく時、4V 付近でそのカーブが変化するものがある。
・LMC6482 を使ったボルテージフォロアはこの測定を行うのに十分な性能(入力抵抗)があったようです。ちなみに、単体の挙動を調べてみると、特定の電圧に向かって収束していくような傾向は認められませんでした。(数分の程度のスパンでは)
◆まとめ
デジタルで見ると何が起きているか判らなかったのですが、アナログ測定ではいろいろな違いが見えてきました。入力スレッショルドレベル (VIH, VIL) はかなりばらついているようです。
入力ポートに充電された電圧はゼロボルトに向かって低下していく(放電していく)のではないかと予想していたのですが、2.5V 付近に向かって収束するような挙動になっていました。やっぱり実際に確かめてみないとダメですね。これは CMOS 入力の上下2つのゲートのリークが案分されるような感じになるのでしょうか。
放電カーブの時定数は5秒程度なので、入力容量が 10pF と仮定すると、リーク抵抗の値は10^11Ωオーダーになりそうです。
収束する電位が上下2つに分かれていることがありましたが、これはシュミットトリガのヒステリシス電圧と関係がありそうな気がしますが、どうなんでしょう。あと、放電カーブの傾斜が途中で変化したりしてます。このあたりはデバイス特性に詳しい方の意見を伺いたいものです。
ということで、Arduino の CPU の ATmega328P に対する理解が深まったかも知れません。いや逆に謎が深まったかも知れませんが、まあ知らないより知っていた方が良いことは間違いないでしょう。ともかく勉強になりました。
#コロナウィルスで外出できない日は、家で回路の測定をやろう。
Arduino の未使用ピン(未定義ピン)の挙動の話の続きです。前回の記事では調査用のプログラムを使って信号レベルの変化を調べました。そこで判ったのは、デバイスやピンによってかなり挙動が違っていることですが、情報は1(HIGH)か 0(LOW)しか無いので細かな挙動までは判りませんでした。
そのあたりをはっきりさせるために、今回はオペアンプを使って入力ピンの電圧変化の様子を観察してみます。
◆調査に使った回路
入力ピンのインピーダンスはものすごく高いので、テスターやオシロではその電圧は測定出来ません。そこで CMOS のオペアンプのボルテージフォロアを使って測定しました。
・測定回路

使ったのは LMC6482 で、ボルテージフォロアで使い、出力の電圧をオシロで観察しました。インピーダンスが高いので簡単にノイズが乗ってしまうので、入力端子はシールド線を使って配線しました(この図はD10ピンの電圧を測定しているところです)。あと、オペアンプの空き端子はきちんと処置しておきます。
・実施のオペアンプ周辺の様子

入力ピン (pin3) の隣が GND(pin4) なのでシールド線の配線を行うのに好都合でした。
・全体の様子

中央が被測定対象の Arduino、右がオペアンプで、左のオシロで測定します。低速波形の観察なのでこういうオシロで十分です。(背後の MDF板の裏にはノイズ対策のためにアースに接続した金属板が入っています)
◆測定方法
前の記事で使ったプログラムをそのまま使いました。動作としては、ピンを一旦電源電圧までプルアップし、その後開放状態にして10秒待機。次にピンを一旦GNDに落とし、その後開放状態にして10秒待機、と言うパターンを繰り返します。その状態をオシロで観察、記録しました。このように記録時間が長い場合はデジタルオシロでないとやる気が失せます。
以下結果を見ていきますが、前の記事のピンの状態変化一覧表と一緒に見ていくことにします。
◆測定結果-A基板(UNO純正)
ピン状態変化リスト

・波形 A-D2ピン

GND と +5V の位置を矢印で示しています。
最初に+5Vまで電圧が上がっているのはプルアップしたためです。その後徐々に電圧が下がり、10秒後にGNDに接続したために電圧が急降下して0Vになります。その後は徐々に電圧が上昇し、10秒後に+5Vにプルアップというパターンを繰り返しています。以下の写真は全て同じ条件で波形を見たものです。
・波形 A-D12ピン

デジタル測定ではこっちの方が長生きしてたのに、電圧の低下はこちらの方が速いです。ピン毎の VIH の違いも見えていたということなんでしょう。
◆測定結果-B基板(UNO純正)
・ピン状態変化リスト

・波形 B-D4ピン

5V から電圧が下がっていく途中の 4V 付近で波形の傾きが変わっています。シュミットトリガ回路の動作が関係している気がしますが、どうなんでしょう。
・波形 B-D10ピン

こちらの波形には段付きはほとんどありません。2.5V を中心にきれいな上下対称な波形になっています。
◆測定結果-C基板
・ピン状態変化リスト

・波形 C-D5ピン

かなりはっきりした段付きがあります。これでもずっと HIGH レベルとして観測されていたということは VIH は2.8Vくらいだったということになります。
◆測定結果-D基板
・ピン状態変化リスト

・波形 D-D8ピン

デジタル測定ではまともだったピンですが、電圧変化もまあまともです。
・波形 D-D11ピン

電圧があっという間に1/2Vcc 付近に低下(上昇)していて、リークが大きそうな波形です。チップ内にコンタミなどがあるのでしょうか?
デジタルでは上昇/降下とも 1(HIGH) と判定されていて、アナログで見てもどちらも2.5Vくらいになっています。一見これで良さそうに思いそうですが、シュミットトリガのヒステリシスがどこかに行っちゃってる訳で、これはまずいです。
・波形 D-D12ピン

これはまあまともな波形です。
◆測定結果-Arduino NANO基板
・ピン状態変化リスト

・波形 1-D9 ピン

波形が収束するレベルが1.2V 付近になっていて、上の4つとは明らかに傾向が違っています。チップがそういう特性になっているのか、単にプリント基板の絶縁が悪いのか、この波形だけでは判断できそうもありません。
・波形 1-A0 ピン

数即するレベルが下がっているのは同じですが、マイナス側の時定数が短い感じです。
◆気付いた点
・リークの状態がかなり違っていて、極端に悪い物(多分絶縁が悪い物)も混ざっているようです。(偽物のCPUもある?)
・上下対称な波形になっていて欲しいのですが、下側にずれている物が多い印象です。
・正負で波形の収束する電圧に差があるものと、ほとんど同じ値に収束するものがあるようです。
・+5V から電圧が降下していく時、4V 付近でそのカーブが変化するものがある。
・LMC6482 を使ったボルテージフォロアはこの測定を行うのに十分な性能(入力抵抗)があったようです。ちなみに、単体の挙動を調べてみると、特定の電圧に向かって収束していくような傾向は認められませんでした。(数分の程度のスパンでは)
◆まとめ
デジタルで見ると何が起きているか判らなかったのですが、アナログ測定ではいろいろな違いが見えてきました。入力スレッショルドレベル (VIH, VIL) はかなりばらついているようです。
入力ポートに充電された電圧はゼロボルトに向かって低下していく(放電していく)のではないかと予想していたのですが、2.5V 付近に向かって収束するような挙動になっていました。やっぱり実際に確かめてみないとダメですね。これは CMOS 入力の上下2つのゲートのリークが案分されるような感じになるのでしょうか。
放電カーブの時定数は5秒程度なので、入力容量が 10pF と仮定すると、リーク抵抗の値は10^11Ωオーダーになりそうです。
収束する電位が上下2つに分かれていることがありましたが、これはシュミットトリガのヒステリシス電圧と関係がありそうな気がしますが、どうなんでしょう。あと、放電カーブの傾斜が途中で変化したりしてます。このあたりはデバイス特性に詳しい方の意見を伺いたいものです。
ということで、Arduino の CPU の ATmega328P に対する理解が深まったかも知れません。いや逆に謎が深まったかも知れませんが、まあ知らないより知っていた方が良いことは間違いないでしょう。ともかく勉強になりました。
#コロナウィルスで外出できない日は、家で回路の測定をやろう。