ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(温度計測)
天体写真用冷却CCDカメラの製作(温度計測)
CCDの温度を計測できるように、温度計を準備しましょう。準備するものは温度センサー、コンデンサー。温度センサーの出力はマイコン内臓のADコンバーターに繋いでデジタル化します。回路は下図。
温度センサーからの出力からは、温度に比例した電圧が出てきます。それを マイコン 楽天 内臓のAD変換に入れてデジタル化します。このマイコンのAD変換器は、0~5Vの電圧を0~1024の数字に直してくれます。
この数値から実際の温度を出すには、センサーの横に温度計を置いて温度計の数値とAD変換結果を同時に計測します。この作業を気温の異なる状態で何度か繰り返し、計測結果を使って1次元方程式を解く必要があります。
基板上にはこんなパターンを引きました。
AD変換器を使う関数
下はC言語で書いたAD変換器を使う関数です。AD入力端子に繋ぐものを変更すればいろいろなものを計ることができます。
#include <h8/reg3067.h>
char y_iniad(unsigned char wari, unsigned char mode, unsigned char state); unsigned int y_ad(unsigned char ch);
unsigned int y_ad(unsigned char ch) { unsigned int I; unsigned char tmp; unsigned int itmp; if(ch>7){return 1;}
tmp = ADCSR ; tmp = (tmp & (~0x17)); /*単一モード、チャンネルクリア*/ tmp = (tmp + ch); ADCSR = tmp; for(I=0;I<=10;I++){} /*tmp = ADCSR ;*/ tmp = (tmp | 0x20); /*ad変換スタート*/ ADCSR = tmp; do { tmp = ADCSR; tmp = tmp & 0x80; }while(tmp < 0x80); /*変換終了を待つ*/
tmp = ADCSR; tmp = tmp & (~0x80) ; ADCSR = tmp; /*ad終了フラグをクリア*/
switch(ch) { case 0: itmp = ADDRA; return itmp ; break ; case 1: itmp = ADDRB; return itmp ; break ; case 2: itmp = ADDRC; return itmp ; break ; case 3: itmp = ADDRD; return itmp ; break ; case 4: itmp = ADDRA; return itmp ; break ; case 5: itmp = ADDRB; return itmp ; break ; case 6: itmp = ADDRC; return itmp ; break ; case 7: itmp = ADDRD; return itmp ; break ; default: return 2; break; } }/*ad()*/
char y_iniad(unsigned char wari, unsigned char mode, unsigned char state) { unsigned char tmp; tmp = ADCSR ; if( wari >0){ tmp = tmp | 64 ; } /*ad終了割り込みの許可0不可:1許可*/ if( wari ==0){ tmp = tmp & (~64) ;}
if( mode >0){ tmp = tmp | 16 ; } /*0単一モード1スキャンモード*/ if( mode ==0){ tmp = tmp & (~16) ;}
if( state >0){ tmp = tmp | 8 ; } /*クロックセレクト0=266 1=134ステート*/ if( state ==0){ tmp = tmp & (~8) ;}
ADCSR =tmp;
return 0; } |
↑が「なに書いてあるのかさっぱり判らないけど、知りたい」という方は、C言語の勉強をしましょう。マイコンの中身がどうなっているのかも知らないといけません。
C言語の本はたくさん出ているので買ってくるか、図書館で借りましょう。
マイコンのハードウエアの取説は、日立のHPから入手できます。マイコンキットを買うと、付属のCDROMの中にも入っています。
y_iniad()はAD変換器の初期設定を行う関数です。引数は通常、(0,0,0)です。
y_ad()はAD変換を行って、結果を返す関数です。AD端子は8つあるので、何番目を計るかは引数で指定してあげます。
最終更新日: 2003-01-21 00:00:00
ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(温度計測)
ツイート