引き続きD600の制御に使うタブレットPCから定刻にビープ音を出し、これを拾って開始コマンドとしてD7100のシーケンス制御を行うモノです。 2.でトランジスタ2SC1815をスイッチ動作させることにしましたが、これでは増幅率が全く不足しており、PICに入れたシーケンサがスタートしませんでした。これに対処するにはオペアンプを使うしかない、という事らしいので、関係のHPなどを探り、その使い方を知りました。で、100倍まで行ける(本当は1000倍までしたかったけど、部品が大きくなるため断念)回路を作って、作成した2.の回路に強引に載せてみると、動作不安定ながらWin Tabletの音出力でPICのシーケンサを駆動することが出来ました。その回路図が下の図になります。 現在は空中に配線を回したりするアクロバチックな配線ではちょっと怖いため、その下のように部品を配置した回路を作ることにしました。やはりトライ&エラーは必要なようで・・・ 他、PICのファームウェアも前回の設定では1/2secまで行ってしまったので、1/8secまで、2EV間隔で1/8000secまで撮像するようにするとともに、何らかの事情で速度が1/8000secまで行かなかったときのフェイルセーフを減速撮像して増速撮像した後に加えました。 さて、これで不安定さが消えて、うまく動いてくれるといいのですが・・・ |
|
回路図 | |
部品配置図と裏面の配線図 |
E:\shin\MPLABXProjects\D7100Sequencer_V1.X\Sequence.c |
1 /* 2 * File: D7100_Ctrl.c 3 * Author: M_shi 4 * 5 */ 6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <xc.h> 10 #define _XTAL_FREQ 1000000; 11 12 /*****Configuration********/ 13 #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF; 14 15 int i,j,k; 16 17 int main(void){ 18 19 ANSEL=0x00; //all digital 20 CMCON0=0x07; //Comperlator off 21 WPU=0x14; //set pull up bit on 22 nGPPU=0; //pull up activate 23 TRISIO0=0; //GP0 output 24 TRISIO1=0; //GP1 output 25 TRISIO2=0; //GP2 output 26 TRISIO3=1; //GP3 input 27 TRISIO4=0; //GP4 output 28 TRISIO5=0; //GP5 output 29 30 GP0 = 1; //Speed down 31 GP1 = 1; //Shutter 32 GP2 = 1; //Speed up 33 GP4 = 1; //Focus 34 GP3 = 1; //Start Swich 35 36 while(1){ 37 if(GP3 == 0){ 38 goto Start; 39 } 40 else 41 { 42 GP0 = 1; 43 GP1 = 1; 44 GP2 = 1; 45 GP4 = 1; 46 GP3 = 1; 47 } 48 } 49 Start: 50 //Diamond ring before C2 set SS=1/2000, CL=2 shot per sec. 51 _delay(25000); //wait 25ms 52 GP4 = 0; //Focus on 53 _delay(25000); //wait 25ms 54 GP1 = 0; //Shutter release 55 _delay(13000000); //wait 12sec 56 GP1 = 1; //Shutter off 57 _delay(25000); //wait 25ms 58 GP4 = 1; //Focus off 59 _delay(25000); //wait 25ms 60 61 GP2 = 0; //Preconfig 62 _delay(25000); //wait 25ms 63 for(j=1;j<=6;j++){ //Speed up from 1/2000 to 1/8000+alpha 64 GP0 = 0; 65 _delay(25000); 66 GP0 = 1; 67 _delay(25000); 68 } 69 GP2 = 1; 70 _delay(25000); 71 72 while(1){ 73 for(i=1; i<=6; i++){ //1/8000-1/30sec 74 Shutter(); // Shutter Release 75 _delay(480000); // wait 480ms 76 GP0 = 0; //Preconfig. 77 _delay(25000); //wait 250ms 78 for(j=1; j<=4; j++){ //Speed Down 2EV 79 GP2 = 0; 80 _delay(25000); 81 GP2 = 1; 82 _delay(25000); 83 } 84 GP0 = 1; 85 _delay(25000); //Speed down quit 86 } 87 88 Shutter(); 89 _delay(480000); //waite 480ms 90 for(i=1; i<=6; i++){ //SS up from 1/8 to 1/8000sec 91 GP2 = 0; //Preconfig 92 _delay(25000); 93 for(j=1; j<=4; j++){ //SS speed up 94 GP0 = 0; 95 _delay(25000); 96 GP0 = 1; 97 _delay(25000); 98 } 99 GP2 = 1; 100 _delay(25000); 101 Shutter(); 102 _delay(480000); //waite 480ms 103 } 104 //Simply shutter speed up 105 GP2 = 0; //Preconfig 106 _delay(15000); 107 for(j=1; j<=4; j++){ //SS speed up 2EV 108 GP0 = 0; 109 _delay(15000); 110 GP0 = 1; 111 _delay(15000); 112 } 113 GP2 = 1; 114 _delay(15000); 115 //Counter 116 k++ ; 117 if (k >= 12) 118 { 119 goto Multi ; //After shoot 24 set, goto Caputure C3 Diamond ring 120 } 121 } 122 Multi: 123 GP0 = 0; //Preconfig. 124 _delay(25000); //wait 25ms 125 for(j=1; j<=4; j++){ //Speed down to 1/2000 126 GP2 = 0; 127 _delay(25000); 128 GP2 = 1; 129 _delay(25000); 130 } 131 GP0 = 1; //Capture C3 Diamond ring 132 _delay(25000); //wait 25ms 133 GP4 = 0; //Focus on 134 _delay(25000); //wait 25ms 135 GP1 = 0; //Shutter release 136 _delay(13000000); //wait 15sec 137 GP1 = 1; //Shutter off 138 _delay(25000); //wait 25ms 139 GP4 = 1; //Focus off 140 _delay(25000); //wait 25ms 141 } 142 143 int Shutter(void){ 144 GP4 = 0; //Focus on 145 _delay(25000); //wait 25ms 146 GP1 = 0; //Shutter release 147 _delay(25000); //wait 25ms 148 GP1 = 1; //Shutter off 149 _delay(25000); //wait 25ms 150 GP4 = 1; //Focus off 151 _delay(25000); //wait 25ms 152 return 0; 153 } 154 155 156