【概要】
dsPICの高速動作を活用した製作例です。 モータ用dsPICのA/D変換は
4チャネルまで同時サンプリングができ、最高1Mspsの高速動作が可能です。
単純に考えれば、1usec周期でアナログデータをサンプリングして取り込める
ということです。
オシロスコープとして使って、1周期を最低100サンプルで表示するとすれば、
100usec周期つまり10kHzまでの波形が観測可能になるということになります。
2チャンネル同時の波形を取り込めばこの半分の5kHzまでは十分行けそうです。
できあがった2現象オシロスコープの外観は下記となります。
小型のアクリルケースに十分納まります。
右上がDSUBコネクタ、中央がdsPIC
左下に入力用のピンジャックが2個
電源はACアダプタから供給。
【全体の構成】
このオシロスコープの全体構成は非常に簡単で、下図のようになっています。
まずdsPICとしては、モータ制御用でデータメモリが2kBと多いdsPIC30F4012を
使いました。
クロック周波数は、できるだけ高速に動作するよう80MHzとしましたが、
これ以上にすると、dsPIC本体と3端子レギュレータ両方の発熱がやや多くなって
しまうので、この値に抑えました。
しかしA/Dコンバータの方のクロックは、別に設定できるようになっていて最高速
に設定していますので、この主クロックによって遅くなるということはありません。
表示の方は、グラフ表示が必要ですから、パソコンで表示させることにし、これも
できるだけパソコンに高速で転送できるよう、UARTで57.6kbpsという速度にしました。
入力のアンプはDC用とAC用ということにして、AC用は入力に10uFのセラミック
コンデンサを挿入しています。また、入力が0Vのときに中央値になるように、オフセット
調整ができるようにしておきます。
発光ダイオードは動作目印用に使います。
次にdsPIC内部のソフトウェア構成は下図のようになっています。
計測周期やチャネル指定はパソコンから設定されるようになっていて、
その設定で動作を繰り返します。計測したデータはデータメモリに保存
しますが、dsPIC30F4012はデータメモリが2kBありますので、8ビットの
データとすれば十分余裕があります。そこで最大900サンプルのデータ
を格納できるようにしました。
データの収集が完了したら、パソコンからの完了問い合わせに対して
レディーと回答します。
このあとパソコンからデータ転送要求が来ますので、これに対応して
保存済の全データを一挙に送ります。
パソコン側では、受信したデータをグラフとして表示するだけです。
【回路構成と外観】
上記の構成で作成した回路図が下図となります。
入力アンプの入力側にはオフセット調整ができるようにして0Vの位置が調整
できるようにしておきます。あとは特に難しい回路部分はありません。
出来上がったユニットの外観です。小型の透明アクリルケースに納めました。
小型の基板に納まるので、小型アクリル
ケースで十分です。
3端子レギュレータの放熱を兼ねて
GNDパターンに直付けしています。
AC入力用コンデンサはチップ型ですので
パターン側に実装しました。
【プログラム】
プログラム全体は簡単な構成ですが、A/D変換の設定がやや複雑ですので
パラメータをC30のライブラリで用意されている関数用のパラメータを使って
整理しています。
A/D変換の割り込み処理をとにかく高速に完了する必要があります。
できあがった結果では、2チャネル分のA/Dサンプリング時間と、割り込み処理
時間をすべて加えて、約4μsecがA/Dサンプリング周期の最短時間となりました。
そこで、サンプリング周期の最短の設定を5μsecとしましたので、5kHzでの周期
当たりのサンプル数は40個ということになります。
アプリケーションのダイアログは下図のようになっています。
本PC側のプログラム一式をダウンロードできます。
Vusial Basic.net でコンパイルできます。
またbinフォルダにある実行ファイル(exe)は、.netFramewrokの環境で動作します。
★★ 2現象オシロスコープ PC側ソフト一式
【測定結果】
実際に測定した例を示します。
(1) 5kHzの正弦波
5usecでサンプリングした波形で、ややピーク部の波形に角があるのが
分かります。
(2) 500Hzの正弦波
ほぼ完全な正弦波として表示されます。サンプリングは5usecです。
(3) 500Hzで2チャネルに同じ信号を入力したとき
まったく同じ位相、タイミイングでサンプリングされていることが良く分かります。
サンプリングは5usecです。