D7200自動撮像装置のハード&ファームウェア
7.ストレステストの時に発覚した問題などを回避した回路図
 ストレステストとして6.の回路を連続30分ほど通電したとき、意図しないタイミングでいきなりシーケンサが動き出しました。色々調べてみると、オペアンプには直流成分が含まれており、これがどうやらダイオードを通って470μFのコンデンサが満杯になった時点でトランジスタに電流が流れ、勝手に動き出したようです。第一に470μFも平滑化に必要かどうか、或いは整流する必要もあるのか?と言う疑問がNさんから提示されていたり(交流のマイナス分はトランジスタに影響しない)したこともあり、
  1. オペアンプの出力にコンデンサで直流成分を止める
  2. その後にダイオードを入れると電圧が低下しすぎる、或いは電流が流れないようだから削除する
  3. 平滑用コンデンサはより少容量のトランジスタのいわばパスコンの役割或いはその平滑化に使えるか?という事で入れておく
  4. トランジスタの前の抵抗はプルダウンになるかと置いておく
ということにしました。
 30分以上電源を入れても取り敢えず勝手に起動せず、音信号を入れると動き出したのでこれはこれでOK?と考えました。
 音入力をスイッチにする回路が、ミニマムの回路である、という事もないかも、とも思いますが、取り敢えず使えそうなので、これはこれで行くか?と考えてみます。ストレステストは別のページで試そうと考え中です。部品配置図は載せていませんが、基本先の回路からコンデンサを入れ替えてダイオードを取り除いた物・・・です。
 この回路、当初上手く動かなかったのですが、実物の回路を見たらトランジスタ前のコンデンサと10kΩ抵抗に配線がされていませんでした完璧なミスです。

 ファームウェアはミラーアップ撮像を前提に、操作の待ち時間、特にシャッターを切った後に次のシャッター速度変更(そのための速度も微調整が要りました)の間の待合時間を延ばしました。通常の撮像の方で38セット撮れますが、ミラーアップ時には20セット撮像出来るだけです。まあ・・・あとの処理を考えるとこれでも多いくらいですが…
 ブレのテストは未だですが、改善していると良いな、と思っています。その辺は後々。

【21st. Feb. 2016追記】
 どうも動かしていると最初のうちは上手く動いたのですが、どうも確実性が無い。で、色々弄ってみて、これ以上は削らない方が良いだろうというところまでOPアンプとトランジスタの間の回路を簡略化しました。直流成分がOPアンプから出ていたはずなのに、測ってみるとなくなっていたり、OPアンプでは出ていた電圧が、抵抗のところで電圧が消えていたり、という事があり、なら削っちゃえ、という事にしました。また、オペアンプ1つで強引に高倍率の増幅をかけるよりは、どうせ2つあることだし、2個使った方が増幅率を高めたとき安定する、と言う情報を得て、OPアンプを1段目で10倍、2段目で~20倍としてみました。この回路で何度もテストしていますが、取り敢えず確実に動いてくれています。
↑回路図・・・↓こちらの方が安定して確実に動いてくれました up date at 21 Feb 2016
  
E:\Mshi_Lab\MPLABXProjects\D7200LvVersion.X\LvVersion.c
  1 /*
  2  * File:   LvVersion.c
  3  * Author: M_shi
  4  *
  5  * Created on 2016/01/20, 20:39
  6  */
  7 
  8     #include <stdio.h>
  9     #include <stdlib.h>
 10     #include <xc.h>
 11     #define _XTAL_FREQ 1000000;
 12 
 13     /*****Configuration********/
 14     #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF;
 15 
 16     int i,j,k;
 17 
 18     int main(void){
 19 
 20         ANSEL=0x00;     //all digital
 21         CMCON0=0x07;    //Comperlator off
 22         WPU=0x14;       //set pull up bit on
 23         nGPPU=0;        //pull up activate
 24         TRISIO0=0;  //GP0 output
 25         TRISIO1=0;  //GP1 output
 26         TRISIO2=0;  //GP2 output
 27         TRISIO3=1;  //GP3 input
 28         TRISIO4=0;  //GP4 output
 29         TRISIO5=0;  //GP5 output
 30 
 31             GP0 = 1;    //Speed down
 32             GP1 = 1;    //Shutter
 33             GP2 = 1;    //Speed up
 34             GP4 = 1;    //Focus
 35             GP3 = 1;    //Start Swich
 36             GP5 = 0;
 37 
 38     while(1){
 39         if(GP3 == 0){
 40             goto Start;
 41         }
 42         else
 43         {
 44             GP0 = 1;
 45             GP1 = 1;
 46             GP2 = 1;
 47             GP4 = 1;
 48             GP5 = 0;
 49             GP3 = 1;
 50         }
 51     }
 52         Start:
 53         //Indicator LED On
 54         GP5 = 1;
 55         //Diamond ring before C2 set SS=1/2000, CL=2 shot per sec.
 56                 _delay(25000);      //wait 25ms
 57             GP0 = 0;                //Focus on
 58                 _delay(25000);       //wait 25ms
 59             GP2 = 0;                //Shutter release
 60                 _delay(14000000);   //wait 14sec
 61             GP2 = 1;                //Shutter off
 62                 _delay(25000);      //wait 25ms
 63             GP0 = 1;                 //Focus off
 64                 _delay(25000);       //wait 25ms
 65 
 66         GP1 = 0;            //Preconfig
 67         _delay(25000);      //wait 25ms
 68         for(j=1;j<=6;j++){  //Speed up from 1/2000 to 1/8000+alpha
 69                 GP4 = 0;
 70                 _delay(25000);
 71                 GP4 = 1;
 72                 _delay(25000);
 73             }
 74         GP1 = 1;
 75         _delay(25000);
 76 
 77         while(1){
 78             for(i=1; i<=4; i++){        //1/8000-1/8sec
 79                 Shutter();              // Shutter Release
 80                     _delay(750000);     // wait 350ms
 81                 GP4 = 0;                //Preconfig.
 82                     _delay(40000);      //wait 250ms
 83                 for(j=1; j<=4; j++){    //Speed Down 2EV
 84                     GP1 = 0;
 85                     _delay(30000);
 86                     GP1 = 1;
 87                     _delay(40000);
 88                 }
 89                 GP4 = 1;
 90                     _delay(40000);      //Speed down quit
 91             }
 92 
 93                 Shutter();              // Shutter Release
 94                     _delay(800000);     // wait 350ms
 95                 GP4 = 0;                //Preconfig.
 96                     _delay(40000);      //wait 250ms
 97                 for(j=1; j<=4; j++){    //Speed Down 2EV
 98                     GP1 = 0;
 99                     _delay(30000);
100                     GP1 = 1;
101                     _delay(40000);
102                 }
103                 GP4 = 1;
104                     _delay(40000);      //Speed down quit
105 
106             for(i=1; i<=2; i++){
107                 Shutter();
108                     _delay(1100000);     //waite 350ms
109             }
110 
111                 GP1 = 0;                //Preconfig
112                     _delay(40000);
113                 for(j=1; j<=4; j++){    //SS speed up
114                     GP4 = 0;
115                     _delay(30000);
116                     GP4 = 1;
117                     _delay(40000);
118                 }
119                 GP1 = 1;
120                     _delay(40000);
121                 Shutter();
122                     _delay(800000);     //waite 250ms
123 
124             for(i=1; i<=4; i++){        //SS up from 1/8 to 1/8000sec
125                 GP1 = 0;                //Preconfig
126                     _delay(40000);
127                 for(j=1; j<=4; j++){    //SS speed up
128                     GP4 = 0;
129                     _delay(30000);
130                     GP4 = 1;
131                     _delay(40000);
132                 }
133                 GP1 = 1;
134                     _delay(40000);
135                 Shutter();
136                     _delay(750000);     //waite 250ms
137             }
138                 //Simply shutter speed up
139                 GP1 = 0;                //Preconfig
140                     _delay(15000);
141                 for(j=1; j<=2; j++){    //SS speed up 1EV
142                     GP4 = 0;
143                     _delay(15000);
144                     GP4 = 1;
145                     _delay(15000);
146                 }
147                 GP1 = 1;
148                     _delay(40000);
149                 //Counter
150                 k++ ;
151                 if (k >= 10 )
152                 {
153                     goto Multi ;    //After shoot 24 set, goto Caputure C3 Diamond ring
154                 }
155         }
156     Multi:
157     GP4 = 0;                    //Preconfig.
158         _delay(25000);          //wait 25ms
159     for(j=1; j<=4; j++){        //Speed down to 1/2000
160         GP1 = 0;
161         _delay(25000);
162         GP1 = 1;
163         _delay(25000);
164     }
165     GP4=1;
166         _delay(25000);
167     GP0 = 1;                    //Capture C3 Diamond ring
168         _delay(25000);          //wait 25ms
169         GP0 = 0;                //Focus on
170             _delay(25000);      //wait 25ms
171         GP2 = 0;                //Shutter release
172             _delay(16000000);   //wait 16sec
173         GP2 = 1;                //Shutter off
174             _delay(25000);      //wait 25ms
175         GP0 = 1;                //Focus off
176             _delay(25000);      //wait 25ms
177         GP5 = 0;                //Indicator LED off
178         GP3 = 1;
179     return 0;
180     }
181 
182 int Shutter(void){
183         GP0 = 0;            //Focus on
184             _delay(25000);     //wait 25ms
185         GP2 = 0;            //Shutter release
186             _delay(25000);     //wait 25ms
187         GP2 = 1;            //Shutter off
188             _delay(25000);     //wait 25ms
189         GP0 = 1;            //Focus off
190             _delay(25000);     //wait 25ms
191     return 0;
192 }
193 
194 
195 
196 
inserted by FC2 system