先日設計した回路で前提としたステッピングモータ・ドライバーのTB6600 を入手できたので、ステッピング・モーターとカメラをコントロールする回路を実装してRaspberry Piからテストをしてみました。
回路図中の黄色破線で囲った部分です。
テスト・プログラムはCW方向にモーターを4回転させた後フォーカスを合わせてシャッターを切る、次にCCW方向にモーターを4回転させた後フォーカスを合わせてシャッターを切る、という動作を2回繰り返すものです。本コントロール・システムが対象としているカメラは、レリーズの半押しでオート・フォーカスが働き、全押しでシャッターが切れるものですが、レリーズの半押しはレリーズ・ケーブルのGndとRを短絡すること、全押しはレリーズ・ケーブルのGndとLを短絡することに対応しているので、その2段階の動作を2個のリレーによって実現するようにしています。
テスト・プトグラムは下のリストのようにPythonで記述しました。
import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) PUL=12; DIR=10; ENA=8 L_RELAY=36; R_RELAY=38 GPIO.setup(PUL,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(DIR,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(ENA,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(L_RELAY,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(R_RELAY,GPIO.OUT,initial=GPIO.LOW) DIR_SIG = 1; ENA_SIG = 1 pw = 0.00125 # pulse duration 2.5msec 400Hz num_rev = 4 ang = num_rev * 360 cnt = int(ang / (360/200)) # 360deg 200pulse GPIO.output(ENA,ENA_SIG) for i in range(0,num_rev): GPIO.output(DIR,DIR_SIG) for j in range(0, cnt): GPIO.output(PUL,0); time.sleep(pw) GPIO.output(PUL,1); time.sleep(pw) time.sleep(0.5); GPIO.output(R_RELAY,1) time.sleep(1.5); GPIO.output(L_RELAY,1) time.sleep(0.5); GPIO.output(R_RELAY,0); GPIO.output(L_RELAY,0) time.sleep(1) if(i % 2 == 0): DIR_SIG = 0 else: DIR_SIG = 1 GPIO.cleanup()
下のビデオはそのプログラムを実行した様子です。
www.youtube.com
問題なさそうです。
モーターの回転の速度、撮影のインターバルはパラメータで任意に設定できます。
撮影コントロール・システム ⇐ ⇒ 撮影コントロール・システム 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
アイキャッチ用画像