日食撮像システム 2019年 Ver.
PIC-1で行う制御とファームウェア
 このPICはD7200がC2の15秒の連写後に、USB-PICがTeraTermから信号"D"を受けてコロナの偏光撮像を開始します。
 偏光撮像は、
  1. 撮像開始信号を受けるまで待機、受けたら2.以下に進む
  2. 撮像(E-PL5のHDRモードで2EVステップ7コマ)
  3. フィルターを90度回転
  4. 9セット撮像したら自動停止
 という形で、前はゆっくり止めることも考えましたが減速停止は行わず、レリーズし続ける時間が短かったので、長くすることにしました。また、フィルターを回転後ブレが収まるのを待つ時間を1秒持つことにしました。
 駆動回路の回路図・部品配置図はこちらにあります。
     
 
  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     PORTBbits.RB0 = 1;
 31     PORTB = 0b11000000;
 32     
 33     while(1)
 34     {
 35         if(PORTBbits.RB0 == 0)
 36         {
 37             Captor();
 38         }
 39     }
 40 }
 41 
 42 void Captor(void) 
 43 {   
 44     int i, j;
 45 
 46     for(j=0; j<=18; j++)
 47     {
 48         PORTBbits.RB1 = 1;
 49             __delay_ms(50);
 50         PORTBbits.RB2 = 1;
 51             __delay_ms(2200);
 52         PORTBbits.RB2 = 0;
 53             __delay_ms(50);
 54         PORTBbits.RB1 = 0;
 55         
 56         for(i=1;i<=12;i++)
 57         {
 58             PORTB = 0b11000000;
 59                 __delay_ms(15);
 60             PORTB = 0b01100000;
 61                 __delay_ms(15);
 62             PORTB = 0b00110000;
 63                 __delay_ms(15);
 64             PORTB = 0b10010000;
 65                 __delay_ms(15);
 66         }
 67         PORTB = 0b1100000;
 68             __delay_ms(15);
 69         PORTB = 0b01100000;
 70         
 71             __delay_ms(1000);
 72 
 73         PORTBbits.RB1 = 1;
 74             __delay_ms(50);
 75         PORTBbits.RB2 = 1;
 76             __delay_ms(2200);
 77         PORTBbits.RB2 = 0;
 78             __delay_ms(50);
 79         PORTBbits.RB1 = 0;
 80             
 81         PORTB = 0b00110000;
 82             __delay_ms(15);
 83         PORTB = 0b10010000;
 84             __delay_ms(15);            
 85          for(i=1;i<=12;i++)
 86         {
 87             PORTB = 0b11000000;
 88                 __delay_ms(15);
 89             PORTB = 0b01100000;
 90                 __delay_ms(15);
 91             PORTB = 0b00110000;
 92                 __delay_ms(15);
 93             PORTB = 0b10010000;
 94                 __delay_ms(15);
 95         }
 96 
 97         __delay_ms(1000);
 98     }
 99     return;
100 }
 
inserted by FC2 system