Front Page

   NIKON用リモコンシャッターの製作        ('12,03,14 掲載)

NIKON製デジタル一眼レフカメラ用リモコンシャッターを製作した。
リモコンを使えば三脚に固定したカメラ本体から離れて撮影できる。

製作の目的は、一眼レフカメラと各種センサーを組み合わせた無人撮影システムを
構築する為のインターフェースとして赤外線信号を活用する為の練習です。
    
上の写真で左側はNIKON製MLーL3互換のコピー商品で、ロゴ以外はそっくりです。
右側が自作したリモコンです。格好良く纏まったと自画自賛している。


1. 回路
下の回路図のように単純です。
電源のスライドスイッチは無くても良いのですが、
元々のケースにスイッチが在ったのでそのまま使いました。
PICの1と8の間に0.47uFのパスコンを入れたのですが、書き忘れました。




2. ケース

パソコン関連のジャンク部品を売る店で入手した何だか判らない
電子機器を買いそのケースを利用した。
大きさも手頃で押しボタンのような物が付いている。
LR44を3個収納する電池ホルダーがあり好都合でした。

分解してみると押しボタンのような部分にスイッチは無く圧電ブザーが在りました。
何なのかさっぱり判りませんが、内部の基板を外しケースを利用しました。

下の写真は外観と内部に入っていた基板です。
ユニバーサル基板を同じ大きさに切り抜き回路を組みました。

 


3. パルスコード
Web上には多くの作例があります。それらではパルスの幅に若干の違いがあります。
もっとも信頼できそうなSB-Projectの データを使わせて頂きました。
全てのパルス幅は、キャリアーの周期の正数倍とうい処に合理性が在るからです。

 http://www.sbprojects.com/projects/nikon/index.php

下記のタイミングになるべくプログラムしました。これを2回繰り返して送信します。
         high         low            high          low        high        low        high
  +-----------+               +-----------+             +----------+            +---------+
   |               | 28000us |                | 1580us |              | 3580us |             |
--+ 2000us +------------+ 400us --+----------+ 400us +----------+ 400us +---


4. プログラムの要点
MPLABを使いCCSーCで書いた。難解な部分は無いが、キャリアを作るところを工夫した。

Web上のプログラムでは、大部分が38kHzのキャリアを作るのにNOP命令を繰り返して作っている。
NOP命令でマシンサイクルを数える方式ではCPUが占有され応用範囲が狭まる。
自分はPWM機能を使って作った。
下記の設定で38.462KHzの矩形波が得られる。
	setup_ccp1(CCP_PWM);	
setup_timer_2(T2_DIV_BY_1,0x19,1);
set_pwm1_duty(13); // 50% duty
しかしパルス幅はDelay命令で作っているので送信している間は、CPUが占有されてしまう。
この用途では問題ないが、例えばコマ取りタイマーへの応用を想定するとCPUの占有が障害になりそうなので
タイマー割り込みで時間を数えるべく改良すべきだ。


5. デバグと動作確認
パルスの形状と時間はオシロスコープを使って確認した。
下の図はオシロの表示をプリントした図です。

下の線は上の最後のパルスを拡大したもので、400uSです。
後部の三つのパルスは同じ幅です。
デジタルオシロでは量子化誤差により幅が違うように表示される為です。

動作の確認はNIKON D80とD7000で行いました。
カメラの正面で操作すると同じようでしたが、
背面から壁の反射で操作するとMLーL3互換品では動くのに
自作品では動きませんでした。赤外線が弱いようです。
しかし目的は達成しました。


6. 添付資料(ソースファイル)
参考用にソースファイルとHEXファイルを開示しました。
ファイルの開示にあたり当方は一切の責任を負いません。
予めご承知おき願います。

下記をクリックすればファイルをダウンロードできます。

 IR_Remocon.c
   IR_Remocon.hex