ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(AD変換器の取り付け)
天体写真用冷却CCDカメラの製作(AD変換器の取り付け)
AD変換器はマイコン内臓があるのだけれど、分解能が10bitしかない。0~5Vの範囲を0~1024(2の10乗)の数値に変換してくれるのだが、CCDからの信号を受けるのにはもうちょっと細かくしたい。そこでADコンバーターを外付けすることにする。といっても手に入ったのは12bitのもの。0~4096(2の12乗)に分解できる。もっと細かく分けたいけど、手に入らないので仕方がない。これを使うことにしよう。
使用するADコンバーターはマイクロチップ社のMPC3204というもの。これも秋月電子通商にて購入。使い方は同社のHPから入手できるデータシートに書いてある。
配線は下図のようにする。
VddとVrefには5V、AGNDとDGNDにはグランド(マイナス極)を繋ぐ。CH0にはCCDからの信号を繋ぐ。
CLK、CS~、DOUTは マイコン 楽天 の汎用入出力ポートに繋ぎます。 DINにも本来信号線を繋がないといけないのだけど、今回のように端子CH0しか使わないのであれば、GNDをつないでおけばOK。
で、AD変換を行うプログラムは以下のとおり。ただし、まだ動作確認してません。
/*admcp320x.c 2003/01/07 作成開始*/ /*ADC MCP320Xチップにアクセスして0chのAD変換を行い、結果を取得する関数*/ /* Port5-0 : シリアルdata入力端子 Port5-1 : クロック出力端子 Port5-2 : SC~(チップセレクト)出力端子 に繋ぐ。SC~はプルアップしておく */
#include <h8/reg3067.h> /*I/Oアクセス用インクルード*/
unsigned int admcp320x( void ); void admcp320xini( void );
unsigned int admcp320x( void ) { unsigned char tmp5, tmp0; int I; unsigned int data = 0; //端子初期出力値の設定 tmp5 = P5DR; tmp5 = (tmp5 | 0x04 ); //2bit目、CS~を1に設定 tmp5 = tmp5 & (~0x02); // 1bit目,clockを0に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ; //100ns tmp5 = (tmp5 | 0x02); // 1bit目,clockを1に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns tmp5 = tmp5 & (~0x02); // 1bit目,clockを0に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns tmp5 = (tmp5 | 0x02); // 1bit目,clockを1に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns tmp5 = tmp5 & (~0x02); // 1bit目,clockを0に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns
for( I=0; I<12 ; I++) { data = data *2; tmp5 = (tmp5 | 0x02); // 1bit目,clockを1に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns tmp5 = tmp5 & (~0x02); // 1bit目,clockを0に設定 P5DR = tmp5 ; asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; //250ns //data取得 tmp5 = P5DR; tmp0 = tmp5 & (~0xfe); //tmp0=1; data = data + tmp0; } return data; }/*admcp320x*/
void admcp320xini( void ) { unsigned char tmp5; //端子初期出力値の設定 tmp5 = P5DR; tmp5 = (tmp5 | 0x04 ); //3bit目、CS~を1に設定 tmp5 = tmp5 & (~0x02); // 1bit目を0に設定 P5DR = tmp5 ; //端子の入出力設定 tmp5 = P5DDR ; tmp5 = ( tmp5 | 0x06 ); // 1, 2bit目を1に設定(出力) tmp5 = tmp5 & (~0x01); // 0bit目を0に設定(入力) P5DDR = tmp5 ; //asm("nop") ; }/*admcp320xini*/ |
最終更新日: 2012-04-10 07:29:27
ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(AD変換器の取り付け)
ツイート