こんにちは、KOUです。
よろしくお願いします。
業務でオシロスコープ(以下オシロ)を使用することが増え、
新しくIWATSU製のオシロを購入しました。
今回はラズパイを使用した波形の取得を例に、使用方法を紹介していきたいと思います。
機材 | 数量 |
---|---|
Raspberry Pi 3 Model B+ | 1 |
IWATSU DS-5624A | 1 |
プローブ | 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を自動で判定する機能などがあります。
次回以降はそんな機能を紹介していこうと思います。
関連記事
-
第1回 ラズパイを使用したBLE通信 ~ ディスプレイ、キーボード、マウスを接続しないで設定 前編 ~
こんにちは、GTです。よろしくお願いします。 最近業務でラズパイのBluetooth機能を使...
公開日:2021.12.24 更新日:2021.12.24
tag : Bluetooth Raspberry Pi
-
-
-
第1回 Visual C++で作成したDLL内のクラスをC#で利用する方法
こんにちは、ILCです。 Visual C++ (以下 VC++)で作成されたDynamic...
公開日:2024.01.19 更新日:2024.01.19
tag : Windows
-
こんにちは、TMIHです。 今回から組み込み系のソフトウェア設計標準規格である、MISRA-...
公開日:2022.02.25 更新日:2022.02.25
-
第3回 ラズパイを使用したBLE通信 ~ A/D変換・D/A変換を用いた入出力編 ~
こんにちは、GTです。よろしくお願いします。 第3回の今回は、ラズパイの入出力についてご紹介...
公開日:2023.02.24 更新日:2023.02.24
tag : Bluetooth BLE Raspberry Pi