画像をクリックすると拡大表示されます。
拡大画像からはブラウザの「←戻る」ボタンで戻ってください。
私は温室で蘭を栽培していますが、蘭は栽培場所の明るさには結構、敏感です。
直射日光では傷んでしまうので、強めに遮光してあります。
試行錯誤で明るさを微調整して、調子の良い明るさを掴んでおく必要があります。
温室内は明るさが一様ではなく、場所により、かなり異なります。
これは、温室の構造によるもので、部分的に微調整するのは困難です。
また、植物の方も明るさの好みが品種により異なるので、適した場所に、適した植物を置くようにしています。
以上の理由で、栽培場所の明るさを計る照度計が必要になってきます。
以前、2CHの照度を記録する記録計を製作したことがありますが、少々大型で、取り扱いが簡便ではないので
単純なハンディータイプの照度計を製作しました。
まず、照度の計測範囲を決めます。
明るい方は、真夏の屋外の照度を測れる必要があります。
真夏の屋外の照度は10万Lux程度ですので、10bitのAD変換値を100倍してLux値とします。
あとは、校正の時、正しい値となるようにアンプのゲインを合わせれば良いだけです。
センサーとするフォトダイオードは広い範囲で照度と光電流が比例関係にあるので、1点で合わせれば良いので簡単です。
低照度側ですが、昼間の明るさが1000Lux以下では生育出来ないので、大体、この辺りが計れればよいのですが、
分解能100Luxでは、やや精度が不足の為、10倍のアンプを付け、分解能を10Luxにしています。
1万Luxを境界として、低照度レンジと高照度レンジに自動で切り換えます。
照度は絶えず微妙に変化するので、ホールド釦で表示をホールド出来るようにしました。
次に電源ですが、単三電池2本とします。
電源の入り切りは一つのプッシュ釦で行います。
電源を入れたままにすると2分間でオートパワーオフとなります。
ホールド釦を操作すると、その都度2分間延長されます。
電池電圧が2V(2本で)になると、電圧低下のサインを出します。
電池電圧が1.8Vになると電池交換のサインを出します。
センサーは手持ちにあったシャープのフォトダイオードBS520を使いました。
このダイオードは製造中止で、現在、入手出来ません。
秋月の照度計キットで使われているらしいのですが、現在も使われているか不明です。
条件が合えば何のフォトダイオードでも良いと思います。
条件とは
・ 波長に対する感度を人間の視覚に合わせたフィルターが付いている事
・ 広い照度範囲で光電流がリニアであること
・ 周囲温度の影響が少ないこと
です。
フィルターに関しては、私の用途では「植物の視覚に合わせたフィルター」が本当は必要なのかもしれませんが、
これは困難ですし、照度の定義そのものが人間の視覚基準ですので、深く考えないことにします。
ここで説明するフィルターは上記で説明したフォトダイオード内蔵の視覚補正フィルターではなく、
外部に付ける減光フィルターです。
全ての波長を均等に減光します。
BS520のデータは最大1000Luxまでしか記載されていません。
秋月の話では10倍の10000Luxまで直線性があるということですが、詳細は不明です。
いずれにせよ、実用性のある照度計を製作する為には減光フィルターは必須です。
最も簡単な方法は露出計の平面受光板を購入して取り付ける事です。
以前、ミノルタから購入した事がありますが、ミノルタは写真器材から撤退しています。
現在はケンコーで露出計のアクセサリーとして販売されているようですので、これを購入するのも手です。
ただし、定価2500円と少々値が張り、取り寄せとなります。
実は今回も近くのカメラ屋さんに注文しに行ったのですが、カメラ屋さんが無くなっていました。
今日では「街のカメラ屋では」生活出来ない様です。
別のカメラ屋さんを探して注文する事も考えましたが、面倒で日数も掛かるので、そのままホームセンターに行き
乳白アクリル板を購入してフィルターを自作する事にしました。
2mmの板を4枚重ねて、やっと平面受光板に近い減光となりました。
尚、アクリル樹脂は耐候性に関してはピカイチです。
回路図をクリックすると拡大表示されます。
拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。
CPUはPIC18F1320を使いました。
スペースの関係で、電源基板とCPU基板に分けています。
回路図で大きめの接続点は半田付けでリード線を引き出した個所です。
フォトダイオードは単独で別のケースに密閉してあります。
このようにしないと感度調整が面倒になります。
感度の調整範囲を非常に大きく取ってありますが、製作したフィルターの遮光率がどの位になるか不明だった為です。
電源は単三電池2本をHT7750Aで5Vに昇圧しています。
さらにOPアンプ用の負電圧をチャージポンプで作っています。
今回の回路では単電源のOPアンプは使えません。
単電源のOPアンプは0Vを入力出来るのですが、0Vを出力出来ません。
数ミリVの飽和電圧が存在します。
これを2段目のアンプで10倍に増幅すると数十mVの電圧となってしまいます。
HT7750Aは強烈なリップルノイズを発生します。
チャージポンプも大きなリップルノイズを発生します。
センサーの微弱な光電流を増幅するには、かなり支障があるので、厳重にリップルを除いています。
小容量の電解コンデンサをパラにしているのは基板の高さ制限の為です。
入力電流は20mA以内ですので、電池は長持ちすると思います。
フォトダイオードの小電流を増幅するには一般的にはバイアス電流の小さなCMOSのOPアンプを使います。
しかしながら、CMOSのOPアンプはオフセット電圧が大きいのでオフセット補正をしなければなりません。
今回はバイポーラの高精度OPアンプLT1112を使ってオフセット補正を省いています。
LT1112はバイポーラ構造にもかかわらず、入力バイアス電流が数十ピコアンペアであるので、今回の用途には
十分、使えます。
ただ、電源が汚いとオフセットが浮いたりして本来の性能が出ません。
尚、LT1112は±入力間にクランプダイオードが入っています。
この為、最大差動入力電圧の定格は有りませんが、代わりに最大作動入力電流の規定があります。
すなわち、クランプダイオードに流せる電流の最大値であり、10mAと、あまり大きな値ではありません。
性能と引き替えに強度が弱くなっていると言えます。
OPアンプは通常の動作では±入力は、ほぼ同電位ですので、クランプダイオードに電流が流れることはありません。
しかし、今回の回路では2段目が飽和する確率が高く、この場合、クランプダイオードに電流が流れます。
また、配線間違いや、調整中の事故で電流を流してしまう可能性もあるので多少は配慮します。
ゲイン切り換えは本来、初段のフィードバック抵抗を切り換えて行うのですが、リーク電流の影響が無視出来ないので
アナログスイッチが使えません。
手動スイッチで切り換えるのは配線が面倒だし、リードリレーはスペース、コスト、電力の面で難があります。
結局、2段目に10倍のアンプを付け、1段目、2段目の電圧を読み代えることによりゲイン切り替えを行いました。
ただし、この方法では初段のオフセット電圧が2段目で10倍されてしまいます。
結果的には、10倍されても1mV以下で、1LSB以下でした。
これは、高精度OPアンプの、お陰です。
AD変換の基準電圧は何Vでも構いません。
どのみち、可変抵抗で合わせ込みをする為です。
電圧は高いほど有利ですが、OPアンプの最大出力電圧よりは低くする必要があります。
ファームウエアのダウンロード (ZIP圧縮されています。)
開発環境はMPLAB Ver8.36/C18 Ver3.31(評価版です。)
いずれも、マイクロチップのサイトからダウンロードしたものです。
ソフトウエアは電圧をA/D変換して表示するだけですので、簡単です。
興味のある人はダウンロードしてください。
プロジェクトファイルは含んでいないので、手持ちのC18でプロジェクトを新規作成し、ソースファイルとヘッダファイルを
組み込み、コンパイルしてください。
adconv.c
A/D変換ルーチンです。
組み込み関数は使っていません。
計測は電池電圧、照度高、照度低の3CHです。
計測は8mSに1回、上記の順で行い、これを32回繰り返します。
照度はレンジにかかわらず、常に高、低、両方AD変換します。
8mS×3CH×32回=768mSで表示を更新しています。
変換値は32回の平均を取っています。
cnf1320.c
PIC18F1320のコンフィギュレーションが書かれています。
デホルトのままで良いところは記述しなくても良いのですが、あえて全項目、記入しています。
PICの場合、コンパイラやアセンブラの予約語は統一されているのですが、コンフィギュレーションのキーワードは
チップ毎に表現が異なるようです。
マイクロチップにチップ毎のコンフィギュレーションを記したPDFファイルがあるので、これのダウンロードは必須
です。
ファイル名はC18_Config_Settings_****.PDF(****はバージョン)です。
2011年2月現在、チップ別のコンフィギュレーションの詳細説明はMPLABの最新版 v8.63 の
ヘルプファイルに組み込まれています。
今まで、コンフィギュレーションを説明していたPDFファイルは廃止されました。
項目の個々の内容はデータシート等で確認します。
display.c
A/D変換結果から電池電圧、照度の表示データを作成し、表示します。
ホールドは表示の更新をパスするだけです。
電池電圧が2V(2本で)になると、表示器の15文字目の位置に「VL」と表示されます。
電池電圧が1.8Vになると表示が「VX」となります。
lcdlib4l.c
液晶表示のサブルーチンです。
ストローブパルス(E)は最小パルス幅の規定があります。
CPUクロックの周波数を高くすると、最小値を満足しない可能性があるので、NOPを二つ入れてあります。
それから、PICの特徴として、プログラムメモリとデータメモリのアドレス空間が異なります。
従って、文字列を表示するとき、文字列がROMにあるのかRAMにあるのか分けて考える必要があります。
ROM空間とRAM空間ではポインターに互換性がありません。
今回はROM用の関数とRAM用の関数を2つ作りました。
一旦、RAMにコピーするという方法もあると思います。
ピンアサインはヘッダファイルで記述しています。
今回、16文字1行のキャラクタディスプレーを初めて使用しましたが、今までのサブルーチンをそのまま使っています。
ただし、表示アドレスが8文字目と9文字目で連続していません。
例えば行頭から10文字の文字列を送っても、8文字しか表示されません。
9文字目は、再度、9文字目のアドレスをセットする必要があります。
アドレス指定は呼び出し側の問題ですので、サブルーチンとしては以前と同じです。
main.c
メインルーチンです。
電源釦をオンすることによりスタートします。
初期化、電源出力の自己保持をした後、メインループを回ります。
メインループでは照度の計測と表示を行います。
計測中に再度、電源釦を押すと電源が切れます。
又、通電開始から2分経過すると自動で電源が落ちます。
ホールド釦を押すと表示値を保持します。(トグル動作)
また、ホールドで2分の電源タイマーがクリアされ、通電時間が延長されます。(さらに2分間)
ホールド状態の時は11文字目の位置に”HLD”と表示されます。
timer.c
ソフトウエアタイマーのサービスルーチンです。
T1割り込みを1mS間隔で発生させタイムベースとしています。
設定時間は1mS単位で、最大1分程度です。
タイマー1個につきRAM4バイトを消費します。
メモリの許す限り、何個でも使用できます。(予め登録しておきます。)
タイマー起動関数に引数として、タイマー番号とタイマー時間を与えて開始させ、他の処理に飛ばします。
タイムアウトはポーリングでチェックします。
尚、CCP1割り込みはAD変換を自動的にスタートさせてしまうので都合が悪いです。
これはCCPが一つしかないチップに共通の問題です。
global.h
複数のファイルから参照される変数、関数、型の宣言を行っています。
校正には校正済みのの照度計が必要です。
私は、写真撮影に使う露出計(フラッシュメーター)を使用しました。
この露出計は定常光も計れるので、これを利用しました。
ただし、測定値はEX値で表示されるので、これを照度に変換しなければなりません。
Lux=2.5*2^EXの計算式で換算できます。
尚、露出計のASAは100にしておきます。
いちいち計算するのは面倒なので、予めエクセルで換算表を作っておきました。
校正済みの照度計を借用出来る場合は、数値をそのまま比較し、同じ値になるようVRを調整するだけです。
別の露出計が無い時は天候に合わせて、おおよその感度合わせをします。
真夏の雲一つない快晴の日の正午を10万ルックスとします。
真冬の雲一つない快晴の日の正午を5万ルックスとします。
尚、照度計は水平に置きます。
太陽に向ければ、もっと大きな値を示してしまいます。
私の使い方では、少しくらい感度がずれていても、相対的な比較が出来ます。
すなわち、屋外の照度を測定し、温室内が、屋外の何分の一になっているかを掴みます。
私の温室では明るい場所で1/4、暗い場所で1/16位です。
勿論、正確な照度が計測できるのに越したことはありません。
シャープBS520は照度計に使用出来る高精度のフォトダイオードです。
私は秋月の照度計キットに使われているのを見て存在を知りました。
それからインターネットで販売している会社を探し、何個か購入しておきました。
これは、かなり前のことで、現在はBS520が生産中止で入手出来ません。
私は当時購入した在庫品を使用したのですが、代替え品を探さなければ製作記事としてまずいと気にしていました。
ところが、この記事をアップしてから1年半以上経過した2012年7月に、秋月で浜松ホトニクスのS1787−04が
販売されているのを発見しました。
BS520と、ほぼ同特性ですのでゲインを合わせ込めば、そのまま使用出来るとおもいます。
単に照度計が動作するのを確認するだけなら、もっと安いフォトダイオードでも十分ですが、計測データを取りたいときは
照度計に使えると明記されたセンサーを使用した方が賢明です。
BS520にしてもS1787−04にしても
・ 可視光に合わせた帯域フィルタ(光学的)が取り付けられている。
・ 光電流のダイナミックレンジが広く、温度係数が小さい。
・ 側面や底面からの光線が入らないような構造になっている。
・ 取り付け面に平行(水平)に精度良く設置できる。
等の特徴があります。