TSL 1401使用方法と心得


-------------------------------------------------------------------------------------------------------------
この資料はネット上で勝手に検索できるので、回路の原理と露光時間の計算式を詳しく紹介しません.
ドライバのコードを重点的に紹介します.もっと興味があれば、この文章を読んでから回路の原理や他の大神のブログを見てもいいです.
予備知識:単片機対レベルの基本操作、ad変換
まず、モジュールは、任意の演算速度に基づいて十分なモノリシックマシン(さらには51)に基づいてもよいという問題について説明する.
参考資料:http://blog.csdn.net/u014545515/article/details/38363511
-------------------------------------------------------------------------------------------------------------
まずCCDモジュールを紹介します:このモジュールはいくつの重要なピンがあります
VCC:電源接続正極3.3 v-5 v
GND:接地
CLK:クロック信号線
SI:論理信号線
AO:アナログ信号出力
1.接法
一般的にVCCとGNDは単片機のインターフェースに直接接続されており、独立した電源で電力を供給する場合は、共地に注意しなければならない.AOはAD変換インタフェースに接続する.
2.使い方
使用方法は上図のとおりです
3.コード(ここではarduinoを使用) digitalWrite(CCD_SI,HIGH);//SI digitalWrite(CCD_CLK,HIGH);// digitalWrite(CCD_SI,LOW);//SI digitalWrite(CCD_CLK,LOW);// for(i=0;i<128;i++) { digitalWrite(CCD_CLK,HIGH); digitalWrite(CCD_CLK,LOW); }// delayMicroseconds(exp_time);// digitalWrite(CCD_SI,HIGH); digitalWrite(CCD_CLK,HIGH); digitalWrite(CCD_SI,LOW); piexl[0]=analogRead(A0);//AD, 0-1024 , 10bit 。 if(piexl[0]==255) piexl[i]=254; digitalWrite(CCD_CLK,LOW); for(i=1;i<128;i++) { digitalWrite(CCD_CLK,HIGH); piexl[i]=analogRead(A0); digitalWrite(CCD_CLK,LOW); } digitalWrite(CCD_CLK,HIGH); digitalWrite(CCD_CLK,LOW); AD、この関数の戻り値は0-1024なので、少なくとも10 bitのサイズでオーバーフローは発生しません.
if(piexl[0]==255) piexl[i]=254;
digitalWrite(CCD_CLK,LOW);
for(i=1;i<128;i++)
{
digitalWrite(CCD_CLK,HIGH);
piexl[i]=analogRead(A0);
digitalWrite(CCD_CLK,LOW);
}
digitalWrite(CCD_CLK,HIGH);
digitalWrite(CCD_CLK,LOW);
4.コード紹介
ccdを用いてデータをスキャンするたびに2回のタイミング操作を行い,データ出力は2回目である.
1回目のタイミング動作はポートのレベルを初期化するために用いられ、2回のレベル動作の中間は露光時間設定である.
出力結果は一般に8ビットビットの値に変換され、0-255の階調値に対応し、白は255、黒は0
5.よくある問題解決
データが出力されません:回線が間違っているかどうかを確認します.レベル操作が正しいかどうかを確認します.レベル操作が2回行われているかどうかを確認します.
6.データの表示
一般にシリアルポートを用いる上位機にデータを送信して表示する.
既存の上位機ソフトがあれば、シリアルプログラミングのapiを自分で理解して、自分で上位機を書くこともできます.