2009年05月24日

MCP4922を制御するSPIインターフェース関数

by 電子工作etc
(http://www8.plala.or.jp/InHisTime/index.html)


//**********************************************************************

#define CS GPIO.F0
#define SCK GPIO.F1
#define SDI GPIO.F2
#define LDAC GPIO.F4

//**********************************************************************

void mcp4922DataSet(char ch, unsigned int dt)
{
unsigned char cnt;
//
if (dt >= 4096)
return;
//
if (ch == 'A')
dt = 0b0111000000000000 | dt;
else
dt = 0b1111000000000000 | dt;
//
CS = 0;
for (cnt = 0; cnt < 16; cnt++) {
if (((dt << cnt) & 0b1000000000000000) != 0)
SDI = 1;
else
SDI = 0;
SCK = 1;
SCK = 0;
}
CS = 1;
LDAC = 0;
LDAC = 1;
}

//**********************************************************************

void mcp4922Init()
{
CS = 1;
SCK = 0;
SDI = 0;
LDAC = 1;
//
mcp4922DataSet('A', 0);
mcp4922DataSet('B', 0);
}

//**********************************************************************

void main()
{
unsigned int cnt, dat;
//
OSCCON = 0b01110000; // クロックは8Mhz
CMCON0 = 0b00000111; // コンパレータは使用しない。
ANSEL = 0b00000000; // A/D変換は使用しない。
TRISIO = 0b00101000;
OPTION_REG.F7 = 0; // PORTをプルアップ設定する。
WPU.F5 = 1;
//
dat = 0;
mcp4922Init();
//
if (GPIO.F3 == 1) {
while (1) { // 手動電圧設定機能(Up/Down)
if (GPIO.F3 == 0) { // up
if (dat < 4095)
dat++;
mcp4922DataSet('A', dat);
mcp4922DataSet('B', dat);
}
if (GPIO.F5 == 0) { // down
if (dat > 0)
dat--;
mcp4922DataSet('A', dat);
mcp4922DataSet('B', dat);
}
Delay_ms(100);
}
} else {
while (1) { // 自動電圧設定機能(のこぎり波)
for (cnt = 0; cnt < 4096; cnt++) {
mcp4922DataSet('A', cnt);
mcp4922DataSet('B', cnt);
Delay_ms(1);
}
}
}
}

//**********************************************************************
  
Posted by outta at 23:10Comments(0)TrackBack(0)この記事をクリップ!エレクトロニクス 

D/A変換 MCP4922 12ビット精度

■D/A変換(MCP4922/12ビット精度)
★概要
D/A変換は、モーターのフィードバックループ制御、電源の基準電圧、センサーの調整、バリキャップ(可変
容量ダイオード)制御電圧等いろいろな用途に使用出来ます。
今回は、D/A変換専用のICを利用して、基本的な動作の確認をしました。

★動作原理
D/A変換専用のIC「MCP4922」を廉価(秋月電子で250円)で購入しましたので、これをPIC12F683で制御
してみました。「MCP4922」は単一電圧で動作し、尚且つ、12ビット(4096段階)の精度のD/A変換を2チャ
ンネル内蔵しています。

D/A変換の基準電圧Vrefを、+5Vにすると、1.221mV(5V÷4096)の精度になります。
しかし今回は、手動(プッシュスイッチ)で1mV単位でUP/DOWNさせるために、+4.096Vとしました。

通常、電源電圧Vddを+5V、D/A変換の基準電圧Vrefを+4.096V(または更に半分の+2.048V)と
するのですが、今回は実験ということもあり、電源電圧も+4.096Vとしました。

尚、プログラムでは、UPスイッチを押したまま電源を入れると自動モードとなるようにし、0V〜+4.096V迄
の電圧出力を繰り返します。(のこぎり波)

<MCP4922の主な規格>
・電源電圧(VDD):単電源2.7〜5.5V
・出力電圧:0〜VDD
・消費電流:250μA Typ(MCP4922)
・I N L:±2LSB(Typ)
・DNL:±0.2LSB(Typ)
・セトリング・タイム:4.5μs(Typ)
・リファレンス:外部入力タイプ
・インターフェース:SPIインターフェース(20MHzクロック対応)
・出力バッファアンプ:×2 ゲイン又はユニティの選択可能
・Rail to Rail Output

パッケージタイプ

ブロックダイアグラム

書き込みコマンドレジスタ

書き込みコマンドシーケンス


★回路図
今回の回路は【図A】です。
PIC12F683を利用したD/A変換の実現可能な方式を参考までに掲載しました。【図B】【図C】


★ソースリスト
MCP4922を制御するSPIインターフェース関数を用意しました。
初期化用 : mcp4922Init()
データ設定用 : mcp4922DataSet()
ソースリストはここです。

★動作確認
ブレッドボード上に組み立て確認しました。
緑色のプッシュスイッチがDOWN用、黄色のプッシュスイッチがUP用です。

電源投入直後は0Vなので黄色のプッシュスイッチで100mVに設定します。
その後、黄色のプッシュスイッチを押す都度に、1mV単位で電圧がアップすることを確認しました。


如何ですか?
通常、手動で1mV単位で電圧を制御するのは中々難しいのですが、プッシュスイッチだけで可能となりました。
今後の実験用に1台用意しておくのも便利で宜しいのでは。。。  
Posted by outta at 22:19Comments(0)TrackBack(0)この記事をクリップ!エレクトロニクス 

2008年11月01日

グリーンハウス PicoDrive DUAL(GH-UFD4GD)を買いました2

f2f383cb.jpg
高速なことで価格.comでも人気の高いUSBメモリを買ってみました。

グリーンハウス USBフラッシュメモリ デュアルチャンネル超高速転送タイプ 4GB GH-UFD4GD

実行結果は以下の通り

自作デスクトップパソコン(Windows XP Home SP2)
CPU: Pentium 4 3.2GHz
RAM: 1GB
HDD: 型名不明250GB

USBメモリ: GH-UFD4GD
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive F:
Drive Size 100MB

  Disk  Read Write  RRead RWrite (KByte/s)
 14114 21000 10902  21069   3485

  Copy    2k   32k  256k    1MB (Operations/min)
  1086  2016   894   660    774

  Copy    2k   32k  256k    1MB (Kbyte/Sec)
  2836    45   326  1942   9032

HDD: 型名不明250GB
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive C:
Drive Size 100MB

  Disk  Read Write  RRead RWrite (KByte/s)
 30326 31498 51174  14000  24633

  Copy    2k   32k  256k    1MB (Operations/min)
  3562  4968  4122  2544   2616

  Copy    2k   32k  256k    1MB (Kbyte/Sec)
  9719   110  1472  7287  30009

以上の結果より、このUSBメモリで私のシステムドライブに勝る項目はランダムリードだけとなりました。
結構高かったんですが・・・残念であります。

ちなみに、このUSBメモリをノートパソコンでも試してみました

PC: NEC LL750/2
CPU: Pentium III 1GHz
RAM: 256MB(グラフィックに一部使用)
HDD: 型名不明40GB

USBメモリ: GH-UFD4GD (FAT32)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive F:\
Drive Size 100MB

  Disk  Read Write  RRead RWrite (KByte/s)
 14581 22821  9812  22465   3228

  Copy    2k   32k  256k    1MB (Operations/min)
  1116  1944  1248   546    726

  Copy    2k   32k  256k    1MB (Kbyte/Sec)
  2643    43   450  1608   8471


USBメモリ: GH-UFD4GD (NTFS)
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive F:\
Drive Size 100MB

  Disk  Read Write  RRead RWrite (KByte/s)
 15003 23125 10970  22975   2944

  Copy    2k   32k  256k    1MB (Operations/min)
  2425  4272  3216  1164   1050

  Copy    2k   32k  256k    1MB (Kbyte/Sec)
  4197    95  1150  3370  12173

 

HDD: 型名不明40GB
***** FDBENCH Ver 1.02 (C)2003-2007 ep82kazu *****
Drive C:\
Drive Size 100MB

  Disk  Read Write  RRead RWrite (KByte/s)
 13667 17414 23183   4673   9397

  Copy    2k   32k  256k    1MB (Operations/min)
  1884  2940  2640   804   1152

  Copy    2k   32k  256k    1MB (Kbyte/Sec)
  4172    65   945  2342  13338

  
Posted by outta at 00:00Comments(0)TrackBack(0)この記事をクリップ!エレクトロニクス 

2008年10月26日

安いUSB2.0カードリーダADR-MLTKNBK(サンワサプライ)を買いました3

SDHCメモリーカードをPCで読み書きするためにマルチリーダライタを買ったのでレビューします。
転送速度はともかく、SDHCカードを入れてからPCで認識されるまでに時間がかかりました。
ただ、認識されれば一般的な転送速度となります。価格相応と言えます。

この製品で優れている点を挙げると、
1. 対応しているメモリーカードが多いのです。(MD,CF,SM,MS DUO,MS PRO DUO,SD,SDHC,MMC,RS-MMC,mini AD,micro SD)
2. ドライブレターは1つしか使いません。他の製品の中にはE,F,G,Hドライブと4つも占有するものがあって、マイコンピュータ画面でどのドライブがどのカードに対応しているのかわからなくなってしまいますがこの製品はその心配がありません。
サンワサプライ USB2.0 マルチカードリーダライタ ADR-MLTKNBK
サンワサプライ USB2.0 マルチカードリーダライタ ADR-MLTKNBK

いろいろなカードを持っていて、かつ、安価なカードリーダをお探しの人にはお勧めしたい。
決してゴミではありません。私は今でも愛用しています。  
Posted by outta at 16:07Comments(0)TrackBack(0)この記事をクリップ!エレクトロニクス 

2008年10月25日

SONY NV-U3買いました!!レビューします5

ソニーが2008年10月23日に満を持してNV-U3を発売しました。
私はこれをAmazon.co.jpで予約して買いました!! 届いたのは発売より一日遅れですが(^^;
でも安かったから良しとします。

早速使ってみたのでレビューします。

SONY パーソナルナビゲーションシステム シルバー NV-U3

今までカーナビは携帯電話のアプリしか使ったことがなくて、この前明石海峡大橋(神戸市−淡路市)をたこフェリーで淡路島にドライブに行ったときにかなり迷ったんです。ハイウエイオアシスはどこだ?花さじきはどこだ?と。案内が始まる頃にはもうその交差点は通過してたことがしょっちゅうでした。内蔵アプリのサイズは多くて数メガバイト。あとは通信によって情報を取得している方式なんですよね。だから情報が遅れてしまう。

もう我慢が出来なくて、NV-U3を買っちゃいました。NV-Uシリーズで3代目ということらしいのですが、まず驚いたのはレスポンスの良さ。地図の検索は30km圏内だと10秒とかからりませんでした。これはPCでルート検索するのと変わりませんでした。
地図も綺麗です。さすがNV-U2では2GBだった容量から4GBにアップしただけのことはあります。詳細地図もバッチリです。まるで昭文社のスーパーマップルを見ているかのようです。
(※淡路島を見たら詳細地図があるのは北部だけでした。しかし淡路島に詳細地図は要りません。そんなに住宅やビルが密集していませんから^^;)

信号機の位置が(私が確認したところ)全て表示されます。信号機を避けて裏道を通りたい人にもぴったり!?

走るべき走行車線(進路)の案内や、行き先が限定されている車線の案内、事故多発地点の案内など、初めて走る場所に嬉しい機能もあります。

GPSで走行した区間のログもとってくれるので、走行した区間が一目でわかるようになって います。これはメモリースティックに記録されるので、まだ試していませんがパソコンでも見られるのではないでしょうか。

初回電源を入れたときはGPSの補足に数分かかりましたが、2回目以降はすぐです。電源を入れて5秒くらいで。

一万円を上乗せして買えるSANYOのゴリラ(Mini GORILLA NV-SB360DT)と比べて良い点は・・・画面が高精細。360DTは345,600画素なのに対し、U3は391,680画素です。また、画面が大 きい。360DTは4.5Vワイドなのに対し、U3は4.8Vワイドです。

そして、なんと言っても軽いのが良い!!
360DTは310gもあるんです。U3は250g。
重いと振動で揺れます。取り付け台(おそらくダッシュボードになるでしょう)も相当傷むのではないでしょうか。
私が一般大衆コンパクトカーのダッシュボードに取り付けた限りでは全く揺れませんでした。驚きました。粘着性のあるゲル状の吸盤(しかも真空状態にして取り付けられる)でしっかり固定してくれます。

サイズも、
360DT  幅約128×高さ85×奥行き26.2mm
U3    幅約150×高さ約87×奥行約20mm

この差は大きいです。ポータブルカーナビって盗難が多いそうで車から降りると持ち運びが必須となるわけですが、360DTくらいの大きさになると持ち運びがおっくうになると思います。

まだまだ、オマケではないしっかりとした機能が山ほどあってこのレビューには書ききれないのです。皆様にお伝えできないのが残念です。

(おそらく音楽/動画再生機能はオマケだと思います。ナビ専用機として五つ星。マルチメディア再生機としては360DTが一歩上を行くと思います。)

今までのカーナビでウンザリしていたアナタはこれを買ったらいいと思いますよ!
私にとっては信号機がちゃんと表示されることが購入の決め手となりました。
冒頭にも書きましたがAmazon.co.jpで買いました(もちろんAmazon.co.jp販売・発送で送料無料でしたよ。)


  
Posted by outta at 21:51Comments(0)TrackBack(0)この記事をクリップ!エレクトロニクス