データシートによるとリニアイメージセンサ TCD1304 からの信号は図のように出力される。
光の強さは、GNDからプラス方向ではなく、電源電圧の値に近い OS から GND 方向への強度となる。IC 内部でフォトダイオードを逆バイアスで駆動しているせいだと思う。
ゼロ点に相当する OS の値は、3V 程度で光信号出力の大きさの最大値は800mV程度なので、A/D変換への入力は、2~3Vの範囲となる。
Nucleo の A/Dコンバーターは、0~3.3V を12Bit で変換する。信号を増幅して、かつ信号レベルを0~3.3Vになるようにすれば、A/D変換器をフルに使うことができ、ダイナミックレンジを上げることができる。
OP AMPを使って、図のように非反転入力側(+)に適当な電圧を加えることにより、レベルシフトして増幅することができる。
計算によれば、増幅度を3、オフセット電圧を1.5V程度にすれば、CCDセンサの出力を0~3Vくらいに設定できそうだ。
新たに基板を切削して、OP AMP増幅+レベルシフト回路を組み込んだものを製作した。CCDセンサーは裏側、銅箔側に実装するようにしてある。このときには、レベルシフト値を VR で調整できるようにしてある。
OP AMPは安価で高速な
をDIP変換基板で使用。エミッタフォロワーは使用せずダイレクトにCCDの出力を増幅して、Nucleo のA/Dコンバーターに入力する回路になっている。
以前に実験したのと同様に、CCDチップにテープを貼って遮光し、データ信号をオシロスコープで見てみる。
上側、CH1がCCDの出力、CH2が OP AMPの出力である。ほぼ希望どおりにレベルシフトされて増幅されている。
PC GUI ソフトでは、このように表示される。
Pixel 0 のあたりになにやら、ちょっと表示されるだけ。これは、表示ソフトが前述のOS のあたりを ゼロ点として反転して計算しなおして表示するためで、A/D変換出力を直接表示するモードにすると、このようにオシロスコープと同様な表示になる。
このソフトのデータ保存モードでも、A/D変換されたデータが保存されるようになっており、これを別のソフトで解析するようになっているので問題ない。
余談だが、データ SAVE ではまってしまった。測定値をストリングに変換して書き込むのだが、データ SAVE を実行しても、ヘッダーが記録されるだけで、データ本体が記録されない。いろいろと調査して、Windows と Linux でのキャラクタコードの違いのようで、ファイルをOPENする際に
open(filename, mode='w',encoding='UTF-8',newline="") as csvfile:
というように、UTF-8 を指定することにより解決した。
このソフトの Python のソースを変更して、FITSファイルで保存するようにしたほうがスペクトル処理の様々なソフトがしようできるので良いかと思う。