Arduinoで動かすEFレンズ
*レンズの改造には、レンズやカメラの故障といったリスクを伴います。当ブログの記事を利用することによって生じるいかなる損害についても、当ブログは一切の責任を負いかねます。
概要
Arduinoを使ってCanonのEFレンズを動かしてみました。レンズの電子接点にArduinoを接続して、信号を送ることでフォーカスリングを回転させたり、絞りの開閉を行うことができます。
電子接点
EFレンズおいて、レンズとカメラを電気的に接続している電子接点は7点あります。このうち、2点がレンズのモータの電源、5点がレンズ内のデジタルロジックの電源と通信線です。
SPI通信
レンズとの通信にはSPI通信を使います。 レンズにコマンドを送信することでレンズを動作させることができます。コマンドは下の表のようになります。
Canon EF-S Protocol and Electronic Follow Focus | Pick and Place
器具
使用するレンズはCanonのEF50mm F1.8 IIです。 レンズにコマンドを送信するマイコンはArduino Uno R3です。
レンズの分解と電線の接続
レンズの電子接点とArduinoを接続しやすいように、レンズを少し改造します。
レンズ内の電子回路基板に手を加えれるように、電子接点がある側のネジを外して、フタをしている部品を外します。
次に、電線をレンズ内に入れるために、レンズの側面に穴を開けます。このとき、レンズ内の部品まで穴を開けないように注意します。
穴が開いたら、電線をレンズ内の電子回路基板にはんだ付けしていきます。リボンケーブルをめくると、基板とリボンケーブルがはんだ付けされている箇所があります。この箇所に電線をはんだで接続します。使用した電線は5本です。モータGND(P-GND)とロジックGND(D-GND)は電気的に繋がっているようなので1本にまとめています。また、レンズからカメラにデータを転送する信号線(DLC)は使わないので配線していません。
分解した部品を元に戻したら完成です。
Arduinoとの接続
EFレンズとArduinoを接続します。回路は下の図のようにしました。P-GNDとD-GNDはレンズ内部で接続しています。DLCはどこにも接続していません。レンズのモータには6Vの電源が必要なので、1.5Vの乾電池を4本使いました。
プログラム
ArduinoでEFレンズを動作させるためのプログラムを下に示します。このプログラムではレンズのフォーカスリングを回転させます。
結果
レンズのフォーカスリングを回転させることができました。
参考