【オシロスコープの概要】
最新のグラフィックの液晶表示器が入手できましたので、早速使ってみました。
PIC24Hのフルスピードでどの程度の信号まで扱えるかも試してみました。
グラフィック液晶表示器の制御には、前頁のライブラリを使っています。
基板上側にあるのが「SG12864A」液晶表示器
制御用PICはPIC24HJ12GP202という28ピンの
もので、40MIPSのフルスピードで動作させています。
基板左側はオシロスコープ入力用のアンプです。
中央にある青いロータリDIPスイッチにより
水平スキャン時間を切替できるようにしています。
【オシロスコープのの概要】
このオシロスコープの性能は、結果的に下記のようになりました。
PIC24HのA/Dコンバータは1.1Mspsの能力がありますが、仕様どおりの
性能が出ているようです。
項目 性能仕様 備考 水平スキャン 下記をスイッチで切替
2usec、5usec、10usec、20usec垂直入力 2チャネル
オペアンプにより増幅
最小入力 0.1V/Div
DC〜約300kHz
オフセット調整可能
トリガレベル調整可能今回は1チャネル
のみ使用電源 DC5V〜9V ACアダプタより供給 表示 グラフィック液晶表示
128ドット×64ドット
【試作例回路】
このオシロスコープの回路図は下記のようになっています。試作レベルなので
基板のままで使える構成としています。従って、各調整用の可変抵抗は基板に
直接実装しています。
左側が垂直入力用の2チャネルのアンプで、ゲインとオフセットの調整ができます。
その間に10進のロータリDIPスイッチがあり、これで水平スキャンの時間の切替
を行うようにします。また可変抵抗をAN2に接続し、これでトリガレベル調整とします。
右側はグラフィック液晶表示器で、ちょっとピン数がたくさん必要になりますが、
PIC側が順番にピンが並んでいますので、配置、接続は簡単です。
この液晶表示器にはマイナス電源用のDC/DCコンバータが内蔵されていますので
扱いやすいといえます。このマイナス電源を使ってコントラスト調整用の可変抵抗を
追加します。
(2009/3/8) 回路図の間違いが発覚
RESET回路およびICSPの電源がAVCCとなっているがVDDの間違い
ICD2/ICD3は問題なくプログラムできるが、PICkit2ではエラーになる
【ハードウェア製作】
基板はEagleで作成しましたが、無償版ですので、80×100mmまでしかできません。
そこで液晶表示器は外部にはみ出させるようにして、サンハヤトの10k感光基板内
に収めるように配置しました。
この基板のパターン図は下記PDFファイルでダウンロードし、そのまま印刷してお使い
下さい。
★★★ 基板パターン図
組み立て完了した基板外観は下図のようになります。
これで40MIPSで動作させても、PICは
ほんのり温かくなる程度でほとんど発熱
はありませんでした。
また、最高60MIPS程度までは動作します。
この場合でも発熱はほとんどありません。
はんだ面側は、PICの内蔵レギュレータ用の
10uFのチップ型のコンデンサと、3端子レギュ
レータのみ実装しています。
(2009/3/8)
RESETおよびICSPの電源供給をAVCCからVDD
に変更する必要があります。
【ソフトウェア製作】
このソフトウェアは、MPLAB C30で作りました。A/Dコンバータを2チャネル自動
スキャン方式で、バッファを8個の2分割でフルに使う方法で作成しています。
この2チャネルはAN0の入力とAN2の可変抵抗の2チャネルです。
4チャネル同時サンプリングとすればAN0とAN1の2チャネルオシロスコープになり
ますが、スキャン速度が1/4になってしまうので、今回は性能の確認ということで
1チャネルオシロとしています。
A/D変換トリガをタイマ3の一定間隔で行って自動的に8回分の変換を完了
してからA/D変換完了割り込みが入るようにしています。バッファは8個ずつの
ダブルバッファにしましたので8個分の変換時間を割り込み処理に当てることが
できます。これで最速のA/D変換ができるはずです。
例えば、タイマ3を2usec周期とすると、2usec×2チャネル×4回=16usec と
いう間隔で割り込みが入ります。この間にA/D変換は1回あたり約1.1usecで変換
できますから1.1usec×2チャネル×4回=9usec で変換がが完了しているはずです。
そしてこのA/D変換の割り込み処理は実測で約2usecかかっていますので、
合計11usecの時間を消費しますが16usec以下ですから十分間に合います。
実際に、1.5usecのインターバルまで追従できましたので一応性能はフルに出ている
ようです。。
★★★ オシロスコープのプログラム1式(プロジェクト含む)
【表示例】
実際に動作させたときの表示例は下記のような感じです。
10kHzと1kHzの正弦波ですが、そこそこの表示ができるようです。
とりあえず低周波の領域なら使えるでしょう。
10kHzの正弦波を2usec周期の
サンプリングしたもの。2チャネルの
サンプリングをするので、表示周期は
4usecとなる
1kHzの正弦波を10usec周期でサンプ
リングしたもの。