Aerial Photo & Movie

RC空物で空撮なんかをやってみてます

SonyMulti端子付きカメラ ラジコン用シャッターユニットの製作

まずはこんな感じで回路を繋げて、、、

部品としては、

arduino Promini 5v16Mhz x1

フォトカプラ SHARP PC827 x1

抵抗200Ω×2

くらい?

f:id:zubon2003:20141201191227j:plain

 

で、arduinoで動かすプログラムはこんな感じです。簡単簡単♪

 

//各チャンネルのパルス幅上限下限
#define MaxPWM    2000
#define MinPWM    1000
#define Mid_Point 1500

//arduino ピン設定
#define Focus_Pin     4
#define Shutter_Pin   5
#define PPMin_Pin     2

//シャッター間隔
#define Interval 5000 //単位 us


int Shutter_Pos = 0; //0->idle   1->shutter on ready  2->shutter release ready
int Shutter_PWM = Mid_Point;
static uint32_t ShutterStart   = 0;
static uint32_t ShutterRelease = 0;
static uint32_t Now;

void setup() {
  pinMode(Focus_Pin, OUTPUT);
  pinMode(Shutter_Pin, OUTPUT);
  pinMode(PPMin_Pin, INPUT);

  digitalWrite(Focus_Pin, HIGH);
  digitalWrite(Shutter_Pin, HIGH);
}

void loop() {
  Now = millis();
  Get_PWM();
  Set_Status();
  if (Shutter_Pos = 1 and ShutterStart < Now) Shutter_On();
  if (Shutter_Pos = 2 and ShutterRelease < Now) Shutter_Release();
}

void Shutter_On(){
  digitalWrite(Focus_Pin, LOW);
  digitalWrite(Shutter_Pin, LOW);
  ShutterRelease = Now + 1000;//0.5sec後にシャッターリリース
  ShutterStart = Now + Interval;
  Shutter_Pos = 2;
}
void Shutter_Release(){
  digitalWrite(Focus_Pin, HIGH);
  digitalWrite(Shutter_Pin, HIGH);
  Shutter_Pos = 1;
}
void Get_PWM(){
  Shutter_PWM = constrain( pulseIn(PPMin_Pin, HIGH,25000), MinPWM, MaxPWM);
}

void Set_Status(){
    if ( Shutter_Pos != 0 and Shutter_PWM > 1300 and Shutter_PWM < 1700 ) {
      Shutter_Pos = 0;
      ShutterStart = 0;
      ShutterRelease = 0;
      digitalWrite(Focus_Pin, HIGH);
      digitalWrite(Shutter_Pin, HIGH);
    }
    if ( Shutter_Pos = 0 and (Shutter_PWM <= 1300 or Shutter_PWM >=1700) ) Shutter_On(); 
}