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

 

それはさておき、

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

mbed_ntp_clock.jpg

nptサーバ利用のデジタル時計

 

http://blogs.yahoo.co.jp/jf1vrr_station/19803647.htmlのデジタル時計はunix timestampをスタート時刻の設定に使っていましたが、ntpサーバから時刻を得れば、自動でスタート時刻の設定が可能になります。いずれにせよ時刻を合わせるときはインターネットに接続しなければなりませんが....

 

mbedは簡単にインターネットにつなぐことができるので、いくつかのサンプルを参考にすれば簡単にntpサーバから現在時刻を得て、それをmbed内部のRTCに設定することにより、デジタル時計を実現できます。

 

参考になるコードは、

 

http://mbed.org/users/TyPatrick/programs/Clock/lfwdci/docs/main_8cpp_source.html
これはアラーム付きの賢い時計ですが、ntpの使い方の参考になります。

mbed_ntp_clock_display.jpg

コンパイラ画面

 

#include "mbed.h"
#include "TextLCD.h"
#include "EthernetNetIf.h"
#include "NTPClient.h"

 

TextLCD lcd(p24, p26, p27, p28, p29, p30);
EthernetNetIf eth; 
NTPClient ntp;

 

int offset_JAPAN = 32400;

 

int main() {
/* Set up Ethernet */
lcd.cls();
lcd.printf("Setting up Eth\n" );
EthernetErr ethErr = eth.setup();
if (ethErr) {

lcd.cls();
lcd.printf("Error with Eth\nNum: %d", ethErr);
return -1;



/* Set up NTP */
lcd.printf("Setting up NTP\n" );
Host server(IpAddr(), 123, "ntp1.jst.mfeed.ad.jp" );
ntp.setTime(server);

lcd.cls(); 
while(1) {

time_t seconds = time(NULL)+offset_JAPAN;

lcd.locate(0,0);
char day[16];
strftime(day, 16, "%Y/%m/%d %a\n", localtime(&seconds));
lcd.printf("%s", day);

char time[16];
strftime(time, 16, "%H:%M:%S\n", localtime(&seconds));
lcd.locate(0,1);
lcd.printf("%s", time);

wait(1.0);

}
}

 

コンパイルの前に、EthernetNetIfとNTPClientをライブラリとしてインポートしておきます。

 

ntpサーバはmfeed "ntp1.jst.mfeed.ad.jp"を使ってみましたが、webで"ntpサーバ"を検索すればサーバの一覧が得られるので、身近なものを選びます。


 

http://mbed.org/users/jf1vrr/programs/ntp_clock/lpvsiw




 

(JF1VRR)