MT9T031カメラ
概要
このページでは、Spartan-6ボードの応用例として、Aptina(旧Micron)社製のCMOSイメージセンサ「MT9T031」を使ったUSB-CMOSカメラを作る方法を紹介します。
CMOSイメージセンサとはカメラ素子の一種です。CCDカメラとくらべて消費電力が少なく、取り扱いが容易で、デジタル制御なのでFPGAやマイコンとの相性が良いという特徴があります。
MT9T031は、QXGA(2048×1536)画素サイズのCMOSイメージセンサで、非常に高画質です。このイメージセンサを基板上に乗せ電源回路などを配線した評価用モジュール「MT9T031C12STCH ES」が入手できましたので、これを利用してUSB-CMOSカメラを作ってみました。
準備するもの
必要な材料は下記のとおりです。
・特電Spartan-6評価ボード TKDN-SP6-ES (または-16や-45でも可)
・MT9T031を搭載した評価ボード(Aptina社製 評価モジュール(MT9T031C12STCH)
・万能基板(秋月 Bタイプ 95mm×72mm両面を削ったもの)
・1kΩくらいの抵抗
・ピンヘッダ・ピンソケット、配線材など
・ネジ、スペーサなど
※ MT9T031C12STCHはDigikeyで購入できます。
MT9T031C12STCHについて
MT9T031の素子(イメージャ)はBGAタイプのパッケージで、容易に半田付けすることはできません。
MT9T031C12STCHは、イメージャを基板に半田付けし、レンズを取り付けたモジュールです。
このモジュールにはカメラの電源回路やクロックなども乗っていて、2.54mmピッチのピンヘッダを通じてディジタルの信号をやりとりできるようになっています。
MT9T031C12STCHに実装されているピンヘッダにはJ1(ボックス付きのピンヘッダ)とJP1(むき出しのピンヘッダ)がありますが、必要な信号はすべてJ1から出ています。Aptinaのイメージャは、データバスが8bit〜16bitのものがあるようですが、MT9T031は10bitなので、J1のピンヘッダだけすべての信号が取りだせます。
なお、この評価モジュールを購入しても、マニュアルの類はほとんどありません。回路図さえないので、使い方は推測するしかありません。添付資料で役に立ったのはJ1のピン配置くらいでした。
ボード上のスイッチSW5はXMCLK側に切り替えてください。XMCLK側にするとFPGAボードから与えられたクロックで動作します。MCLK側(デフォルト)にすると基板上の水晶発振器のクロックを使うので、タイミングがずれてしまいます。
作り方
MT9T031C12STCHモジュールに接続する信号には、D9〜D0、MCLK、PIXCLK、SDA、SCL、HREF、VSYNCがあります。これらの信号を下の表に示すように、Spartan-6評価ボードのピンヘッダにつなぎます。
|
MT9T...の |
SP6ボードの |
機能 |
備考 |
| RESET | B(33) |
リセット信号 |
抵抗でプルアップ |
|
D9(MSB) |
B(27) |
データバス |
|
| D8 | B(25) |
データバス |
|
| D7 | B(23) |
データバス |
|
| D6 | B(21) |
データバス |
|
| D5 | B(19) |
データバス |
|
| D4 | B(17) |
データバス |
|
| D3 | B(15) |
データバス |
|
| D2 | B(13) |
データバス |
|
| D1 | B(31) |
データバス |
|
| D0(LSB) |
B(29) |
データバス |
|
| SDA | B(11) | カメラの内蔵レジスタ設定用 | |
| SCL | B(9) |
カメラの内蔵レジスタ設定用 |
|
| XMCLK | B(7) | FPGA→カメラへのクロック供給 | 48MHz |
| PIXCLK | B(5) | カメラ→FPGAへのクロック供給 | 使用していない |
| FRAME | B(3) | 垂直データ有効 | データの有効期間を表す |
| LINE | B(1) | 水平データ有効 | データの有効期間を表す |
| 5V | 5V | 電源 | |
| GND |
GND |
グラウンド |
つなぎ方は、下の図を参考にしてください。
図2 実体配線図 (クリックで拡大)
これらの配線は、万能基板上でラッピングワイヤを用いて行います。
|
基板裏面 (クリックで拡大) |
基板表面(クリックで拡大) |
|
横から見た図(クリックで拡大) |
|
コンフィギュレーションデータの書き込み
付属のSP6JTAG for Win ユーティリティで、コンフィギュレーションデータをSPI ROMに書き込みます。
TKDN-SP6-16の場合、約30秒で書き込みが完了するはずです。USBケーブルを抜き差しして、電源を再投入すると、新しいデザインで動き出します。
ソフトウェア
本アプリケーション専用のソフトウェアを用意しています。
このソフトウェアでは、画像のとりこみと、解像度の変更、RGBゲイン、露出の調整、および画像の保存が可能です。また、MT9T031の任意のレジスタに値を書き込む機能がありますので、思う存分カメラレジスタを操作していただけます。
以下の条件を満たすPCが必要です。
● Windows2000、Windows XP、Windows Vista(32bit)またはWindows 7(32bit)
※64bit版には対応しておりません。
● USB2.0 HighSpeedモードに対応したUSBポートを持つこと
カメラレジスタの操作について
MT9T031のカメラレジスタはI2C通信を用いて設定します。しかし、AptinaのWebサイトからダウンロードできるマニュアルには、その部分が削除されていて、知ることはできません。
I2Cレジスタの操作方法はMT9T031のマニュアルに記載されているらしいのですが、そのマニュアルはAptinaとNDAを締結しないと得ることができません。しかし、(少なくとも評価ボードを1台購入した程度では)NDAを締結してマニュアルをもらうのは、非常に困難と思われます。
そのため、類似のカメラの設定方法でだいたいの見当を付け、MT9T031の実機の動作を解析することで、I2Cレジスタの大まかな操作方法を掴みました。
MT9T031の操作で重要となった点をいくつか紹介します。
・デフォルトではQXGAモード(2048×1536)で動作する。
・スキップ読み出し(N画素ごとに読み出す)を利用することで、XGAモード(1024×768)を作る。
・水平・垂直の有効期間を短くすることで、UXGA(1600×1200)やHDTV(1280×720)、VGA(640×480)モードを作る。したがって、UXGA、HDTV、VGAモードではイメージャの全領域を取得できない。
・イメージャの有効画素全域を使用するには、QXGAモードかXGAモードにしなければならない。
・VGAモードにするには1280×960に設定したのち、2スキップモードで読み出せばよい。
・露光時間は0〜65535の範囲で設定できるが、0には設定しないほうがよい。この設定値は水平期間のライン数で表すものと思われる。水平期間は45μ秒ほどなので、設定値が1000の場合は露光時間は約45msとなる。
・露光時間が1フレームの期間より長い場合は、次のフレームに行かずに待たされる。つまり、露光時間を長く設定すると、フレームレートが落ちてしまう。
・AGC、AECの機能はない。そのため、キャプチャされた画像を見ながら手動(あるいはソフト)で、露出とゲインを調整しなければならない。
設計データ一式ダウンロード
FPGAの設計データ、および、アプリケーションソフトウェアは下記のボタンを押してダウンロードしてください。
本設計データは、TKDN-SP6-ESボード用に論理合成されていますが、UCFファイルをtkdn_sp6_1645.ucfに取り換えたり、部品名を変えて再度コンパイルすることで、TKDN-SP6-16や45のボードでも動作させることができます。
スクリーンショット
付属のレンズは、絞りを開放しきった状態から少しだけ絞ると、良い絵が撮れます。
もちろん、明るいところでは非常に綺麗な画像になります。
ゲイン・露出・露光時間をベストな値に調整するのは大変です。
|
深夜の居室 |
卓上蛍光灯の灯りで撮影 |
|
昼間の公園 |
卓上蛍光灯の灯りで撮影 |




















