【データ収集ボードの概要】
ワイアレスオシロスコープのシステム構成に基づいて、データ収集ボードの
ハードウェアを製作しました。
完成したデータ収集ボードの外観は下図のようになります。
ボードの右側にPICマイコンがありますが、高速A/D変換を高速処理できるように、
PIC24EP256MC202という60MIPSで動作する最新の16ビットPICマイコンを
使っています。
このデータ収集ボードはタブレットがNexus 7(2012)でもNexus 7(2013)でも共通で
使うことができます。
右上にソケット実装されているのが、BluetoothモジュールのRN-42SMとなります。
左側が信号入力部の2チャネルのアンプで、それぞれゲインとオフセットの調整が
ツマミ付き可変抵抗でできるようにしています。
またオペアンプは、いろいろなオペアンプが試せるようにSOICパッケージを
変換基板に組み立ててICソケットで実装しました。
製作するデータ収集ボードの全体構成を下図のようにすることにしました。
全体の制御には16ビットPICマイコンのPIC24EP256MC202を使います。
プログラムサイズは小さいので、PIC24EP32MC202でも大丈夫です。
クロックには時間精度をよくする目的で、48MHzのクリスタル発振器を使いました。
これから内蔵PLLで120MHzを生成し、フルスピードの60MIPS動作とします。
ここは通常のクリスタル発振子を使った構成でも問題ありませんがPLLの
逓倍率を変更する必要があります。
オペアンプにはマイクロチップ社の製品で電源電圧が±6Vまで可能で
GBWPが10MHzのMCP6H92を使いました。
このオペアンプでDCから入力可能とするため初段を両電源とし差動アンプ構成と
しました。
さらに、ゲインとオフセットをできるだけ独立に調整できるように2段構成の
アンプとしました。
Bluetoothモジュールには、開発ツールのRN-42SMを使いましたが、
ここはRN42XVPでも全く問題ありません。
電源は5V入力とし、レギュレータで3.3Vを生成して供給しています。
初段のオペアンプに−3.3Vを供給するためDC/DCコンバータを使っています。
項目 機能・仕様 備考 電源 DC5VをACアダプタまたはバッテリから供給する。内部はレギュレータで3.3Vとして供給。オペアンプは±3.3Vで駆動
(DC/DCコンバータで−3.3Vを生成)バッテリはスマホ充電用を流用 マイコン PIC24EP256MC202 28ピン
クロック:外部水晶発振器 48MHz入力 2チャネル RCAジャックで接続
周波数範囲 :DC〜約100kHz
入力電圧 : ±50mV〜約0.3V
オフセット: ±1.5V
使用オペアンプ :MCP6H92
電源:±3.3Vで駆動可変抵抗で可変
可変抵抗で可変A/D変換 PIC内蔵のA/Dコンバータを使用
サンプリング周波数:最高1Msps
分解能 :10ビット無線部 RN-42-SM Bluetoothモジュール
UART通信速度:115.2kbps
【回路と組み立て】
全体構成をもとに作成した回路図が下図となります。
電源はDC5V入力とし、ACアダプタかバッテリを使うものとします。
これからレギュレータで3.3Vを生成し全体に供給します。
さらに初段のオペアンプを両電源で動作させるため、マイクロチップ社の
TC7662Bというチャージポンプ方式のDC/DCコンバータで−3.3Vを生成
して供給します。
これでオペアンプは±3.3Vで動作できるようになりますから、オペアンプ初段を
差動入力回路とすれば、DC信号も計測対象として扱えるようにできます。
さらにこのオペアンプの出力を可変抵抗で調整してゲインを可変としています。
次段のオペアンプでオフセットが調整できるようにします。
これで、オシロスコープとして動作させたときの垂直方向の調整ができます。
初段アンプの出力は最大±3V程度までは歪なく出力されますので、初段の
ゲインが約10倍ですから、結果的に最大入力は約±0.3Vまでということになります。
これ以上の振幅の信号が入力されると信号の上下がクリップされてしまいます。
PICマイコン周りにはクロック用の発振器とLEDが2個、Bluetoothモジュール、
ICSPだけとなっていますので、28ピンのかなりが余った状態です。
組み立てが完了したデータ収集ボードの部品面とはんだ面が下記となります。
【プログラムの全体構成】
データ収集ボードのファームウェアは簡単な構成となっていて、1つのファイル
だけで構成しています。
ファームウェアの構成をフロー図で示すと下図のようになります。
メインの流れでは、初期化したあとメインループで常時UARTからのコマンド受信が
あるかどうかをチェックしていて、受信があれば内容を確認して、計測開始コマンド
であれば、タイマ3をスタートさせてサンプリングを開始します。
そして2000回のサンプリングが終了するまでそのまま待ちます。
その間にA/Dコンバータの割り込みでサンプリングが行われ、2000回で終了となります。
これでメインループが先に進み、データを送信バッファにセットしてから一括で送信を
実行します。送信が完了したら再度コマンド受信待ちで待ちます。
ここで、計測の仕方、つまりサンプリングの流れを説明します。
この流れを図で示すと下図のようになります。
まずサンプリングはタイマ3の周期で自動的にA/Dコンバータをトリガすることで行われます。
このタイマ3の周期が最短1μsecとなっていますので、1Mspsというサンプリング性能になります。
またこのPICマイコンのA/Dコンバータの性能は1.1Mspsとなっていますので、
1Mspsでも動作が可能です。
A/Dコンバータには16個のバッファがあり、これを2つの8個分のバッファに分けて交互に
使うようにします。さらに8回のA/D変換ごとに割り込みを発生するように設定しておきます。
これで、片側のA/D変換バッファが一杯になったら割り込みが発生することになります。
この割り込み処理でA/D変換バッファの内容を2000個分のメモリバッファにコピーします。
このメモリコピー処理の間にもタイマ3は動作継続していますから、A/D変換の間が
あかないように、もう一方の8個のA/D変換バッファを使って変換結果を保存します。
今度はこちら側の変換バッファが一杯になると次の割り込みが発生しますから、
このバッファからメモリバッファにコピーします。
このメモリコピーを実行する割り込み処理の実行時間が、8回のサンプリング時間、
つまり8μsecより短時間で終われば、1μsec周期のサンプリングが途切れなく実行
できることになります。
このとき60MIPSというPICマイコンの高速性能が活かされます。
実際に十分の余裕をもって処理が完了できています。
【ダウンロード】
ワイアレスオシロ用のデータ収集ボードのファームウェアは下記からダウンロード
できます。MPLAB X IDEのプロジェクトファイル1式となっています。
★★★ データ収集ボードのファームウェア ダウンロード ★★★