six-9のブログ

おっさんのブログ。エロゲとかアニメとか。

電子工作用のオシロスコープ

FlukeのDMM(87Ⅳ)と定電圧電源STP3005が手に入ったので、あとはオシロスコープがあれば電子工作三種の神器がそろう。いろいろ作ったり実験したいと考えているのだが、まずはその前に、オシロスコープを準備したい。 そんなことを考えて、九州工業大学Arduinoオシロスコープ Kyutech Arduino Scopeを試してみた。

Arduino 簡易オシロスコープ | 国立大学法人 九州工業大学 情報工学部【飯塚キャンパス】

Kyutech Arduino Scopeを試した

ブレットボード上に固定抵抗とコンデンサーを配線して試してみた。1uFのコンデンサーが無かったので、0.47uFのコンデンサーを2個並列にした。写真の右端の黄色ジャンパー線は別の回路なので無視してほしい。

Kyutech Arduino Scope実験風景

九州工業大学のサイトだけだと実体配線がイメージしづらかったので、以下のサイトのFritzingの配線図が大変参考になった。

arduinoによるオシロスコープ2 (4/17) : 体重と今日食べたもの

問題なくPULSE出力の矩形波信号を測定することができた。設定変更もキーボード、マウスから直感的に行えるし、デフォルト設定へのリセットもショートカットキー[r]や[Shift + r]でできて嬉しい。スクリーンショットも右上の[Go]ボタンで簡単にできる。*1以下の画像はスクリーンショットの保存結果。PC上で画面表示しているので、普通にスクショすれば良いのだが、ソフト上でスクリーンショットを保存すると余計な右画面の設定値が載らなかったり、毎回同じピクセル数で保存されるので、やはりアプリ上での画像保存機能は便利。

(上)ソフトから保存時の画面。(下)測定画面。波形画面が左側、設定値が右側に表示されている。
等価時間サンプリングで1Msample/sできており、かなり高速なのは良い。しかも2chあり、FFTも可能。ジェネレーターも内蔵して周波数・Duty可変の矩形波も出る。

等価時間サンプリング?というのがわからなかったが、Arduino Uno Rev.3のボードを見ると16MHzの水晶発振器が載っているので、1MHzくらいの帯域幅は確保できるのだろう。(水晶発振器の周波数が直接サンプリング周波数に関係するわけではなく、オシロスコープとしてはADCとDigital I/Oを使用しているので、ICの応答などもあるのだろうけれど。)signal MODEをCH1に設定すると1MHzのサンプリングが実施できた。signal MODEをDUALに設定するとサンプリング速度が半減して500kHzサンプリングになった。写真にそれぞれの設定時の測定結果を示す。わかりやすくするためにサンプリング点をdotsで表示した。

DUALモード使用時。500kサンプル/sでデータが取得できている。
CH1モード使用時の1Mサンプル/sでデータが取得できている。
実際に使用する際は、Arduino Unoだと1枚4000円くらいして高価なので、Arduino Nano互換ボードを使用して数百円で購入できるものを使用しようと思う。 Arduino Nanoを使用した安価な製作例↓↓↓

Arduinoで作る簡易オシロスコープが400円でできた | Webシステム開発/教育ソリューションのタイムインターメディア

*2

オシロスコープでの波形観測が必要なときに毎回ブレットボード上に配線するわけにもいかないので、指すだけ基板(HAT?)にしたいのだが、どうせならいろいろつけたい。0V-5Vで負電圧で測定できない、電圧測定の上限が5Vまで、というのがアナログ信号用のオシロスコープとしては使用しづらいので、+/-50V程度までの耐圧はほしい。

そんなこんなでいろいろインターネットを探していたら、基板タイプとしてはRaspberry pi picoを利用したScoppyというオシロのほうが便利そうだとわかった。

GitHub - fhdm-dev/scoppy: Use your Rasperry Pi Pico and Android Phone as an Oscilloscope and Logic Analyzer

Scoppyについては、実際には、PL2407AFEという基板(2000円くらい)を使用して電圧範囲を拡大して使用する必要がありそう。

Raspberry Pi Pico用オシロスコープ基板2 PL2407AFE | picoLABO

ScoppyとKyutech Arduino Scope

RP2040(Raspberry pi pico)を使用したScoppyとArduinoを使用したKyutech Arduino Scopeを比較すると以下の通り。Arduino Scopeのほうが高速かと思っていたが、RP2040でも2MHzサンプリングできるよう。Arduinoは5VDCまで対応可能で、Scoppyは3.3VDCまでしか測定できないのが強いて言えば劣っているが、どうせPL2407AFEを使用するのなら30Vまで拡張可能なので問題なさそう。Androidに繋いでハンディオシロとしてPCレスで使用できるのがとにかくScoppyの魅力。ロジックアナライザが3.3Vまでで、5Vロジックに対応していないが少し気になるが、必要になればレベルシフターを使用すれば良い。Scoppyを使用するにしても、Raspberry pi pico 2がリリースされたので、せっかくならRaspberry pi pico 2 Wがリリースされてから購入したい。

Scoppy

  • アナログ帯域幅:150kHz
  • サンプリング:500kHz 調べたら、RP2040をオーバークロックすることで2MHzサンプリングまでできるよう

RP2040 Maximum Sample Rate Setting | Scoppy - Oscilloscope and Logic Analyzer

  • チャンネル数:2CH
  • 電圧範囲:0-3.3VDC
  • 矩形波発生機能あり(100Hz-1.25MHz)
  • FFT機能あり
  • XYモードあり
  • ロジックアナライザ機能あり(3.3Vレベル, 8CH, 25MSymbol/s)
  • Androidと接続して使用(OTG:On the Go機能対応スマホ)
  • 無料バージョンのScoppyアプリだと広告と1CHに制限。3ドル程度の課金により2CHと広告なしへ拡張。

PL2407AFE使用時の仕様

  • アナログ帯域幅:500kHz
  • サンプリング:2Msps/ch(1ch単独使用時)
  • 測定分解能:入力電圧範囲の1/200
  • 絶対最大入力電圧:±40V
  • 入力電圧範囲:±30V, ±6V, ±1.5V
  • 入力カップリング:DC/AC 注意:BNCコネクタは別途必要

Kyutech Arduino Scope

  • サンプリング:1MHz (等価時間サンプリング、1CH時)
  • チャンネル数:2CH
  • 電圧範囲:0-5VDC
  • FFT機能あり
  • 矩形波発生機能あり(31Hz-2MHz)
  • PCと接続して使用
  • 入力インピーダンスが1kΩ程度と低い・定義されていない

*1:最初はなぜか[Go]ボタンが有効にならず、色々見ていたら、running中だと有効にならず、stoppedのときのみ有効になった。考えてみると確かにその通りかもしれない。波形更新中に画像取得するのは不定になるから確かにその通り。

*2:余談だが、Arduinoからマイコンに入ったものとしては、Raspberry pi picoを比べてハードウェア性能が高いのを実感する。I/Oの速度もそうだし、Digitalピンのドライブ能力が20mA程度あるので直接LEDを駆動できる。IoT機器として外部機器と無線通信することを考えるとRaspberry pi pico W一択になるが、センサーやアクチュエーターを直接制御するマイコンとしてはArduinoが適切なのだろう。