写真1 AD9833 DDS MSOP 0.5ピッチ 変換基板に乗せる

 

それはさておき、

 

このチップは10ピンのMSOPで、写真にようにピンセットの先ほどの大きさです。

 

変換基板に取り付けましたが、ピンのピッチは0.5なので、半田付けにはちょっと技術が必要です。

 

まずチップをゲルタイプの瞬間接着剤で正確な位置に仮止めしておきます。

 

フラックスをほんのわずか塗って、すべてのピンにわざとまたがるくらい半田を盛ります。

 

半田吸い取り線で、余分な半田を吸い取って、出来上がり。

 

慣れれば簡単ですが、最初は数個パーにする覚悟がいります(笑)。

 

このDDSは、マスタクロック(MCLK)周波数は最高25MHzで、その場合最高発振周波数(ナイキスト周波数)は12.5MHzとなり、分解能は0.1Hzです。

 

今回は手持ち部品の関係で、20MHzのクリスタルを使用したので、10MHzまでのプログラマブルオシレータとして、実験してみました。この場合の分解能は約0.075Hzです。

mbed GPIB Controller

投稿日 2011/06/11

mbedでGPIBのコントローラを作ってみました。

 

ふつうはパソコンをコントローラにして、測定器等をトーカにし、計測を行えば必要十分なのですが、

 

パソコンの電源を一日中入れて走らせておくのは、最近のエコムードに反するということで、

 

mbedをコントローラにしてデータ収集をやろうという試みです。

mbed_nat7210_gpib.jpg

シールバッテリの電圧を計測中


 

GPIBのチップ NIのNAT7210とPICを使ってGPIBのリスナにする実験は、「NAT7210 GPIBチップをリスナで動かす」で取り上げています。

 

今回はmbedを使ってコントローラにしてみます。

 

「GP-IBインターフェースの使い方」 日刊工業新聞社 松野嘉夫著 を参考にしました。

 

この本ではTIのTMS9914を取り上げていますが、あいにくTMS9914の手持ちはありません。そこでNIのNAT7210を9914モードで動かすことにします。

 

目標は、コントローラからDMM(今回はHP3478Aを使用)の計測した電圧値等を読み込めればOKとしました。

 

シリアルポールやパラレルポール等はサポートしていません。

 

回路は以下のようになっています。

mbed_gpib_adapter.jpg

GPIBチップはNIのNAT7210、GPIBバスレシーバは75160と75162です。

 

mbedはStarBoard Orengeに載せ、LCDを使用します。

 

StarBoard OrengeにはLCDやSD Memoryが搭載されており、I/Oポート P5,6,7,8,24,26,27,28,29,30がすでに使用されています。このためそれら以外のI/Oポートを使用することになります。

 

NAT7210とつなぐために必要なポートは

 

○データライン D0 - D7 8本 双方向性のためBusInOutでp9,10,11,12,13,14,15,16を使用 p9がLSB

 

○レジスタアドレスライン RS0,1,2 3本 出力のみ BusOutでP21,22,23を使用 p21がLSB

 

○RD, WRの2本 出力のみ DigitalOutを使用

 

クロックはmbedから与えてもよいのですが、CPUと同期させる必要はないので10MHzのOSCを外付けしました。2MHz以上であれば何でもかまいません。

 

割り込み、DMAは使わないので、INT、DRQ、DACKはオープンとしました。

 

CS(チップセレクト)はGNDに落として、常にセレクト状態とします。

 

NAT7210は古いGPIBボードから取りました。ISAバスなどの古いボードは、集積度が低く、チップの組み合わせで組まれているので、部品どりに持ってこいです。

 

プログラムソースはmbedのホームページ GPIB controllerにあります。

 

メインルーチンの一部を以下に示します。
読み取ったデータを表示するだけの簡単なプログラムです。

 

#include <GPIB_9914.h>

 

  ・・・

 

GPIB_Init(my_address);
GPIB_IFC(); 
while(1){

GPIB_REMOTE(23); 
GPIB_OUTPUT("F1 R2", 23);

lcd.locate(0,0);
lcd.printf("Get Message1! " ); 
data_len = GPIB_ENTER(databuff, 23);

 

lcd.locate(0,1);
lcd.printf("%2d %s", data_len, databuff);

GPIB_LOCAL(23);
wait(1);

}//while

GPIBのハンドリングはGPIB_9914.hの中で行っています。

 

今回使用したコマンド等しかインプリメントしてませんが、コマンドコード等はすべて定義してあるので、必要な機能の追加は容易です。

 

上記のメインルーチンは、

 

最初にGPIB_IFCでIFCを発行してGPIBをクリアします。これでNAT7210はコントローラであることを認識します。

 

GPIB_REMOTEでHP3478A アドレス23をリモートにします。

 

GPIB_OUTPUTでコマンド"F1 R2"を送ります。これでファンクション1、レンジ2に設定します。DCV計測です。

 

GPIB_ENTERでHP3478Aからの計測データをdatabuffに読み取り、LCDに表示します。

 

1秒おきに繰り返します。

 

上にも書きましたが割込みやDMA、シリアルポール、パラレルポール等の処理は組み込んでいませんが、
簡単な計測アプリケーションならこれで十分かと思います。

 

このようにマイコンでひとたびGPIBのコントローラが実現すると手持ちのGPIB制御できる計測器は全てコントロール可能になるわけですから、自動化などの可能性がグンと広がります。





 

(JF1VRR)