Nikon D40用天体撮影インターバルタイマー作成


更新履歴


1 概要

Nikon D40用に自分の天体撮影スタイルにに特化した赤外線式 インターバルタイマーを作成しました。この文書はその製作時に 検討したことの記録です。

2 背景 〜デジタル一眼レフカメラのバルブ撮影とインターバルタイマー〜

カメラのバルブ撮影はカメラ側で露出時間を定めず、 シャッターボタンが押されている間シャッターを開く方法です。 光の弱い対象物を撮影する天体撮影は 数十秒〜数十分シャッターを開いている必要があります。 D40の場合露出時間の最大は30秒です。それ以上の露出時間の場合は バルブ撮影を行う必要があります。 ところが実際の撮影においてシャッターボタンを手で 押しっぱなしというのは現実的ではありません。 通常はレリーズを使用します。

電子化された最近のカメラでは電気接点式のレリーズが つけられるようになっているものがあります。 カメラ側をバルブ撮影に設定しておくと、 レリーズのスイッチがON状態の時シャッター開放、 OFFの時シャッター閉じとレリーズ側でシャッターボタンのかわりが 出来るようになります。レリーズではこのスイッチをロック出来るように なっており、撮影者がボタンを押しっぱなしにする必要がない構造に なってます。ただしスイッチ式のレリーズでは露出時間に関しては、 使用者の操作に委ねられています。単枚撮りならばあまり問題は ありませんが、連続撮影時は露出時間に不揃いが出てきます。 同じ対象を複数枚撮影し、後から画像処理をすることの多い最近の天体撮影では、 露出の不揃いはあまり好ましくはありません。

露出時間のコントロールインターバルタイマーを利用することが考えられます。 インターバルタイマーはレリーズの電気接点などに接続し、 一定時間間隔で自動的に写真をとったり、 長時間露出の露出時間を正確にコントロールするなど、 レリーズボタンのオンオフを内部時計を参照し設定に合わせ自動的に行うものです。 現地でキッチンタイマーや時計とにらめっこ……という手間が省け撮影対象に専念 できます。

よりお気楽な天体撮影のためには買いでしょう。インターバルタイマーは。

カメラに電気接点がついていればの話ですが……

3 Nikon D40でのバルブ撮影

Nikon D40
図1. Nikon デジタル一眼レフカメラ D40

天体撮影用に使っているD40です。 カメラボディが小型軽量で、小型望遠鏡との相性が良いのですが、 この時期の他のNikonエントリークラスのデジタル一眼と同様、 電気接点式のレリーズ端子はついていません。

長時間バルブ撮影時にシャッターボタン押しっぱなしと言うわけには いかないので、バルブ撮影で赤外線リモコンを利用出来るようになっています。

3.1 D40での赤外線リモコンを利用したバルブ撮影

ここで、D40の(他のNikon機も同じだとはおもいますが) 赤外線リモコンを利用した通常撮影と ターゲットとしているバルブ撮影の時の動作について書いておきます。

シャッタースピード指定や露出オートモードで 赤外線リモコンを使用したとき、 D40は次のような動きをします。

  1. リモコンボタンを1回押下すると、リモコンから赤外線信号が1回送出される。
  2. D40はグリップ部にある赤外線ディテクターで信号を受け取り、シャッターを開く。
  3. D40はシャッター時間待った後、シャッターを閉じる。

とまわりくどい書き方ですが、赤外線信号1回でカメラ側が シャッターを所定時間開き撮影を 終了させるという、ごく普通のリモコン操作撮影で期待される動きです。 *1

ところがバルブ撮影時はかカメラ側はシャッター時間指定がないため、 次のような動作になります。

  1. リモコンボタンを1回押下すると、リモコンから赤外線信号が1回送出される。
  2. D40はグリップ部にある赤外線ディテクターで信号を受け取り、シャッターを開く
  3. 再度リモコンボタンを1回押下する。
  4. D40は赤外線信号を受け取り、シャッターを閉じる。

バルブモードの時は、シャッターを開く時と、 シャッターを閉じるときそれぞれ赤外線信号を送る必要があります。 バルブの時間はリモコン側の1.と3.の間の時間で決まります。 リモコン側のボタンは通常のバルブシャッターと異なり、 シャッター開放中リモコンボタンを押下しっぱなし、 赤外線信号送りっぱなしというわけではなく、 シャッターを開くタイミングとシャッターを閉じるタイミング、それぞれ 押下し同じ赤外線の信号を送っていることになります。

3.2 D40用天体撮影用赤外線インターバルタイマーに必要な機能

D40の赤外線リモコンでのバルブ撮影時の動きがわかったので、 大雑把に考えると、以下の機能があれば天体撮影用インターバルタイマーとして働きそうです。

まぁ、この位の機能があれば、天体撮影用のインターバルタイマーとしては 充分かなと。露出時間や、撮影コマ間時間など細かい検討は 後ほどということで。

4 赤外線リモコンを解析

Nikon系赤外線リモコンについては、先に作られた方が その送出パターンを解析されてます。 一応そのデータを参考にしつつ、自分でも手持ちの赤外線リモコンを 計測してみました。このリモコンはNikon純正ではなく、 何社かのカメラに対応した汎用品です。 *2 赤外線リモコン信号は通常38kHzか40kHzの搬送波で変調がかかって いるので、とりあえずよく話に出てくる38kHz用の赤外線ディテクターを使い、 メモリーコーダーで測ります。グラフは38kHzの変調が取り除かれた状態のディテクターの出力です。

リモコン計測結果
図2. 手持ちリモコンの赤外線信号計測結果全体 横軸単位msec

リモコン計測結果
図3. 手持ちリモコンの赤外線信号計測結果ニコンパターン部 横軸単位msec

結果、手持ちのリモコンはNikonパターンを含め3種類の信号を送出していることが わかりました。Nikonパターンは図2の125msecより後ろの部分ですね。 ここだけ拡大して横軸の時間軸原点を変えたのが図3.です。

とりあえずここでは、図1から信号を読み取り、Nikonパターンを構成する信号の継続時間だけ 把握しておきます。

表1. Nikonパターン信号継続時間計測値(図1の読み値)

開始時刻(msec)シグナル継続時間(msec)38kHz波数端数調整値
136.12012.04277.05777
138.162028.4391073.1701073
166.60110.45016.98117
167.05101.64061.88762
168.69110.44916.94317
169.14003.681138.906139
172.82110.45016.98117

5 もうちょっと細かい設計

5.1 使用Chip選択

計測した信号を再現出来れば赤外線レリーズとして働くはずです。 色々手段はありますが、今回は最近使い始めたAtmel社のAVRを使う ことにしました。まぁ、細かい説明は省きますが、8bit CPUと プログラム用のflashROMとRAM、内部発信回路、その他I/Oもろもろが 1パッケージに入った非常に便利な製品です。 電源つなげば、付加回路なしで動いてしまいます。 今回の赤外線リモコンもこの手のチップが簡単に手に入り利用出来る からこそ自分で作ろうと思った訳ですが。

AVRにも品種がたくさんあってどれを選択すればよいか迷いますが、 手持ちの中からとりあえずATtiny45Vを選びます。

このチップは8pin DIPパッケージで最低限のpin数しかありません。 8ピンのうち電源が2ピン。さらにリセットピン1ピンは使えなくも ないですが、flashROM書き込みの都合から使わない方が良さそうです。 と言うわけで、使えるピンは5pinのみ。 このpin数で間に合うか検討してみます。

5.2 pin数の検討

ピン数を決める要素は以下の3つです。

LEDコントロールピンは選択の余地はありませんこの1pinは確定です。

次に外部発振器について。AVRは内部にRC発振回路を持っており、自己発振 で動作できます。ただ、RC発振回路です。その精度は非常に低く、温度依存の ところもあります。特定の条件という前提のもとに 発振周波数の精度の悪さを校正でカバー出来するということも考えられますが、 温度依存が大きいため、実使用環境においてどの程度使えるかが分かりません。

分からないならば試してみようということで、 簡単なプログラムを使ってテストしてみました。

RC発振回路がカタログスペックどおり8MHzで発振していることを前提として、 CPUに赤外線LEDとNikonパターンを発するプロトタイププログラムを入れ、 一応シャッターの切れる状態のものをブレッドボード上に作成します。 このプログラムが常温20℃でシャッターが切れることを確認出来たので、 作った回路ごと冷凍庫に入れ充分にさまします。程よく温度が下がったところで、 再度シャッターが切れるか確認します。……うまくシャッターは降りるようなので、 外部発振器はなしでいけそうです。 *3

というわけで、赤外線LEDコントロールを除いた4pinを露出時間設定に使用します。 最大16パターンですね。この位あれば充分かな。 露出時間の検討で確かめます。

5.3 露出時間の検討

16パターン利用出来る露出時間ですが、以下の10パターンとすることにしました。

43秒、1分、1分25秒、2分、2分50秒、4分、5分40秒、8分、11分20秒、16分。

このあたりの設定は使用者の好みです。露出時間は前後√2倍に近くなるように とっただけです。

D40のバルブの限界30分近くまで伸ばしてもよいのですが、 D40のCCDの素子単位の明暗の分解能 *4 と観測地の光害の状況をみると 16分でも長すぎる位かも。

撮影の間は5秒としました。5秒あればメモリー書き込みなどカメラの事後処理が 出来ます。ここで問題になるのは カメラのノイズ軽減機能 *5 です。単発で撮るならば使っても よいですが、連続撮影の場合、その時間がもったいないので、ダークフレーム を別途作成して、ufrawなどの現像ソフトの方で処理すること前提で、 ノイズ低減機能のダークフレーム撮影時間は考慮していません。

6 プログラム作成

Nikonパターンを発するプロトタイプを元に本番用プログラムを作成します。 まぁこの辺は適当です。 4kbyteもプログラムエリアがあるATtiny45Vでは余裕で入ります。 とりあえず、設計時に考えたことなど。

6.1 LED発光部

この部分はプロトタイプ部で先に作ってます。 8MHzの発振周波数をタイマー0を使って105分周します。おおよそ38kHzの 2倍の発振76.190kHzが得られます。この76kHzで毎回割り込みをかけ、 この信号の数を数えます。奇数の時赤外線が1、偶数の時0になるようにします。 さらに、図2.から得られたNikonパターンのオンとオフに 対応し1と0を生成させます。Nikonパターンの基準クロックも76.190kHzを 利用しています。 先の76kHzから作った38kHz1,0信号と Nikonパターンの1,0信号のandをとり、LED発光信号にしています。 信号はおおよそ36msecで送出完了します。

6.2 計時部

露出時間を決定する計時部の基準は8MHzのCPU用発振器ではなく ウォッチドックタイマーの128kHz信号から生成します。 128kHzをウォッチドッグタイマー用の前置分周器で 128k分周し、おおよそ1秒に1回ウォッチドッグタイマーの 割り込みがかかるようにしています。

AVRには省電力機能としてCPUが動いていないときCPUやほとんどの 周辺回路を停止する機能が備わっています。 この停止状態からの復帰にウォッチドッグタイマーの割り込み が利用できます。 *6 。 8MHz発信器を計時の基準に取らなかったのはこの省電力機能を利用したいからです。 1秒毎に秒のカウントアップと露出時間との比較を行い、必要が無ければ再度CPUを 停止し次の割り込みを待ちます。赤外線信号を送る必要がある時間がたったら、先のLED発光部を起動します。

ウォッチドッグタイマーを利用する前のプロトタイププログラムでは CPUが動いている状態では5V電源では実測7mA弱の電流が流れていましたが、 このウォッチドッグタイマーを利用したスリープモード時には実測7uA程度と 1/1000の電流しか流れていませんでした。 LEDの点灯に使われる電流も込みで瞬時15mA、常時7uAとなります。

7 ハードウェア設計

ここまでの検討を反映して、自分の使い勝手に合わせてCPU以外で 使う部品を決定します。赤外線LEDやCPU、パスコンなどCPUに近い部分に 関してはあまり迷わないのですが、この手の回路を作る時結構悩むのが、 ケースやスイッチ、ケースにあった電源など 人間系に近いところで決定される部分です。使い勝手に直結している割に 手に入る種類が少なかったりして、結局回路規模のわりに大きくなる ということもあります。

7.1 電源

CPUやLED点灯に用いる電源ですが、省電力モードの利用により使用時に ほとんど電流が流れません。ATtiny45Vの電圧範囲は1.8V〜5.5V。 ただし8MHz動作で安定的に動作させるためには2.4Vが必要なようです。 そこで選択したのがコイン型リチウム電池CR2032。電圧は公称3V。 -10℃条件で電池容量をかなり使った状態でも2.5Vは出ます。 電池容量220mAh、標準放電電流200uA、 パルス出力で15mAまで対応と充分なようです。

プロトタイププログラムの時には単4型NiMH電池1本と昇圧回路を 考えていましたが、省電力モードの利用により、コイン型リチウム電池 直結で間に合うようになりました。

7.2 時間設定用スイッチ

4pinを用い時間設定を行います。どんなスイッチを使っても良いですが、 使い勝手を考えてコード出力型のロータリースイッチを使用します。dipスイッチや 通常のスイッチでも構わないのですが、暗い中設定するのはこのほうが やりやすいでしょう。

7.3 ケース

電池が小さくなったので、コンパクトなケースに収まります。 今回利用したのはコレです。

フリスクケース
図4. フリスクケース

小さなサイズの電気回路のケースとしては、お約束みたいですね。 確かにこの位の規模の回路を入れるには手頃な 大きさです。今回はCR2032なので、電源込みでケースに収まります。

今回使用した部品と型番、調達時の価格は表2.の通りです。

表2. 使用部品と購入価格(税込)

品名メーカー型番・規格税込み価格
ATtiny45VAtmelATtiny45V-10SU231
赤外LED東芝TLN105B42
抵抗200Ω6
基板サンハヤトICB-86105
ロータリースイッチ日開FR01-KR10P-ST132
電池ホルダータカチBA2032168
スイッチSee-PlusSK-12D01-BG632
ダイアル2cmφ サーボホーン50
FRISKFRISKブラックミント210
合計976

8 校正

一通り使用する部品がと本番用のプログラムが 揃ったところで、再度ブレッドボードに組んで時間校正を します。

128kHzのウォッチドッグ用タイマーですが、こちらもRC発振回路のため、 精度はよくありません。この128kHz発振をベースにしている露出時間 の精度もあまり高くはないことになります。 温度特性によるずれは仕方ないとして、一応校正しておくことにします。 前回と違い今回は電源としてCR2032を電源として電気回路的にほぼ 本番と同等にしておきます。

校正はD40を動作させて行います。16分設定で行うのがもっとも精度高い ですが、時間がかかるのと温度特性のぶれを考え、2分50秒設定で行いました。

170秒設定で動作させた場合D40のexif情報では183秒でした。 したがって、実際の発振周波数は

WDT発振周波数@20℃ = 128 * 170 / 183 = 118.9 [kHz]

と119kHz程度のようです。同じ実験を回路を冷凍庫に入れ同じ計測をします。 exifの情報で181秒です。

WDT発振周波数@-5℃ = 128 * 170 / 181 = 120.2 [kHz]

-5℃で120kHz程度でした。

ATtiny45Vのデータシートを見ると常温で118kHz程度。温度特性は 下がるごとに周波数が少し上がっていくようになってます。 周波数が1kHz〜2kHz高いですが無校正のRC発振回路であることを考えると データシートから想定される実験結果といえます。

この結果からウォッチドッグタイマーの実際の割り込み時間間隔は、

1.0*128/120=1.076[秒]

と言うことになります。 これを見越して露出時間のテーブルの値を1.076で割っておきます。

再度計測下結果以下のようになりました。

170秒設定@20℃ = 171[秒]
170秒設定@-5℃ = 169[秒]

実使用はだいたいこの温度域です。その温度域で±1秒程度と お気軽撮影用としては充分すぎる精度 *7 が得られているといえるでしょう。

9 組み立て

事前準備が終わったところで組み立てに入ります。 以下の作業を行ってます。

FRISK用基板を買ったわけではないので、FRISKのケースサイズに 基板を加工します。大まかな部品配置を決め、パーツ穴にそって カッターナイフで溝をつけ切り出します。あとはひたすらヤスリで 削ります。

ロータリースイッチは軸が長かったので、ケースの高さに合うように短く カットします。適当な樹脂製の円盤を加工しダイアルにします。 今回使ったのはラジコンのサーボ用の直径2cmの円盤を使用しました。 電源スイッチは2mmピッチだったので適当に広げて2.54mmピッチにしています。 電池ボックスは高さと幅が少しおおきかったのでヤスリで加工しています。

大型の部品の配置を決め、FRISKケースの加工です。これも現物合わせ。 樹脂製なので加工は楽です。

あとは基板にはんだ付け。はんだ面ははんだ付け後ニッパやヤスリを使い 高さを少しへらしておきます。ATtiny45Vは直づけ。プログラム書き変えも無しと 言うこでISP端子も無しです。

1点だけ注意。スイッチは電源オフの時パスコンをショートするようにしておきます。極端に消費電力が小さいのでパスコンのにたまった電気で 動作しつづけるようです。本来はちゃんとしたリセット回路を作るべきなんですが、このあたりもAVRの機能に頼った設計になってます。

完成品外観
図5. 外観

完成品内部
図6. 内部

完成した天体撮影用インターバルタイマーの外観と内部です。外観はFRISK のケースにスイッチとダイアルがついただけ。ぱっと見FRISKケースその物。 内部は図.6のとおり。スッカスカです。基板を小さくしても良かったのですが、 逆に基板固定が面倒なのでギリギリいっぱいのサイズにしてあります。 ロータリースイッチの端子とATtiny45Vの端子のうち3本は相対しているので、 樹脂ダイヤルの下にATtiny45Vが半分隠れています。

10 テスト

実写テストはまだ行ってません。テスト出来次第、レポートします。


*1正確には受け取った後、即時シャッターを切らず、2秒待ち、10秒待ちのモードもありますが、1回の押下で撮影が終了することは変わりません
*2D40を天体撮影用に使っている以上、赤外線リモコンは必須です。露出時間のコントロールは使用者が行う必要がありますが……
*3非常に荒っぽい方法ですが、現地で動かなかったらまた考えるということで。
*4冷却CCD撮影法で使うCCDの場合、光害によるかぶり部分の足切りをしても残りの部分だけで階調表現が出来るだけの明暗分解能を持ってます。カメラ用一眼はそこまで分解能がないため、光害部分を切ると階調不足です。仕上がった写真が露出不足の画像を無理やり明るくしたような感じになります。明暗分解能の低いCCDで撮影する場合過度のかぶりは禁物です。
*5ノイズ低減機能はシャッターを閉じた光のない状態で撮影し、元の撮影した画像から光なしの画像を減算し暗ノイズを軽減する方法です。その特性上写真撮影後、元の画像と同じ露出時間待たされることになります。短時間露出の場合、撮影準備時間に埋もれて気にならないのですが、露出時間が長い連続撮影時には撮影時間の半分を無駄に待つことになります。
*6ウォッチドッグタイマーはその機能の性格上CPUと独立して動く必要があります。
*7実際には一枚の露出時間より、撮影後電気的に処理する前後のコマの露出時間が揃っている方が重要ですね。