I'm Back System 「Electro-Mechanical Trigger」電動式シャッター
【概要】
機械式シャッターでレリーズケーブル経由で操作するツールを作成しました
数年前(あれは2023夏の暑い頃)に「こんなことできますか」的なメッセージをもらって やっつけ仕事で検証したものです
そのため資料があまり残っていませんが 備忘録としてまとめました
ちなみに今も活躍してくれています
【調達】
シャッターを駆動できるストロークがある機器をいろいろ注文して試してみました
プッシュプル式の直動ソレノイド DC12V 25N も試しましたが大きく重いのですが力が弱く使えません
どこかのサイトでシャッター駆動にソレノイド使用したものがありましたが筐体は非常に大きく 音も大きいもので ショットガンのような音らしいです
ステッピングモーターを使用したものが候補になりました
採用したのは
Haydon Kerk LC1574W
DC5V-12Vミニステッピングモーター(マイクロプッシュロッドリフティングプッシュプル)
タイプ: 2相4線式ステッピングモーター
電圧範囲: DC 5V-12V




【検証】
Arduino を使ってブレッドボードで仮組しました
Nikon F4 のシャッターを操作することができました
単位時間当たりのステップ数を決めてモーターを動作確認します
試行錯誤して最終的な step/sec 値を決めましたが失念しています
step/sec 900
--
Linear Travel / Step (mm) 0.02
Step Angle (°) 18
Stroke (mm) 12.7
フルストロークに必要なStep 635
1stepの時間(msec) 1.1111
動作時間 (msec) 705.6
デューティ比% 50
--
ON (msec) 556
OFF (msec) 556
// A4988 stepping motor
const int DIR = 1;
const int STEP = 2;
const int FIRE = 3;
int buttonState = 0;
int motorState = 0;
void setup() {
pinMode(DIR, OUTPUT);
pinMode(STEP, OUTPUT);
pinMode(FIRE, INPUT_PULLUP);
digitalWrite(DIR, LOW);
digitalWrite(STEP, LOW);
}
void loop() {
buttonState = digitalRead(FIRE);
if (buttonState == LOW) {
if (motorState == 0) {
//
digitalWrite(DIR, HIGH);
for (int i=0; i<635; i++) {
digitalWrite(STEP, HIGH);
delayMicroseconds(556);
digitalWrite(STEP, LOW);
delayMicroseconds(556);
}
//
motorState = 1;
}
}
if (buttonState == HIGH) {
if (motorState == 1) {
//
digitalWrite(DIR, LOW);
for (int i=0; i<635; i++) {
digitalWrite(STEP, HIGH);
delayMicroseconds(556);
digitalWrite(STEP, LOW);
delayMicroseconds(556);
}
//
motorState = 0;
}
}
delay(100);
}【実装】
検証結果が良かったので実装することにしました
調達したパーツをユニバーサル基板にならべて 結線図をつくりました
パーツの配置を決定して結線しました
なるべくユニットを使用して実装が少なくしています

バッテリー SONY NP-F550 を使って ステッピングモーターに 12V を ATtiny 12a には 5V を供給しています

【完成】

【注意事項】
動作を保証するものではありません すべて自己責任で行ってください。
