オシロスコープ機能
メインは勿論この機能になるので、もう少し細かく試してみた。まずはArduinoにLEDを繋いで(図16)、いわゆるLチカを実行し、この際の波形を観測してみた。1秒毎にDigitalOut(High)とDigitalOut(Low)を呼び出す単純なものなので、波形は図17のように0.5Hzの比較的綺麗な信号となっている。が、この信号の変化点を拡大してみると、図18のようにLow→Highの変化点で明確にOvershootとUndershootが発生しているのが見て取れる。カーソル機能を使うことで、Undershootのピークが-295mV、Overshootのピークが2.490Vまで振れていることが読み取れる(図18)。
図16:ArduinoのLチカのコードはこちらを参照 |
またこのOvershoot/Undershootが落ち着くのに要する時間を測定すると、概ね50.8μsといったところ(図19)である。実際にはこれは信号の立ち上がりだけを見ているが、実際はこのあと立ち下がりでも同じだけの期間が信号の安定に必要なので、あわせて100μsecより少し多い程度の期間が1cycleの安定に必要という計算になる。これは概ね10KHz程度の速度に該当する。多少波形が鈍っても良いから兎に角早く、ということであればUndershootからOvershootまでのピークは概ね360ns、1cycle分として720ns=1.39MHzという計算になるが、勿論ここまでの速度は出ない。試しにLチカコードからdelay()を抜いて、ひたすらdigitalOut()でOn/Offを繰り返したときの波形はこんな感じだ(図20)。何とか100KHzを超えるスイッチング速度が出ているが、Overshoot/Undershootは激しいし、Duty比もおかしいなど、あまり実用には耐えないことがここから読み取れる。MCUの簡単な性能評価にはオシロがあると便利なのだが、こうしたケースでWaverSurfer 3034は操作も容易でかなり厳密な測定が手軽にできることがわかる。
図19:どのあたりで「信号が安定した」と見なすかは難しいところだが、比較的減衰が早いので、カーソルで示した範囲の外はまぁ安定していると判断して良いだろう |
図20:図18と比較すると、如何に波形の乱れが大きいかわかる。ちなみにP-Pでは-890mV~3.59Vで4.48Vもの差が出ており、3.3V耐圧のデバイスだとそろそろ危険である。Duty比は46.3%ほどだった |
もう1つ別のケースも。図21は冒頭に出てきた、ArduinoにRTCをI2C経由で接続したケースである。ここではPullupの根元でSCLとSDAの信号をProbeしているのだが(図22)、短距離とは言えジャンパを飛ばしていることもあり、SCLのOn/Offが僅かながらSDAの信号にも影響を及ぼしていることが見て取れる。
図21:RTCモジュールはsparkfunのRTC Moduleを利用した。コードはadafruitのRTClibを利用させていただいている |
図22:黄色がSCL、赤がSDAである。SCLの立ち上がり時に僅かながらSDAも引っ張られているのがわかるかと思う。ただこの位ならそれほど問題はない |
では、この配線が長くなるとどうなるか?(図23)というと、ご覧の通りである(図24)。今度はSDAの信号がSCLに影響を及ぼしている構図だが、SDAの立ち上がりはともかく、SDAの立ち下がりにあわせてSCLが引っ張られている部分は、下手をするとスレッショルド電圧を下回りかねないので、誤動作しない方が不思議である。また図22は横軸が1μs/divなのに対し図24は2μs/divで、にもかかわらず図24の方が波形が鈍っているのは、図22と比べると実際にはずっと鈍り方が大きいことを意味している。
とはいっても、実際の回路を追う場合はロジアナだけでは不足で、オシロで波形を見ることは非常に重要であるが、WaverSurfer 3034ではこれが手軽にできることがおわかりいただけよう。