Lab. of Voynich Code
2020年アルゼンチン皆既日食のたくらみ
偏光撮像装置の製作と実験ステッピングモーターの台形制御用ファーム製作&回路の製作 その3(仮完成版)
2019.09.16 Open / 2019.09.24 仮完成.

1.ステッピングモータとデジイチ制御用ファームウェア

 このファームウェアでは、PICの4ピン(GP3)が一回Onになると、4秒間シャッターを切り続け、ステッピングモータ(=偏光フィルターを付けたターレット)を1/4回転させ、また4秒間シャッターを切り続け…という動作を延々続けます。これで開発は終了になる筈、ですが、シャッターを切る続ける時間の最適化、デジイチ(オリンパス O-M10 mkII)のシャッターを切る動作を行うPICの6,7ピン(GP2,1)の動作順序を変える事が必要かもしれません。あと、デジイチのオートパワーオフ対策で何分かに1度シャッターの半押(フォーカスを合わせようとする動作)をするようにするルーチンが必要になるかもしれません。
Down Load

2.実際の回路と当初考えた部品配置図

 当初組もうと考えていた回路の部品配置図(右)と実際に組んだ回路(下:回路図に近い)。PICの4ピン(GP3)のタクトスイッチ(写真の暗い赤色のスイッチ・部品配置図のタクトスイッチと同じ)に、裏面でジャンプ配線を通して3ピン(GP4)にもタクトスイッチ(写真のオレンジのスイッチ)を加えました。暗い赤の方を押すと偏光撮像を行い、オレンジの方を押すとステッピングモータを1/4回転させます。
 ステッピングモータードライバで面倒な配線をしてしまいましたが、きっぱり一直線に組むのでした。そしてUSBコネクタを配線する段で試行錯誤すれば良かった…
 DC-DCの昇圧コンバーターを使い、モバイルバッテリからの5Vをもとに、出力を9Vに設定しています。この時、モバイルバッテリから1.2A程流れていました。
 
 1  /*
 2  * File:   main_ver3.c
 3  * Author: M_shi
 4  * 
 5  * Createdon 2019/08/24
 6  * LatestVersion 2019/09/24
 7  */
 8 
 9 #include <pic.h>
10 #include <xc.h>
11 #include <stdlib.h>
12 #include <stdio.h>
13 
14 #pragma config WDTE = OFF
15 #pragma config PWRTE = ON
16 #pragma config MCLRE = OFF
17 #pragma config CP = OFF
18 #pragma config CPD = OFF
19 #pragma config BOREN = OFF
20 #pragma config IESO = OFF
21 #pragma config FCMEN = OFF
22 #pragma config FOSC = INTOSCIO
23 #define _XTAL_FREQ 4000000
24 
25 void Capture(void);
26 void Rotation(void);
27 
28 void main(void) {
29     
30     TRISIO = 0b00001000;
31     ANSEL  = 0b01100000;
32     WPU    = 0b00001100;
33     CMCON0 = 0x07;
34     
35     GP0 = 0;
36     GP1 = 0;
37     while(1){
38         if(GP3 == 0){
39             while(1){
40                 Capture();
41                 Rotation();
42             }
43         } elseif(GP4 == 0){
44             Rotation();
45         }
46     }
47 }
48 void Rotation(void){
49      staticint i, j, k;
50 
51     for(i = 13; i>= 1; i-=1)
52     {
53         for(k = 1; k <= 2; k++)
54         {
55             GP2 = 1;
56             for(j=0; j<i; j++){
57                 __delay_us(750);
58             }
59             __delay_ms(5);
60             GP2 = 0;
61             for(j=0; j<i; j++){
62                 __delay_us(750);
63             }
64             __delay_ms(5);
65         }
66     }
67     
68     for(i = 12; i>= 1; i-=1)
69     {
70         for(k=1; k<=2;k++)
71         {
72             GP2 = 1;
73             for(j=0; j<13-i; j++){
74                 __delay_us(750);
75             }
76             __delay_ms(5);
77             GP2 = 0;
78             for(j=0; j<13-i; j++){
79                 __delay_us(750);
80             }
81             __delay_ms(5);
82         }
83     }    
84     return;
85 }
86 void Capture(void){
87     GP0 = 1;
88     __delay_ms(100);
89     GP1 = 1;
90     __delay_ms(4000);
91     GP1 = 0;
92     __delay_ms(100);
93     GP0 = 0;
94     __delay_ms(100);
95     return;
96 }

inserted by FC2 system