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 } |
|||||