多チャネル・オシロスコープHaasoscope (1) セットアップ
電子工作では、高い周波数の波形が観測できるオシロスコープより、マイコンのインターフェースの信号を的確に観測できるほうが有用です。I2CやUARTなどの信号は、画面のHigh/Lowを見て自分でデコードすることもできますが、オシロスコープが自動でデコードしてくれると、デバッグに集中できます。
I2C信号は400kHzか1MHzと低速です。SPIは10MHzが一般的な転送速度です。したがって、50MHz付近まで観測ができる入門用のオシロスコープで十分な帯域があります。ただし、サンプリング回数が低いと、立ち上がりをしっかり観測できません。
●ふつうは2チャネル入力
入力が2チャネルあるアナログ・オシロスコープでは、低速な信号は二つを常時切り替えて、高速な信号では一つを表示し終わるともう一方に切り替えて表示していました。PCにつないで利用するオシロスコープは、メモリにデータをため込んで画面にその一部を表示します。したがって、突発的な信号の変化も、メモリに記録されたデータをさかのぼれば観測ができます。
SPIではマイコンからみたとき、データ入力MISO、データ出力MOSI、クロックCLK、チップ・セレクトCSの4本を同時に観測できないと、正確なタイミングを見れません。2チャネルの場合は、データ出力とクロック、もしくはデータ出力とCSとか、状況に合わせて、信号を選んで観測するしか方法がありませんでした。
4チャネル入力のオシロスコープだと、一度に観測できます。もう1個のSPIデバイスを同時に見たいとか、アラートの割り込み信号を見たいときには5チャネル必要と、人の欲望に限りはありません。4チャネル以上の入力をもつオシロスコープの市販品は多くありません。
●市販のオシロスコープにどうして目盛りがないのか
もともとアナログから出発して、電圧や周波数を切り替えて使うのが当たり前のオシロスコープでは、縦軸と横軸に目盛りはありませんでした。一つのマス目が1Vとか1usという情報から、観測している波形の周波数や電圧を暗算で求めていました。ディジタル・オシロスコープになって文字を画面に表示できるようになっても、測定器メーカは目盛りを表示しません。
USBオシロスコープは、目盛りを表示します。それが自然だ思います。
●Haasoscopeは基本4チャネル
クラウド・ファンディングで募集を始めたHaasoscopeは、4チャネルのオシロスコープがベースで、複数のボードをコネクタでつないでいくと200チャネルまで入力を増やせるそうです。筆者は8チャネルあれば足りると思ったので、2枚注文しました。
- 分解能 8ビット(4チャネル)、12ビット(低速1Mspsは9チャネル)
- 入力レンジ ±3.5mV 、±35mV、±0.35V 、±3.5V ※過大入力保護回路は入っていない。
- バンド幅 ±3.5mV:最大0.5MHz 、±35mV:最大2MHz 、±0.35V:最大40MHz、±3.5V:最大130MHz
プローブを10:1で使えば、入力電圧は±35Vなので、マイコンの入出力を見るのに不自由はありません。保証はされていませんが、入力は±10Vが耐えられるようなので、プローブを間違って1:1にしても電子工作が利用する電圧範囲では壊れないかもしれません。
USBケーブルでPCとつないで利用するため、特別に電源は不要です。プログラムはpython2で書かれているので、いろいろなOSのマシンで利用できます。USB-シリアル変換ICにCH340が使われています。
●セットアップ
https://github.com/drandyhaas/Haasoscope.git からオシロスコープのプログラムをダウンロードします。softwareフォルダをデスクトップにコピーしました。
Windows10にpython2.7をインストールします。デフォルトでC:\Python27にインストールされます。
コマンド・プロンプトを起動し、softwareフォルダに移動します。PATHを通します。
set PATH=%PATH%;C:\Python27 set PATH=%PATH%;C:\Python27\Scripts |
ライブラリ類をインストールします。numpyはすでに入っています。
pip install pyserial pip install matplotlib pip install scipy pip install pyside |
写真のように、USBケーブルをPCとつなぎ、電源スイッチをONにします。CH340のドライバはすでにインストールしてあったので、認識しました。
オシロスコープのソフトを起動します。
python HaasoscopeDraw.py |
Ch0に信号を入れます。