CCDを動かそう!!!


CCDカメラの使い方については、皆さん良くご存知と思います。
でも、CCDカメラのハードウェアに関しては、いかがでしょうか?
ここでは、どのようにCCDカメラが動作しているのかを
簡単に紹介したいと思います。


CCDが光を蓄えられるようにする

CCDは、図のようなブロックで構成されています。ほとんど全てが画像の蓄積を行う部分(イメージエリア)で、そこに一つだけ画像を読み出すための増幅器を持っています。

CCDを光が蓄積できるようにするには、この画像を蓄積できる部分(イメージエリア)に電圧を印加します。
KAFシリーズの場合、sub,Guard,V1,V2の各端子に電圧を与えます。

露光する

さぁ、これで準備完了です....?

いえいえ、KAFシリーズは、フルフレームCCDですから、念の為、イメージエリアをクリアしなくてはいけません。
具体的には、垂直転送を連続して行いデータを高速にイメージエリアから追い出してしまいます。

さぁ、これで露光の準備が出来ました。シャッターを開いて露光を開始しましょう。

CCDからデータを読み出そう(1)

さぁ、露出が終わりました。画像データを読み出しましょう。
初めに、イメージエリアからのデータを転送する手順について説明しましょう。

CCDは、垂直転送と水平転送の2つの機構を持っています。この2つの機構を使って読出しアンプまでデータを転送します。
まず、1行だけ垂直転送します。すると、イメージエリアの一番下の行が水平転送レジスタに移動します。
次は、水平転送レジスタの中身を1つづつ読出しアンプに接続されているレジスタに転送します。
1つ転送しては、読出しアンプから読み出すと言うことを繰り返します。

あれ? これでは、「ビニングなし」でしか読み出せませんね。
ビニングしたデータは、どのように読み出すのでしょうか?

実は、非常に簡単です。2x2ビニングで説明しましょう。
垂直転送を2回行い、水平転送レジスタに2行分のデータを入れてしまいます。これで、垂直方向にはビニングされましたね。水平方向のビニングも同様です。水平転送を2回行った上で、読出しアンプからデータを読み出します。

CCDからデータを読み出そう(2)

これまでの説明で、1画素毎(あるいはビニングした状態で)のデータを読出しアンプに転送する手順がわかりました。
では、実際に読出しアンプからデータを取り出してみましょう。

まず、読出しアンプの電源を入れます。
なぜ、通常の露光時に電圧を印加しないかというと、アンプの発熱によってアンプに近い部分のイメージエリアだけ暗電流が多くなってしまうためです。
読出しアンプの電源は、データ転送の開始時に入れ、全ての画像データが読み出し終わった時点で電源を切ります。

CCDでは、出力レジスタの構成がちょっと変わっていて、「リセット」が必要です。
例えていうと、コップ(出力レジスタ)に入れた水(電荷)を捨てる操作です。
画像データを出力レジスタに転送する前(H2がHighのとき)に、Reset信号を加えて、コップの中身を捨ててしまいます。

しかし、このリセット処理が大きな問題で、リセット後の電圧に大きなバラツキがあります。
ですから、リセット処理後に同じ量の電荷を出力レジスタに転送したとしても、同じ電圧が出力されません(これをリセットノイズといいます)。
そこで、リセット直後の電圧(リセットレベル)を記録しておき、画像データを入れたとき(H2をLowにしたとき)の電圧から減算します。

ここまでのまとめ

CCDを駆動するのに必要な波形について、KAF0401Eを例にしておさらいしましょう。

デジタイズする

出力アンプから出ている電圧をタイミングを合わせてA/D変換しないと、デジタル化できませんね。
でも、KAFシリーズでは、CCDからの最大出力電圧は大体2.2V程度です。このままでは、A/Dコンバータの入力電圧範囲の一部しか使用しないため、高分解能なA/Dコンバータを使用しても無駄になってしまいます。
A/Dコンバータの入力レンジに信号レベルを合わせるために、プリアンプで信号を増幅します。

プリアンプは、適当なGBW、Slew Rateを持ったオペアンプを使用します。冷却CCDカメラは測定器のようなものですから、このアナログ部分はノイズに注意した設計が必要です。


A/Dコンバータは色々なメーカーから出ていますが、多くは、変換開始の指令を与えると、変換終了の合図と共にデジタイズされた値が出力に現れます。このデータをコンピュータで読込んでいけば良いだけです。

制御ソフト

以上の内容をプログラムすることが出来れば、CCDカメラとして動作させることができます。制御関係のプログラム開発をされたことがある方なら、それほど苦労することはないでしょう。
基本的には、これまで説明したタイミングを単純にプログラムすれば良いだけですから。

bit 信号
0 H1 水平駆動
1 H2
2 V1 垂直駆動
3 V2
4 R リセット
5 PWR アンプ電源(0/1 : OFF/ON)
6 CNV A/D変換開始パルス
7 SH シャッター開閉信号(0/1 : 閉/開)
簡単に説明しましょう。8ビットの出力ポート(プリンタポートのデータを出力する部分と考えていただいて結構です)があるとしましょう。信号は右の表のように割り振られています。
まず、電源を切り、シャッターを閉じます。
ポートに、"00000001"を出力します。これで準備完了です。
シャッターを開けるために、"10000001"を出力します。
これで、露出開始です。(簡単でしょ?)
露出が終わったら、シャッターを閉じて(00000001)、アンプの電源を入れます(00100001)。

さあ、画像を読み出しましょう。
垂直駆動に、00100101→00101001→00100101→00101001→00100001 を出力すれば1行分のデータが水平転送領域に移動します。
続いて、1画素づつのデータを読み出しましょう。
00110010→00100010 を出力して、リセットします。ここで、リセットレベルの電圧を測定します。
01100010→00100010 を出力し、A/Dコンバータの値を読込みます。
続いて、信号電荷を入れてA/D変換します。
00100001→01100001→00100001
読み取ったA/Dコンバータの値から先に測定したリセットレベルの値を引き算して、一画素のデータが得られました。
以上の操作を必要な回数だけ繰り返せば、1画面分の画像データが得られます。
最後に、アンプの電源を切って(00000001)終わりです。

さて、制御ソフトの中身は出来ましたが、実際に操作する部分のソフトを作らなくてはなりません。使うときに、どのような操作で、これまで説明したような動作を行わせるのか? ということです。
最近は、GUIが全盛ですから、とにかく「GUIにしておけばOK〜!」というようなソフトでは困ります。
アナロジーとして使うグラフやボタン等が適切でなくてはいけません。
使用者に必要な情報を的確に示し(当然不要なものは隠す)、使用者を正しい操作に自然に誘導していくようなソフトが必要です。実はこれが一番大変なんです。

ハードウェア

簡単に駆動回路についても説明しておきましょう
下のブロックダイアグラムは、TIのCCD TC237を駆動するものです。




基本的な構成は、どのようなCCDを使用した場合でもほとんど同じです。
一般的な電子回路と異なるのは、CCDの垂直/水平駆動の回路の部分です。この部分は大きな容量性負荷なので、それが駆動出来なくてはなりません。一般的には、高容量負荷が駆動できるドライバICを使用することが多いようです。

おわりに

以上で、カメラの基本的な動作についての説明は終わりです。

これから、皆さんが撮像されるときには、是非、カメラの中でどんなことが行われているのかを考えてみてください。


(注)本文中で使用した図は、KODAK社のアプリケーションノートやデータシートの図を用いました。