【多機能信号生成器の概要】
PIC32MXを使った製作例ということで、その高性能さが活かせる製作例を
考えてみました。
PIC32MXの大きな特徴は、DMAと汎用I/Oがバスマトリクスを経由して
直接接続できることです。
そこでこの特徴を活用した任意の信号を発生できるユニットを作ってみました。
外観は下記となります。
詳細は「トランジスタ技術 2009年7月号」に掲載されていますのでご覧下さい。
液晶表示器の表示例です。
【全体構成】
このような原理で使うことにした信号発生器の全体構成は下図のようにしました。
信号を生成する仕組みは、DMAを使ってデータメモリからポートに8ビット単位で
直接データを出力し、そのデータを外部に接続したD/Aコンバータに出力しています。
データメモリに例えば正弦波となる信号データを格納しておき、一定時間間隔で
これをD/Aコンバータに出力すれば、一定周波数の正弦波出力となります。
【ユニットの設計】
全体ブロック図をもとに作成した回路図が下図となります。
【製作】
この回路図を元にして基板パターン図を作成します。Eagleをツールとして使いました。
下記からパターン図と実装図がダウンロードできます。
基板実装が完了しロータリスイッチ
を接続したところ
PICとD/Aコンバータは、変換基板に実装して
0.1インチピッチのピン配置に変換しています。
こうすれば片面基板でもパターンが通せます。
★★★ 実装図のダウンロード
ハンダ面側です。
こちら側に電源関係のICとチップコンデンサが
すべて実装されています。
★★★ パターン図のダウンロード
【プログラムの製作】
この信号発生器のプログラムは、MPLAB C32コンパイラのC言語ライブラリと
周辺ライブラリを使いました。
スイッチの処理をそれぞれ独立の割り込み処理としましたので、簡単な構成と
なっています。
液晶表示器の制御は独立ライブラリとして別ファイルとして作成しました。
下記からプロジェクトファイル一式がダウンロードできます。
★★★ プログラムのダウンロード(プロジェクト一式)
【動作結果】
以上で製作した信号発生器の実力を、出力信号を観測して確認してみました。
信号の出力範囲は下記のようになりました。
・周波数範囲
分解能250の場合:5Hz 〜 32kHz
分解能100の場合:12Hz 〜 80kHz
分解能 20の場合:61Hz 〜 400kHz
・出力レベル
全周波数範囲で 約3.1VP-P
実際の信号の例で、最高分解能の場合の最高周波数である32kHzの
正弦波の信号と、これのFFT解析グラフが下記となります。
信号は十分きれいな正弦波でFFTでも高調波が50dB以下のレベルと
なっていますから結構純粋な正弦波となっていることがわかります。