今回はロジックアナライザでLED制御ピンの信号を観測してみます。
Wokwiが推奨しているロジックアナライザのソフトウエアは、Windows・macOS・Linuxに対応しています。ただ、macOSはBig Sur、Montereyでは動作しませんでした。macOSの場合、古いOSが必要のようです。(私はメインでMacを使用しているのでちょっと残念です…)
ロジックアナライザとは?
「ロジックアナライザ」という言葉を初めて聞かれた方もいるかもしれません。そこで、最初にロジックアナライザとはどのようなものなのか簡単に説明します。
今まで作成した回路はLEDを接続していましたので、正しく動作しているかどうかはLEDの光り方を見れば一目瞭然ですよね。1秒に1回点滅すれば正しく動作していますし、LEDが光らないということであれば回路かスケッチがおかしい、と判断できたわけです。
ところで、以下のようにArduinoで湿度を測定してSDカードにデータとして記録する回路を作成したとします。
この回路が動かないと、見た目では何が悪いのかさっぱりわかりません。動かない原因を特定するのはかなり困難です。
このような時は、それぞれの配線でどのような信号がやり取りされているのか目で確認できればいいですよね。この信号を確認するための測定器が「ロジックアナライザ」です。
ロジックアナライザとは、ピン(配線)の電気信号を測定し、その信号が時間の経過とともにどのように変化するのかを可視化するものです。
なお、ロジックアナライザについてちょっとだけ補足しておきます。
Arduinoなどのコンピュータはデジタル信号(0か1の2種類)を利用してデータ通信を行なっています。このようなデジタル信号の測定は「ロジックアナライザ」を使用します。一方で、音声信号などのアナログ信号(連続した電圧信号)を測定する場合は「オシロスコープ」という測定器を使用します。
それでは、Wokwiのロジックアナライザの使用方法について概要と手順を説明します。
Wokwiのロジックアナライザ使用方法概要
ロジックアナライザで測定データを確認するには、Wokwi以外に解析ソフトが必要になります。Wokwiのドキュメントでは、オープンソースの「PulseView」というソフトウエアが紹介されていますので、それを使用することにします。
それでは詳細な手順を説明する前に、ロジックアナライザ使用方法の概要を説明します。
この図にあるように、最初に測定したい回路にロジックアナライザを接続します。
次に、データを取得するために一定時間実行します。実行ボタンをクリックし、数秒実行してからストップすると、測定データがローカルPCにダウンロードされます。
最後にダウンロードした測定データファイルを、解析ソフト(今回はPulseViewを使用)で読み込んでデータを表示させる、という流れになります。
それでは具体的な手順をみていきましょう。
PulseViewインストール手順(Windows)
最初に、ロジックアナライザの解析ソフト「PulseView」をインストールします。
以下のダウンロードサイトにアクセスします。
https://sigrok.org/wiki/Downloads
少し下の方に行くと、Windows版のダウンロードリンクがありますので「pulseview-NIGHTLY-64bit-static-release-installer.exe」をクリックしてダウンロードします。
ダウンロード後、インストーラを起動してインストールします。インストールは特に難しいところはありませんが、少し補足しておきます。
インストール途中、以下のようにインストールオプションが表示されます。
これはサンプルファイルをインストールするかのオプションです。特に必要ないと思いますのでチェックOFFで問題ないと思います。
またインストーラの最後の方でファイル拡張子との紐付けの確認があります。
「.sr」ファイルをPulseViewに紐付けるかどうかの確認ですが、デフォルトのONのままで問題ありませんが、気持ち悪いようでしたらOFFにします。(Wokwiで使用する分には紐付けの必要はありません)
インストール完了後、スタートメニューの「最近追加されたもの」のリストに「PulseView」があればOKです。
ロジックアナライザ接続手順
解析ソフトの準備ができましたので、実際にロジックアナライザを使ってみましょう。
最初にすでに作成済みの「LED点滅回路」を開いてコピーしておきます。
次に、電子部品追加のための「+」アイコンをクリックして、リストの中から「Logic Analyzer (8channels)」を探してクリックします。
ロジックアナライザが回路図に配置されますので、適当な場所に移動します。
Arduino回路の10番ピンの信号を測定してみますので、次のように接続します。
ロジックアナライザの「D0」ピンとArduinoの10番ピンを接続します。また、GND(マイナス側)は必ず接続する必要がありますので、ロジックアナライザとArduinoの「GND」同士を接続します。
これでロジックアナライザの接続は完了です。
測定
それでは実際に測定してみましょう。
なお、スケッチは0.5秒ごとにLEDを点滅していますが、この時間間隔ですと遅いので、点滅間隔を10msに変更しました。変更後のスケッチを以下に示します。
/*
* ロジックアナライザサンプルスケッチ
*/
#define RED_LED 10
void setup() {
// ピンモード設定
pinMode(10, OUTPUT);
}
void loop() {
// 0.5秒ごとにLED点滅
digitalWrite(RED_LED, HIGH);
delay(2);
digitalWrite(RED_LED, LOW);
delay(8);
}
これで測定の準備ができましたので測定します。
このスケッチを実行すると自動的に測定が開始されます。
1〜2秒のデータで十分ですので、実行ボタンをクリックしたら1〜2秒ですぐに止めてください。実行を止めると、測定データファイルがすぐにダウンロードされます。
測定データの表示
最後に、PulseViewでダウンロードしたデータを表示てみましょう。
PulseViewを起動すると以下のようなウィンドウが表示されますので、左上の測定データファイルを開くアイコンをクリックします。
アイコンをクリックするとメニューが表示されますので、下の方にある「Import Value Change Dump data」を選択します。
次に、先ほどダウンロードしたファイル(ダウンロードフォルダにあると思います)を指定します。指定すると、以下のようなダイアログが表示されます。
このダイアログの中の「Downsampling factor」を「1000」にします。
このDownsampling factorについて簡単に補足しておきます。
先ほどWokwiで取得したデータは、どの時刻に信号の変化があったか、という内容のデータファイルになっています。PulseViewではこのデータをどのぐらいの時間分解能で解析するか、指定できるようになっています。例えば1ns(ナノ秒)の分解能で解析するのか、1ms(ミリ秒)で解析するのか、といった具合です。
あまり分解能を細かくしてしまうと解析に時間がかかります。今回のように数ミリ秒単位で変化する信号は1000程度を指定します。
Arduinoの動作周波数は10〜20MHzですので、Arduinoで速い信号を扱う場合は、50程度を指定します。
指定後、OKボタンをクリックすると解析が始まります。解析が終わると以下のように結果が表示されます。
Wokwiで複雑な信号を扱う場合、このようにWokwiのロジックアナライザで測定データを取得して、PulseViewなどの解析ソフトで解析することができます。
PulseViewはオープンソースですが、他にも色々機能がありますので、Arduinoの電子工作やプログラミングに慣れてきたら、このようなソフトを使うとデバッグの効率が上がりますね。
更新履歴
日付 | 内容 |
---|---|
2022.1.14 | 新規投稿 |