Avance.Lab

技術紹介

第1回 オシロスコープの使い方

公開日:2022.11.11 更新日:2022.11.11

tag: Raspberry Pi組み込み

こんにちは、KOUです。
よろしくお願いします。

業務でオシロスコープ(以下オシロ)を使用することが増え、
新しくIWATSU製のオシロを購入しました。
今回はラズパイを使用した波形の取得を例に、使用方法を紹介していきたいと思います。

事前準備

機材数量
Raspberry Pi 3 Model B+1
IWATSU DS-5624A1
プローブ1
RS232ケーブル1

今回は以下のように接続し、波形の取得を行います。

以下のようなPythonスクリプトを作成し、ラズパイでPythonスクリプトを実行します。
なお、スクリプトではpySerialを使用しています。
インストールしていない場合は、以下コマンドでインストールする必要があります。

pip install pyserial

4行目のコードでは、接続元とボーレートを設定し、
7行目のコードでは、送信したい値を設定します。
※シリアル通信で文字データを送信する場合、ASCIIコードに変換し送信されます。
 今回のように、ASCII文字の”1”を送信する場合は、ASCIIコード(16進数)で”31”となります。
RS232ケーブルのようにUSB接続ではなく、ラズパイのポートに直接接続し確認する場合は、
”/dev/ttyUSB0”→”/dev/ttyS0”に変更してください。

import serial

# "115200"の箇所を変更することでボーレートを変更できます
ser = serial.Serial('/dev/ttyUSB0', 115200) 

# 今回は分かりやすく"1"を送信します
ser.write(b'1')

ser.close()

トリガの設定

トリガを使用することで、見たいタイミングの波形が出力された際に、
自動で波形を停止させてくれます。
オシロには信号のON/OFFだけでなく、信号を解析した結果でトリガを掛けることができます。
例えば、0x31のトリガを設定することで、0x31で始まる送信データの波形を取得できます。
IWATSU製のオシロには、取得した波形データを保存しておく機能もあるため、
トリガを使用せずに波形をとることも可能です。
トリガを使用せずに波形をとった場合、2048回分のデータを保存しておいてくれます。
1秒周期で取得したデータの場合、2048秒前のデータまで保存しておいてくれます。

・トリガの設定方法

今回はUARTで取得できるように設定を行います。
①オシロのTRIGGER欄のSETUPボタンを押下します。
 オシロモニタの右端にトリガメニューが表示されます。
②オシロモニタのトリガメニュー設定項目をタッチパネルまたはADJUST欄にあるつまみを操作し、
 以下のように設定します。
  ・トリガタイプは、”UART”を選択します。
  ・トリガは、”データ”を選択します。
  ・データは、設定不要です。(自動で入力(2進数表示)されるため)
  ・データ(16進)は、”31”を設定します。
③オシロモニタのUART設定を選択し、ビットレートをADJUST欄にあるつまみを操作し
  以下のように設定します。
  ・ビットレートは、115.2kbpsを設定します。
他の箇所は特に変更の必要はありませんが、トリガソースが使用してるチャンネルに
なっていることは確認しておいてください。

波形取得

実際に波形を取得してみましょう。
オシロは、RUN状態(RUN/STOPボタンが点灯)のSINGLEボタンを押下しておきます。
SINGLEボタンまたはNORMALボタンをセットしておくことで、
トリガがON状態になり、トリガ取得が可能になります。
今回の場合は、時間測定を主にしておりますので、ONESHOTで測定が終了するSINGLEを使用します。
断続的に特定の出力を確認したい場合は、NORMALを使用するのがおすすめです。

事前準備の項に記載したPythonスクリプトをラズパイで実行すると、
オシロに以下のような波形が出てきます。
今回ボーレートが115200bpsなので、目標値は1bitあたりの速度が1/115200s=8.68μs、
1byteで69.4μsになります。
目標値と実際値では誤差がありますが、取得した波形のレンジ(20μs)だと
オシロのカーソルの分解能が0.4μsになるため、以下のような誤差が出てしまっております。
目標値と実際値の誤差が0.4μs以内であるため、波形としては問題ありません。
レンジを小さくすれば分解能も小さくなりますが、取得した波形の全体像が見えなくなってしまうため
レンジを20μsで行っております。
オシロのカーソルの設定は、カーソル操作をご確認ください。

今回、RS232ケーブルから直接値を取得しているため、値が反転した状態で出力されます。
そのため、波形を見やすくするために、波形を反転させて表示させております。

・カーソル操作

CURSORSボタンを押下し、ボタン上のつまみで、カーソル線の移動ができます。
オシロ画面の形式を選択することで、横カーソル・縦カーソルの変更ができます。
縦カーソルは、今回のように1bitあたりの時間や1byteあたりの時間を確認したい場合に使用します。
横カーソルは、電圧(V)や電流(A)などの値の大きさを確認したい場合に使用します。

・波形の反転設定

①使用しているチャンネルボタンを押下します。
②オシロモニタのCH1メニューの反転を”オン”に切り替えます。
マイコンなどが扱うロジック信号は0~5V振幅に対して、RS232ケーブルは±5~15V振幅の信号を
使っています。
そのため、信号の違いにより正しく信号を受け取れず、値が反転してしまいます。
上記理由から、LOW・HIが反転して出力されるため、反転が”オフ”のままだと(以下左下の図)
LOWがHIになっているように見えてしまいます。
そのため、反転を”オン”(以下右下の図)にすることで、波形を見やすくしています。

・設定を変更して取得した波形

ボーレートを変更した場合

事前準備の項に記載したPythonスクリプトのボーレートを38400bpsに変更した場合は、
以下のような波形となります。
今回ボーレートが38400bpsなので、1bitあたりの速度が1/38400s=26μs、1byteで208μsになります。

連続文字を送信した場合

事前準備の項に記載したPythonスクリプトで連続4文字送信用に変更した場合は、
以下のような波形となります。
ボーレートが115200bps、トリガは”0x32”で設定し、”1234”と送信しています。
ちなみに送信データと送信データの間に出力されるHiLowは、ストップビット(Hi)とスタートビット(Low)です。
以下の図のように、データを送信する際は開始と終了がわかるように、
スタートビットとストップビットも一緒に送信されます。

まとめ

今回はオシロの基本的な操作について、記載させていただきました。
IWATSUのオシロには、使い方がわかると便利な機能がいろいろあります。
例えば、リモートでオシロの設定変更・波形取得ができる機能や
波形のPass/Failを自動で判定する機能などがあります。
次回以降はそんな機能を紹介していこうと思います。

KOU

旅行とお酒が好きです。
最近はウイスキーがおいしく感じます。

関連記事