Lab. of Voynich Code
2023年オーストラリア・インドネシア    金環皆既日食のたくらみ
時刻制御式タイマー ③
設定
2023.03.11 Open

撮影スケジュールの立て方


 経常的な撮影はCmaxを挟んで
  • ±20×n秒に風景
  • ±120×m秒に太陽
 を撮影する。 撮影開始はコントローラのスイッチを入れるだけ。
 そのシーケンスは
  1. ND16フィルタをセット
  2. 風景を撮影
  3. D5+ND16フィルタをセット
  4. 太陽を撮影
  5. 4秒待つ
  6. ND16フィルタをセット
  7. 風景を撮影
  8. 12秒待つ
  9. 6.に戻るループを5かい繰り返す
  10. 1.に戻るループを延々、スイッチを切るまで続ける
 この間に時刻制御リモコンから信号が入ったら6.5秒毎の連写を信号が切れるまで行う。

 ここで上の図のような時刻設定は、
  • 1ショット5コマ撮影+カード書き込みに6.5秒、フィルタの動作+αに1.5秒かかる
  • Cmax+120秒の時に風景+太陽を写し始めたいので、6.5秒連写の終了はCmax120秒後とする。
  • その時対になるのはCmax-120秒の時。この撮影が終わったら連写を開始したい。よってタイミングはCmax-104秒~Cmax-100秒の間。1ショット6.5秒の倍数で220224秒の間にあるのは221=34ショット。
  • Cmax+120秒=11:31:56の221秒前は11:28:15、1秒ゆとりで11:28:14に連写を開始する。
  • この時、時刻制御タイマーは、1128時にアラームを鳴らして制御用PICを起動し、14秒遅延ののちフォトカプラを介してコントローラに信号を221秒間送る。

その前に必要だった事

 フィルターを駆動するサーボモータがハンチングを起こしやすいので、その対策にMG92Bという全部メタルギヤで高トルクのサーボモータ品を入手し、プラスチックギヤのSG92Rと換装しました。5時間超の駆動試験にもへこたれず、ハンチングを起こしませんでした…けれど怖いから本番前にはハンチングを起こさない様に予備のモータを持っておいて出発前に換装しておくのが良さそうです。
 あと、サーボモータをゆっくり回すと良い、という事なので、ファームウェアに手を入れ、静止させる前の動きを通常の1/6程度の速度にするようにしました。
 具体的には、60度周るのに0.1秒(=5回パルスを出す時間)という事なので、1ステップで回す角度=デューティ比を止めるまでの1シグナル分手前で1/4ずつ回すことして(速度1/4倍)、間に遅延時間を設けて更に遅くしました。完成したファームウェアは一番下のようになりました。

ファームウェア(遅延秒・ON時間部分決定版) Download

 1 
 2 /*
 3  * Title:  Clock Timer
 4  * 
 5  * File:   newmain.c
 6  * Author: M
 7  *
 8  * Created  on 2022/06/13
 9  * Complete on 2022/08/24
10  * Modified on 2023/02/23 
11  * Final complete on 2023/03/09
12  */
13 
14 #pragma config FOSC = HS       
15 #pragma config WDTE = OFF       
16 #pragma config PWRTE = ON       
17 #pragma config MCLRE = OFF      
18 #pragma config CP = OFF         
19 #pragma config CPD = OFF        
20 #pragma config BOREN = OFF       
21 #pragma config IESO = OFF        
22 #pragma config FCMEN = OFF       
23 
24 #include <xc.h>
25 #include <pic.h>
26 #include <stdlib.h>
27 #include <stdio.h>
28 
29 #define _XTAL_FREQ 4000000
30 
31 int i;
32 
33 void Buzzer(void){
34     //ブザーを切る:1sec
35         __delay_ms(100);
36     GPIO = 0b00000001;
37         __delay_ms(900);
38     GPIO = 0b00000000;
39     
40     //遅延時間:13sec
41     __delay_ms(13000);
42         
43     //スイッチOn・フォトカプラを通電
44     GPIO = 0b00000100;
45         __delay_ms(100);
46     GPIO = 0b00000110;
47     
48     //オンの継続時間、221秒に設定
49     __delay_ms(50000);
50     __delay_ms(50000);
51     __delay_ms(50000);
52     __delay_ms(50000);
53     __delay_ms(21000);
54     
55     //スイッチOff・フォトカプラを切る
56     GPIO = 0b00000000;
57         __delay_ms(500);
58     
59     return;
60 }
61 
62 int main(void) {
63     
64     OSCCON = 0b01101000;
65     TRISIO = 0b00101000;
66     ANSEL  = 0b00000000;
67     
68     GP0 = 0;
69     GP1 = 0;
70     GP2 = 0;
71     
72     while(1){
73         //ブザーを感知したらサブルーチンへ
74         if(GP3 == 0)
75         {
76             Buzzer(); 
77         }
78     }
79     return 0;
80 }


	
inserted by FC2 system