予算TimeLapseスライダーは自分でやる

画像



みなさんこんにちは。 カメラ用に2メートルの長さのシンプルで手頃なTimeLapseスライダーを製造した経験を共有したいと思います(私の場合、電話はカメラとして機能します)。



ベラルーシで開催されるモバイルシネマVelcom SmartFilm 2013のフェスティバルに参加したいという要望に関連して、制作の必要性が生じました。



など...スライダーは2つの主要な部分で構成されています:機械(ガイド、移動キャリッジと移動機構)と電気(モーターと制御システム)。 スライダーの最後の部分で多かれ少なかれ明確になった場合、LaunchPad MSP430バンドル+ L298Nドライバー+古いプリンターのバイポーラステッピングモーター。 すべてが「安くて陽気な」でなければならないので、その仕組みはかなり考えさせられました。 購入したガイド付きのオプションは、価格を調べた直後に消えました。 そして最後に、インターネットで長い間検索した後、幅60 mmのケーブルを敷設するためにプラスチックの箱を使用することに決めました。 キャリッジのスムーズな移動のために非常に耐久性があり滑らかであることが判明しましたが、柔軟性が高すぎるため、ボックスのスナップ式蓋は適切なサイズの接着ボードにねじで固定されていました(厚さ15mm、幅90mm、ボックスの長さよりわずかに長い)。 次に、ボックスを蓋にカチッとはめ込み、ガイドを取得します。 ボードの端には、三脚用の取り外し可能なスタンドを取り付けるための穴がありました。



画像



キャリッジモデルは、インターネット上で非常に広く使用されました。 複雑なことは何もありません:アルミニウムコーナー(最寄りのハードウェアストアで購入できます、より厚いものをお勧めします)、8つのベアリング(内径8 mmで見つかりました)およびいくつかのナット、ボルト、ワッシャー、および彫刻家。 カット、ドリル、組み立てます。 最も重要なことは、ベアリングを取り付けるための穴を正しくマークすることです。そうしないと、キャリッジがすべてのベアリングでボックスの表面に接触せず、わずかな遊びが現れます。



画像

キャリッジの上面図

画像

逆さまのキャリッジ



移動機構はもともと2メートルの長いピンとナットを使用する予定でしたが、ピンが非常にたるみ、長いスライダーを1.4メートルに減らしても使用できませんでした。 唯一の正しい決定は、タイミングベルトを使用することでしたが、手元になく、中国からの注文と待機は私には向いていませんでした(フェスティバルは時間切れになりました)。 どういうわけか、偶然、ベルトの代わりに糸を使用するというアイデアが生まれました。 最初のテストはすべての期待を超えました-それは非常にうまく機能しました。 これは次のように行われました:シャフトの高さでスライダーの片側に、固定ステッピングモーター。 ナイロン糸を結び、モーターシャフトの周りに1回転させ、スライダーの反対側で糸を引っ張って結びました。



電気部品に目を向けます。



制御システムは、1秒あたり1〜1024エンジンステップの速度を調整し、移動方向を変更できます。 控えめですが、これ以上は必要ありません。



制御システムの「頭脳」はLaunchPad MSP430(msp430g2553)です。 コードは非常にシンプルで、Energiaで記述されています。 コードは普遍的であり、Arduinoボード用に簡単にやり直すことができます。 バイポーラステッピングモーターでは1回転あたり400ステップが記述されていましたが、実際には200だけであることが判明しました。低速での作業の滑らかさを高めるために、ハーフステップモードでモーター制御を使用することにし、400ステップ/回転を取得しました。 戻る。



画像



MSP430のプログラムコード
/*      Time Lapse */ int m1=8; int m2=9; int m3=10; int m4=11; int key=5; int analog=A0; int time=0; int keyin=0; void setup() { pinMode(m1, OUTPUT); pinMode(m2, OUTPUT); pinMode(m3, OUTPUT); pinMode(m4, OUTPUT); pinMode(key, INPUT_PULLUP); } void loop() { keyin=digitalRead(key); if (keyin==HIGH) { time = analogRead(analog); // step 1 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 2 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 3 digitalWrite(m1,LOW); digitalWrite(m2,LOW); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 4 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 5 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,LOW); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 6 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); time = analogRead(analog); // step 7 digitalWrite(m1,LOW); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); time = analogRead(analog); // step 8 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); } else { time = analogRead(analog); // step 8 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); time = analogRead(analog); // step 7 digitalWrite(m1,LOW); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); time = analogRead(analog); // step 6 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,LOW); digitalWrite(m4,HIGH); delay (time+1); time = analogRead(analog); // step 5 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,LOW); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 4 digitalWrite(m1,LOW); digitalWrite(m2,HIGH); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 3 digitalWrite(m1,LOW); digitalWrite(m2,LOW); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 2 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,HIGH); digitalWrite(m4,LOW); delay (time+1); time = analogRead(analog); // step 1 digitalWrite(m1,HIGH); digitalWrite(m2,LOW); digitalWrite(m3,LOW); digitalWrite(m4,LOW); delay (time+1); } }
      
      









L298Nドライバー、方向セレクタースイッチ、可変抵抗器(速度コントローラー)、およびシステムのインクルードのインジケーターとなるLEDを介して、エンジンをコントローラーに接続します。

小さなプラスチック製の朝食用コンテナは、リモートコントロールケースの役割に最適でした。



画像



小型の3Vバッテリーがコントローラーの電源として選択され、標準の6V 4.5Ahバッテリーがエンジンの駆動に使用されました。 電源を供給するために、バッテリーとバッテリーの両方をドライバーとコントローラーにそれぞれ接続する、一対の接点を備えたトグルスイッチが提供されます。 測定では、8つのステップのうち4つでエンジンが0.45 Aを消費し、残りの4つのステップで8-0.9 Aを消費することがわかりました。これは、約0.7 Aであることがわかります。完全に充電されたバッテリーで約5〜6時間の操作が必要です(実際にはそうです)。



画像



スライダー自体のビュー。



画像



画像



職場でのビデオスライダー。







より明確にするため。 最初のテストのビデオをご覧ください。 ラップトップの黒いものは、約2 kgのバッテリーGP1245(12V 4.5 Ah)です。 ラップトップ自体の重量は約2.5 kgです。 合計で、4.5キログラムの負荷が問題なく移動します。







動作中に、次の欠点に気付きました。

1.スレッドは時間とともに伸びます(ただし、これは作業にほとんど影響しません)

2.シャフトの周りのループ内のスレッドの入力と出力が交差することがあり、これによりキャリッジがわずかにぴくぴくします。

3.時間の経過とともに接着されたボードがわずかに曲がります(私にとっては重要ではありません)



これは最初の記事なので、あまり判断しないでください。



そうそう...

これがフェスティバルのビデオです。このスライダーを使用して、私が撮影したものを見ることができます。

ご清聴ありがとうございました。






All Articles