日食撮像システム 2019年 Ver.
PIC-1のファームウェア最終3型
PIC-1で行う制御とファームウェアの最終3型
 このPICはD7200がC2の15秒の連写後に、USB-PICがTeraTermから信号"D"を受けてコロナの偏光撮像を開始します。
 しかしその前にE-PL5は5分で自動パワーオフとなってしまいます。なので、C2の5分前に電源を入れるというアクロバット的なことを要求されます。なので、3分おきにシャッターボタンを半押しして焦点を合わせる信号を与えるようにしました

 偏光撮像は、
  1. 撮像開始信号を受けるまで待機、受けたら2.以下に進む
  2. 撮像(E-PL5のHDRモードで2EVステップ7コマ)
  3. フィルターを90度回転
  4. 9セット撮像したら自動停止
 という形で、前はゆっくり止めることも考えましたが減速停止は行わず、レリーズし続ける時間が短かったので、長くすることにしました。また、フィルターを回転後ブレが収まるのを待つ時間を1秒持つことにしました。

 E-PL5はスリープの設定は出来ますが、スリープしない事に出来ない(最長5分でスリープする)ので、3分毎にフォーカス信号を送信するファームウェアに変更しました。
 加えて回数が増えるとバッファがきつくなる現象を起こすので撮像後500ms待ち時間を入れました。
 駆動回路の回路図・部品配置図はこちらにあります。
     
 
  1 /*
  2   * PolarizationCapture
  3  * Author: M_shi_Lab
  4   * ForPIC-1+E-PL5
  5   * Startedat 2018/Apr/22
  6    * Tentativecompletionat 2018/May/26
  7     * Completionforeclipsat 2018/Sep/02
  8  */
  9 
 10 
 11 #include <xc.h>
 12 #include <stdlib.h>
 13 #include <stdio.h>
 14 #pragma config FOSC = HS
 15 #define _XTAL_FREQ 12000000
 16 #pragma config MCLRE = OFF
 17 #pragma config WDTE = OFF 
 18 #pragma config PWRTE = ON 
 19 #pragma config CP = OFF 
 20 #pragma config CPD = OFF
 21 
 22 void Captor(void);
 23 
 24 void main(void)
 25 {
 26     ANSEL = 0b00000000;
 27     TRISA = 0b10000000;
 28     TRISB = 0b00001001;
 29     
 30     int i;
 31     
 32     PORTBbits.RB0 = 1;
 33     PORTB = 0b11000000;
 34     
 35     while(1) //レリーズ信号待ち
 36     {
 37         PORTBbits.RB2 = 1; //ここでフォーカス信号を出す
 38             __delay_ms(30);
 39         PORTBbits.RB2 = 0;
 40         for(i=0; i<=18000; i++) //3分待つ間にレリーズ信号が入ると動き出す
 41         {
 42             __delay_ms(10);
 43             if(PORTBbits.RB0 == 0)
 44             {
 45                 Captor();
 46             }
 47         }
 48     }
 49 }
 50 
 51 void Captor(void) 
 52 {   
 53     int i, j;
 54 
 55     for(j=0; j<=18; j++)
 56     {
 57         PORTBbits.RB2 = 1;
 58             __delay_ms(50);
 59         PORTBbits.RB1 = 1;
 60             __delay_ms(2200);
 61         PORTBbits.RB1 = 0;
 62             __delay_ms(50);
 63         PORTBbits.RB2 = 0;
 64         __delay_ms(500);
 65         
 66         for(i=1;i<=12;i++)
 67         {
 68             PORTB = 0b11000000;
 69                 __delay_ms(15);
 70             PORTB = 0b01100000;
 71                 __delay_ms(15);
 72             PORTB = 0b00110000;
 73                 __delay_ms(15);
 74             PORTB = 0b10010000;
 75                 __delay_ms(15);
 76         }
 77         PORTB = 0b1100000;
 78             __delay_ms(15);
 79         PORTB = 0b01100000;
 80         
 81             __delay_ms(1000);
 82 
 83         PORTBbits.RB1 = 1;
 84             __delay_ms(50);
 85         PORTBbits.RB2 = 1;
 86             __delay_ms(2200);
 87         PORTBbits.RB2 = 0;
 88             __delay_ms(50);
 89         PORTBbits.RB1 = 0;
 90             __delay_ms(500);
 91             
 92         PORTB = 0b00110000;
 93             __delay_ms(15);
 94         PORTB = 0b10010000;
 95             __delay_ms(15);            
 96          for(i=1;i<=12;i++)
 97         {
 98             PORTB = 0b11000000;
 99                 __delay_ms(15);
100             PORTB = 0b01100000;
101                 __delay_ms(15);
102             PORTB = 0b00110000;
103                 __delay_ms(15);
104             PORTB = 0b10010000;
105                 __delay_ms(15);
106         }
107 
108         __delay_ms(1000);
109     }
110     return;
111 }
112 
inserted by FC2 system