すぐに完成すると思っていたマイコンプログラムにかなり時間を要しました。
なぜか、取得した時間を計算して表示する部分で原因不明のコンパイルエラーが出て、なかなか解決できずにいました。
プログラムしているメモリーを見ると、77%と表示されています。おそらくコンパイルに成功した際の値だと思うので、計算を一つ一つ外したり、入れたりして、プログラムメモリーの容量を確認すると、結構容量が変化していることが判明しました。
おそらくメモリーが足りていないのだという結論に至り、マイコンをPIC32MX210F016B-I/SPから、容量の大きいPIC32MX250F128B-I/SPに変更してコンパイルすると、何事もなかったかのように無事コンパイルが終了しました。プログラムメモリが19kBから一気に131kBまで増えたので、まだかなり余裕があります。
ということで、何とか動くようになりました。
いつも通り、Nikon F80で試します。センサーは上からA、B、Cと命名しました。
センサーユニットを輪ゴムで本体に固定しておきます。
1/500のシャッタースピードで各センサがとらえた値です。#のついた数字はセンサが反応した順番を示しています。つまりC、B、Aの順でセンサが反応しているので、シャッターは下から上に移動しています。
露光時間が1秒未満の場合は、次に分数の表示に切り替わります。Cのセンサの順番が1ではなく2と表示されています。プログラムで表示する変数を間違っているようですね。
1/500秒なのに、露光時間が長いですね。次に幕速度の表示になります。この結果は両端のセンサだけから計算していて、先幕の方がわずかに速度が速いという結果です。露光時間の結果を見ると中心のセンサが一番短いので幕速度が一定速度ではないかセンサへの光の当たり方のバラツキの可能性もあります。
プログラムをしていて気づいたのですが(遅い!)、センサーユニットの設計をした際に、できるだけフィルムサイズに近づけようとしたので、センサの位置が縦と横で距離が違っています。
3つしかセンサーが無いので、縦走りか、横走りかの判別ができません。速度計算が同じになるように正方形に配置しておくべきだったようですね。ということで、仕方が無いので、縦走りの計算の次に強制的に横走りの場合の計算結果も表示させることにしました。Nikon F80は縦に走るので、この値は無意味です。横の方が距離が遠いので、速度が速くなって表示されます。
1/1000秒も計測してみました。やはり0.4msec程度露光時間が長く表示されます。
幕速度は1/500秒の時とほぼ同じです。スリットの幅が変わっただけという結果です。
おそらく、センサが光をとらえる幅によるものだと思います。今回、センサーの穴はΦ2mmのドリルで穴を開けました。4399.04mm/secで2mmを通り過ぎるのにかかる時間は0.455msecなので、先幕で光が入り始めてから、後幕が穴を過ぎるまでのこの時間を差し引く必要がありそうです。
シャッタースピードを色々変えてデータを取ってみて、常に同じようなシフトがあるかを確認してみます。計算とだいたい一致するようであれば、幕速度から差し引く量を計算して、自動的に差し引いた値を出力するように変えようと思います。
完全な機械式のフォーカルプレーンのライツミノルタCLを試してみます。
1/60秒を計測してみます。理論的な露光時間は16.67msecです。
この幕速度だと、2mmの穴を通過するのに、約1msec程度かかります。露光時間の結果から引くと、16.007msec、16.921msec、16.606msecとなるので、理論的な16.67msecに近いように見えます。
ちなみに、レンズシャッターのカメラの場合、両端のセンサが反応しなことが多いので(光の入射角によるものだと思います)、真ん中のセンサーだけ反応して、両端が反応しない場合は、レンズシャッターモードとして表示を変えるようにしてみます。
レンズシャッターの場合、穴のサイズは関係なくなるので、計測結果が分かりやすいと思います。
あとは、プログラムだけなので、色々使いやすくしていこうと思います。最終的にはUSB接続をして、PCに結果をどんどん取り込めるようにしていく予定です。